diff options
author | Carl Lerche <me@carllerche.com> | 2019-11-16 23:35:17 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-11-16 23:35:17 -0800 |
commit | c147be04374534cf7062ea5e7062c4767ba0e2f7 (patch) | |
tree | f22b66d2bf53bf88b8828a9e9f71f305168d0c73 /tokio/src/sync/tests | |
parent | b1d9e55487d8411da89788ce0fbb3eb99a1f3a40 (diff) |
make AtomicWaker private (#1782)
Diffstat (limited to 'tokio/src/sync/tests')
-rw-r--r-- | tokio/src/sync/tests/atomic_waker.rs | 34 | ||||
-rw-r--r-- | tokio/src/sync/tests/mod.rs | 12 |
2 files changed, 45 insertions, 1 deletions
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; |