use fluent_test::prelude::*;
use std::cell::RefCell;
thread_local! {
static TEST_COUNTER: RefCell<u32> = RefCell::new(0);
}
fn increment_counter() {
TEST_COUNTER.with(|counter| {
*counter.borrow_mut() += 1;
});
}
fn get_counter() -> u32 {
return TEST_COUNTER.with(|counter| *counter.borrow());
}
fn setup_module_fixtures() {
println!("\nExample of using module-level fixtures:");
println!("In a real test, you would use:");
println!("#[with_fixtures_module]");
println!("mod my_test_module {{");
println!(" #[setup]");
println!(" fn setup() {{ /* setup code */ }}");
println!("");
println!(" #[tear_down]");
println!(" fn tear_down() {{ /* cleanup code */ }}");
println!("");
println!(" #[test]");
println!(" fn test_something() {{ /* fixtures automatically applied */ }}");
println!("}}\n");
}
fn run_fixture_setup() {
println!("Setting up test environment...");
TEST_COUNTER.with(|counter| {
*counter.borrow_mut() = 0;
});
}
fn run_fixture_teardown() {
println!("Cleaning up test environment...");
TEST_COUNTER.with(|counter| {
println!("Final counter value: {}", *counter.borrow());
});
}
fn run_simulated_test() {
run_fixture_setup();
println!("Running test...");
expect!(get_counter()).to_equal(0);
increment_counter();
expect!(get_counter()).to_equal(1);
run_fixture_teardown();
}
fn main() {
config().enhanced_output(true).apply();
setup_module_fixtures();
run_simulated_test();
println!("\nAll tests passed!");
}