| 1 | #![warn (rust_2018_idioms)] |
| 2 | #![cfg (all(feature = "time" , feature = "sync" , feature = "io-util" ))] |
| 3 | |
| 4 | use tokio::time; |
| 5 | use tokio_stream::StreamExt; |
| 6 | use tokio_test::*; |
| 7 | |
| 8 | use std::time::Duration; |
| 9 | |
| 10 | #[tokio::test ] |
| 11 | async fn usage() { |
| 12 | time::pause(); |
| 13 | |
| 14 | let mut stream = task::spawn(futures::stream::repeat(()).throttle(Duration::from_millis(100))); |
| 15 | |
| 16 | assert_ready!(stream.poll_next()); |
| 17 | assert_pending!(stream.poll_next()); |
| 18 | |
| 19 | time::advance(Duration::from_millis(90)).await; |
| 20 | |
| 21 | assert_pending!(stream.poll_next()); |
| 22 | |
| 23 | time::advance(Duration::from_millis(101)).await; |
| 24 | |
| 25 | assert!(stream.is_woken()); |
| 26 | |
| 27 | assert_ready!(stream.poll_next()); |
| 28 | } |
| 29 | |