pub(crate) mod common_tests { use agnostic_async_executor::{AgnosticExecutorManager, test::*, time::Stopwatch}; pub fn common_test_spawn(manager: AgnosticExecutorManager, mut helper: TestHelper) { let exec = manager.get_executor(); manager.start(async move{ let res = exec.spawn(async { 1i32 }).await; check!(helper, res == 1); }); } pub fn common_test_spawn_blocking(manager: AgnosticExecutorManager, mut helper: TestHelper) { let exec = manager.get_executor(); manager.start(async move{ let res = exec.spawn_blocking(|| { 1i32 }).await; check!(helper, res == 1); }); } pub fn common_test_sleep(manager: AgnosticExecutorManager, mut helper: TestHelper) { let exec = manager.get_executor(); manager.start(async move{ let sw = Stopwatch::new_tolerant_millis(2); exec.sleep(std::time::Duration::from_millis(200)).await; check!(helper, sw.has_elapsed_millis(200)); }); } pub fn common_test_timeout(manager: AgnosticExecutorManager, mut helper: TestHelper) { let exec = manager.get_executor(); manager.start(async move{ let res = exec.timeout(std::time::Duration::from_millis(100), async { exec.sleep(std::time::Duration::from_millis(200)).await }).await; check!(helper, res.is_err()); }); } pub fn common_test_interval(manager: AgnosticExecutorManager, mut helper: TestHelper) { let exec = manager.get_executor(); manager.start(async move{ let sw = Stopwatch::new_tolerant_millis(2); let delay = 10; let mut interval = exec.interval(std::time::Duration::from_millis(delay)); for i in 1..100u64 { interval.next().await; check!(helper, sw.has_elapsed_millis(i*delay)); } }); } pub fn common_test_local(mut manager: AgnosticExecutorManager, mut helper: TestHelper) { let not_send_number = std::rc::Rc::new(1i32); let send_number = std::sync::Arc::new(2i32); let exec = manager.get_executor(); let local = manager.get_local_executor(); manager.start(async move { let res = local.spawn_local(async move { *not_send_number + 1 }).await; check!(helper, res == 2); let res = exec.spawn(async move { *send_number + 1 }).await; check!(helper, res == 3); }); } }