forked from tokio-rs/tokio
-
Notifications
You must be signed in to change notification settings - Fork 0
/
loom_watch.rs
36 lines (27 loc) · 831 Bytes
/
loom_watch.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
use crate::sync::watch;
use loom::future::block_on;
use loom::thread;
#[test]
fn smoke() {
loom::model(|| {
let (tx, mut rx1) = watch::channel(1);
let mut rx2 = rx1.clone();
let mut rx3 = rx1.clone();
let mut rx4 = rx1.clone();
let mut rx5 = rx1.clone();
let th = thread::spawn(move || {
tx.send(2).unwrap();
});
block_on(rx1.changed()).unwrap();
assert_eq!(*rx1.borrow(), 2);
block_on(rx2.changed()).unwrap();
assert_eq!(*rx2.borrow(), 2);
block_on(rx3.changed()).unwrap();
assert_eq!(*rx3.borrow(), 2);
block_on(rx4.changed()).unwrap();
assert_eq!(*rx4.borrow(), 2);
block_on(rx5.changed()).unwrap();
assert_eq!(*rx5.borrow(), 2);
th.join().unwrap();
})
}