mirror of
https://github.com/tokio-rs/tokio.git
synced 2026-08-15 00:00:15 +02:00
38 lines
776 B
Rust
38 lines
776 B
Rust
#![warn(rust_2018_idioms)]
|
|
|
|
use std::task::Waker;
|
|
use tokio_sync::AtomicWaker;
|
|
use tokio_test::task::MockTask;
|
|
|
|
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 waker = AtomicWaker::new();
|
|
let mut task = MockTask::new();
|
|
|
|
task.enter(|cx| waker.register_by_ref(cx.waker()));
|
|
waker.wake();
|
|
|
|
assert!(task.is_woken());
|
|
}
|
|
|
|
#[test]
|
|
fn wake_without_register() {
|
|
let waker = AtomicWaker::new();
|
|
waker.wake();
|
|
|
|
// Registering should not result in a notification
|
|
let mut task = MockTask::new();
|
|
task.enter(|cx| waker.register_by_ref(cx.waker()));
|
|
|
|
assert!(!task.is_woken());
|
|
}
|