use fluent_test::prelude::*;
use std::cell::RefCell;
thread_local! {
static TEST_COUNTER: RefCell<u32> = RefCell::new(0);
}
mod test1 {
use super::*;
#[setup]
fn setup() {
println!("Setting up test environment for test1...");
TEST_COUNTER.with(|counter| {
*counter.borrow_mut() = 0;
});
}
#[tear_down]
fn tear_down() {
println!("Cleaning up test environment for test1...");
TEST_COUNTER.with(|counter| {
println!("Final counter value: {}", *counter.borrow());
});
}
#[with_fixtures]
pub fn run_test() {
expect!(get_counter()).to_equal(0);
increment_counter();
expect!(get_counter()).to_equal(1);
increment_counter();
expect!(get_counter()).to_equal(2);
}
}
mod test2 {
use super::*;
#[setup]
fn setup() {
println!("Setting up test environment for test2...");
TEST_COUNTER.with(|counter| {
*counter.borrow_mut() = 0;
});
}
#[tear_down]
fn tear_down() {
println!("Cleaning up test environment for test2...");
TEST_COUNTER.with(|counter| {
println!("Final counter value: {}", *counter.borrow());
});
}
#[with_fixtures]
pub fn run_test() {
expect!(get_counter()).to_equal(0);
}
}
fn increment_counter() {
TEST_COUNTER.with(|counter| {
*counter.borrow_mut() += 1;
});
}
fn get_counter() -> u32 {
let value = TEST_COUNTER.with(|counter| *counter.borrow());
return value;
}
fn main() {
config().enhanced_output(true).apply();
println!("Running first test with fixtures:");
test1::run_test();
println!("\nRunning second test with fixtures:");
test2::run_test();
println!("\nBoth tests passed!");
}