extern crate env_logger;
extern crate futures;
extern crate tokio_core;

use std::time::{Instant, Duration};

use futures::stream::{Stream};
use tokio_core::reactor::{Core, Interval};

macro_rules! t {
    ($e:expr) => (match $e {
        Ok(e) => e,
        Err(e) => panic!("{} failed with {:?}", stringify!($e), e),
    })
}

#[test]
fn single() {
    drop(env_logger::init());
    let mut l = t!(Core::new());
    let dur = Duration::from_millis(10);
    let start = Instant::now();
    let interval = t!(Interval::new(dur, &l.handle()));
    t!(l.run(interval.take(1).collect()));
    assert!(start.elapsed() >= dur);
}

#[test]
fn two_times() {
    drop(env_logger::init());
    let mut l = t!(Core::new());
    let dur = Duration::from_millis(10);
    let start = Instant::now();
    let interval = t!(Interval::new(dur, &l.handle()));
    let result = t!(l.run(interval.take(2).collect()));
    assert!(start.elapsed() >= dur*2);
    assert_eq!(result, vec![(), ()]);
}
