summaryrefslogtreecommitdiffstats
path: root/tokio/src/sync/tests
diff options
context:
space:
mode:
authorCarl Lerche <me@carllerche.com>2019-11-16 23:35:17 -0800
committerGitHub <noreply@github.com>2019-11-16 23:35:17 -0800
commitc147be04374534cf7062ea5e7062c4767ba0e2f7 (patch)
treef22b66d2bf53bf88b8828a9e9f71f305168d0c73 /tokio/src/sync/tests
parentb1d9e55487d8411da89788ce0fbb3eb99a1f3a40 (diff)
make AtomicWaker private (#1782)
Diffstat (limited to 'tokio/src/sync/tests')
-rw-r--r--tokio/src/sync/tests/atomic_waker.rs34
-rw-r--r--tokio/src/sync/tests/mod.rs12
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;