use egui_async::run_once;
#[test]
fn test_run_once_macro() {
let run_check = || {
run_once! {
let _ = 1 + 1;
}
};
let first = run_check();
assert!(first, "First execution should return true");
let second = run_check();
assert!(!second, "Second execution should return false");
}
#[test]
fn test_run_once_side_effects() {
use std::sync::atomic::{AtomicUsize, Ordering};
static COUNTER: AtomicUsize = AtomicUsize::new(0);
let increment = || {
run_once! {
COUNTER.fetch_add(1, Ordering::Relaxed);
}
};
let res1 = increment();
let res2 = increment();
let res3 = increment();
assert!(res1);
assert!(!res2);
assert!(!res3);
assert_eq!(COUNTER.load(Ordering::Relaxed), 1);
}