use async_ach_notify::Notify; use core::future::Future; use core::pin::Pin; use futures_test::task; #[test] fn test() { static NOTIFY: Notify<2> = Notify::new(); let mut cx = task::noop_context(); let mut listener1 = NOTIFY.listen(); assert!(Pin::new(&mut listener1).poll(&mut cx).is_pending()); assert!(Pin::new(&mut listener1).poll(&mut cx).is_pending()); NOTIFY.notify_one(); assert!(Pin::new(&mut listener1).poll(&mut cx).is_ready()); assert!(Pin::new(&mut listener1).poll(&mut cx).is_pending()); let mut listener2 = NOTIFY.listen(); let mut listener3 = NOTIFY.listen(); assert!(Pin::new(&mut listener1).poll(&mut cx).is_pending()); assert!(Pin::new(&mut listener2).poll(&mut cx).is_pending()); assert!(Pin::new(&mut listener3).poll(&mut cx).is_pending()); NOTIFY.notify_one(); assert!(Pin::new(&mut listener1).poll(&mut cx).is_ready()); assert!(Pin::new(&mut listener2).poll(&mut cx).is_pending()); assert!(Pin::new(&mut listener3).poll(&mut cx).is_pending()); NOTIFY.notify_one(); assert!(Pin::new(&mut listener1).poll(&mut cx).is_ready()); assert!(Pin::new(&mut listener2).poll(&mut cx).is_pending()); assert!(Pin::new(&mut listener3).poll(&mut cx).is_pending()); NOTIFY.notify_one(); assert!(Pin::new(&mut listener1).poll(&mut cx).is_ready()); assert!(Pin::new(&mut listener2).poll(&mut cx).is_pending()); assert!(Pin::new(&mut listener3).poll(&mut cx).is_pending()); }