| extern crate futures; |
| extern crate tokio_executor; |
| extern crate tokio_timer; |
| |
| #[macro_use] |
| mod support; |
| use support::*; |
| |
| use tokio_timer::*; |
| |
| use futures::{Stream}; |
| |
| #[test] |
| #[should_panic] |
| fn interval_zero_duration() { |
| mocked(|_, time| { |
| let _ = Interval::new(time.now(), ms(0)); |
| }); |
| } |
| |
| #[test] |
| fn usage() { |
| mocked(|timer, time| { |
| let start = time.now(); |
| let mut int = Interval::new(start, ms(300)); |
| |
| assert_ready_eq!(int, Some(start)); |
| assert_not_ready!(int); |
| |
| advance(timer, ms(100)); |
| assert_not_ready!(int); |
| |
| advance(timer, ms(200)); |
| assert_ready_eq!(int, Some(start + ms(300))); |
| assert_not_ready!(int); |
| |
| advance(timer, ms(400)); |
| assert_ready_eq!(int, Some(start + ms(600))); |
| assert_not_ready!(int); |
| |
| advance(timer, ms(500)); |
| assert_ready_eq!(int, Some(start + ms(900))); |
| assert_ready_eq!(int, Some(start + ms(1200))); |
| assert_not_ready!(int); |
| }); |
| } |