declarative-dataflow 0.2.0

A reactive query engine built on Differential Dataflow.
Documentation
use declarative_dataflow::server::scheduler::{Event, Scheduler};
use std::time::Duration;

#[test]
fn test_schedule_now() {
    let mut scheduler = Scheduler::new();

    assert!(!scheduler.has_pending());
    assert!(scheduler.until_next().is_none());

    scheduler.event_after(Duration::from_secs(0), Event::Tick);

    assert!(scheduler.has_pending());
    assert_eq!(scheduler.next().unwrap().schedule(), Some(Event::Tick));
}

#[test]
fn test_schedule_after() {
    let mut scheduler = Scheduler::new();

    scheduler.event_after(Duration::from_secs(2), Event::Tick);

    assert!(!scheduler.has_pending());
    assert!(scheduler.next().is_none());
    assert!(scheduler.until_next().is_some());

    std::thread::sleep(scheduler.until_next().unwrap());

    assert!(scheduler.has_pending());
    assert_eq!(scheduler.next().unwrap().schedule(), Some(Event::Tick));
    assert!(scheduler.until_next().is_none());
}