From c147be04374534cf7062ea5e7062c4767ba0e2f7 Mon Sep 17 00:00:00 2001 From: Carl Lerche Date: Sat, 16 Nov 2019 23:35:17 -0800 Subject: make AtomicWaker private (#1782) --- tokio/src/sync/tests/atomic_waker.rs | 34 ++++++++++++++++++++++++++++++++++ tokio/src/sync/tests/mod.rs | 12 +++++++++++- 2 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 tokio/src/sync/tests/atomic_waker.rs (limited to 'tokio/src/sync/tests') diff --git a/tokio/src/sync/tests/atomic_waker.rs b/tokio/src/sync/tests/atomic_waker.rs new file mode 100644 index 00000000..c832d62e --- /dev/null +++ b/tokio/src/sync/tests/atomic_waker.rs @@ -0,0 +1,34 @@ +use crate::sync::AtomicWaker; +use tokio_test::task; + +use std::task::Waker; + +trait AssertSend: Send {} +trait AssertSync: Send {} + +impl AssertSend for AtomicWaker {} +impl AssertSync for AtomicWaker {} + +impl AssertSend for Waker {} +impl AssertSync for Waker {} + +#[test] +fn basic_usage() { + let mut waker = task::spawn(AtomicWaker::new()); + + waker.enter(|cx, waker| waker.register_by_ref(cx.waker())); + waker.wake(); + + assert!(waker.is_woken()); +} + +#[test] +fn wake_without_register() { + let mut waker = task::spawn(AtomicWaker::new()); + waker.wake(); + + // Registering should not result in a notification + waker.enter(|cx, waker| waker.register_by_ref(cx.waker())); + + assert!(!waker.is_woken()); +} diff --git a/tokio/src/sync/tests/mod.rs b/tokio/src/sync/tests/mod.rs index 8e627cb8..8da739f9 100644 --- a/tokio/src/sync/tests/mod.rs +++ b/tokio/src/sync/tests/mod.rs @@ -1,7 +1,17 @@ -#![cfg(loom)] +#[cfg(not(loom))] +mod atomic_waker; +#[cfg(loom)] mod loom_atomic_waker; + +#[cfg(loom)] mod loom_list; + +#[cfg(loom)] mod loom_mpsc; + +#[cfg(loom)] mod loom_oneshot; + +#[cfg(loom)] mod loom_semaphore; -- cgit v1.2.3