use s_test_fixture::before_each;
#[cfg(test)]
#[before_each(function_to_run(22))]
mod tests_before_each {
use std::fs::{remove_file, File, OpenOptions};
use std::io::prelude::*;
#[test]
fn simple_test_before_each() {
something();
assert_eq!(
format!(
"{msg_fixture}\n{msg}\n",
msg = MSG,
msg_fixture = MSG_FIXTURE
),
read_and_delete_test_file(22)
);
}
#[test]
fn branch_test_before_each() {
something();
if 1 == 0 {
something();
()
} else if 1 == 2 {
something();
return ();
} else {
something();
assert_eq!(
format!(
"{msg_fixture}\n{msg}\n{msg}\n",
msg = MSG,
msg_fixture = MSG_FIXTURE
),
read_and_delete_test_file(22)
);
()
}
}
#[test]
fn test_returning_a_result_before_each() -> Result<(), ()> {
something();
something();
something();
something();
assert_eq!(
format!(
"{msg_fixture}\n{msg}\n{msg}\n{msg}\n{msg}\n",
msg = MSG,
msg_fixture = MSG_FIXTURE
),
read_and_delete_test_file(22)
);
Ok(())
}
fn something() {
let mut file = OpenOptions::new()
.write(true)
.append(true)
.open(format!("{}.txt", 22))
.unwrap();
writeln!(file, "{}", MSG).unwrap();
}
fn read_and_delete_test_file(n: i32) -> String {
let mut file = File::open(format!("{}.txt", n)).unwrap();
let mut contents = String::new();
file.read_to_string(&mut contents).unwrap();
remove_file(format!("{}.txt", n)).unwrap();
contents
}
fn function_to_run(n: i32) {
let mut file = File::create(format!("{}.txt", n)).unwrap();
let msg = format!("{}\n", MSG_FIXTURE);
file.write_all(msg.as_bytes()).unwrap();
}
const MSG: &'static str = "something was done";
const MSG_FIXTURE: &'static str = "before fixture";
}