• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 use crate::sync::AtomicWaker;
2 use tokio_test::task;
3 
4 use std::task::Waker;
5 
6 trait AssertSend: Send {}
7 trait AssertSync: Send {}
8 
9 impl AssertSend for AtomicWaker {}
10 impl AssertSync for AtomicWaker {}
11 
12 impl AssertSend for Waker {}
13 impl AssertSync for Waker {}
14 
15 #[test]
basic_usage()16 fn basic_usage() {
17     let mut waker = task::spawn(AtomicWaker::new());
18 
19     waker.enter(|cx, waker| waker.register_by_ref(cx.waker()));
20     waker.wake();
21 
22     assert!(waker.is_woken());
23 }
24 
25 #[test]
wake_without_register()26 fn wake_without_register() {
27     let mut waker = task::spawn(AtomicWaker::new());
28     waker.wake();
29 
30     // Registering should not result in a notification
31     waker.enter(|cx, waker| waker.register_by_ref(cx.waker()));
32 
33     assert!(!waker.is_woken());
34 }
35