Don't export the timer_wheel module

Move tests into that module
This commit is contained in:
Alex Crichton
2016-08-05 09:44:00 -07:00
parent 368a9c70e8
commit 8eb1f681af
4 changed files with 141 additions and 141 deletions
-3
View File
@@ -21,6 +21,3 @@ slab = "0.2.0"
[dev-dependencies]
env_logger = "0.3"
[lib]
test = false
+1 -1
View File
@@ -24,7 +24,7 @@ mod event_loop;
mod tcp;
mod udp;
mod timeout;
pub mod timer_wheel;
mod timer_wheel;
#[path = "../../src/slot.rs"]
mod slot;
#[path = "../../src/lock.rs"]
+140
View File
@@ -291,3 +291,143 @@ impl<T> TimerWheel<T> {
(ticks as usize) & MASK
}
}
#[cfg(test)]
mod tests {
extern crate env_logger;
use std::time::{Instant, Duration};
use super::TimerWheel;
fn ms(amt: u64) -> Duration {
Duration::from_millis(amt)
}
#[test]
fn smoke() {
drop(env_logger::init());
let mut timer = TimerWheel::<i32>::new();
let now = Instant::now();
assert!(timer.poll(now).is_none());
assert!(timer.poll(now).is_none());
timer.insert(now + ms(200), 3);
assert!(timer.poll(now).is_none());
assert!(timer.poll(now + ms(100)).is_none());
let res = timer.poll(now + ms(200));
assert!(res.is_some());
assert_eq!(res.unwrap(), 3);
}
#[test]
fn poll_past_done() {
drop(env_logger::init());
let mut timer = TimerWheel::<i32>::new();
let now = Instant::now();
timer.insert(now + ms(200), 3);
let res = timer.poll(now + ms(300));
assert!(res.is_some());
assert_eq!(res.unwrap(), 3);
}
#[test]
fn multiple_ready() {
drop(env_logger::init());
let mut timer = TimerWheel::<i32>::new();
let now = Instant::now();
timer.insert(now + ms(200), 3);
timer.insert(now + ms(201), 4);
timer.insert(now + ms(202), 5);
timer.insert(now + ms(300), 6);
timer.insert(now + ms(301), 7);
let mut found = Vec::new();
while let Some(i) = timer.poll(now + ms(400)) {
found.push(i);
}
found.sort();
assert_eq!(found, [3, 4, 5, 6, 7]);
}
#[test]
fn poll_now() {
drop(env_logger::init());
let mut timer = TimerWheel::<i32>::new();
let now = Instant::now();
timer.insert(now, 3);
let res = timer.poll(now + ms(100));
assert!(res.is_some());
assert_eq!(res.unwrap(), 3);
}
#[test]
fn cancel() {
drop(env_logger::init());
let mut timer = TimerWheel::<i32>::new();
let now = Instant::now();
let timeout = timer.insert(now + ms(800), 3);
assert!(timer.poll(now + ms(200)).is_none());
assert!(timer.poll(now + ms(400)).is_none());
assert_eq!(timer.cancel(&timeout), Some(3));
assert!(timer.poll(now + ms(600)).is_none());
assert!(timer.poll(now + ms(800)).is_none());
assert!(timer.poll(now + ms(1000)).is_none());
}
#[test]
fn next_timeout() {
drop(env_logger::init());
let mut timer = TimerWheel::<i32>::new();
let now = Instant::now();
assert!(timer.next_timeout().is_none());
timer.insert(now + ms(400), 3);
let timeout = timer.next_timeout().expect("wanted a next_timeout");
assert_eq!(timeout, now + ms(400));
timer.insert(now + ms(1000), 3);
let timeout = timer.next_timeout().expect("wanted a next_timeout");
assert_eq!(timeout, now + ms(400));
}
#[test]
fn around_the_boundary() {
drop(env_logger::init());
let mut timer = TimerWheel::<i32>::new();
let now = Instant::now();
timer.insert(now + ms(199), 3);
timer.insert(now + ms(200), 4);
timer.insert(now + ms(201), 5);
timer.insert(now + ms(251), 6);
let mut found = Vec::new();
while let Some(i) = timer.poll(now + ms(200)) {
found.push(i);
}
found.sort();
assert_eq!(found, [3, 4, 5]);
assert_eq!(timer.poll(now + ms(300)), Some(6));
assert_eq!(timer.poll(now + ms(300)), None);
}
#[test]
fn remove_clears_timeout() {
drop(env_logger::init());
let mut timer = TimerWheel::<i32>::new();
let now = Instant::now();
timer.insert(now + ms(100), 3);
assert_eq!(timer.next_timeout(), Some(now + ms(100)));
assert_eq!(timer.poll(now + ms(200)), Some(3));
assert_eq!(timer.next_timeout(), None);
}
}
-137
View File
@@ -1,137 +0,0 @@
extern crate env_logger;
extern crate futures_mio;
use std::time::{Instant, Duration};
use futures_mio::timer_wheel::TimerWheel;
fn ms(amt: u64) -> Duration {
Duration::from_millis(amt)
}
#[test]
fn smoke() {
drop(env_logger::init());
let mut timer = TimerWheel::<i32>::new();
let now = Instant::now();
assert!(timer.poll(now).is_none());
assert!(timer.poll(now).is_none());
timer.insert(now + ms(200), 3);
assert!(timer.poll(now).is_none());
assert!(timer.poll(now + ms(100)).is_none());
let res = timer.poll(now + ms(200));
assert!(res.is_some());
assert_eq!(res.unwrap(), 3);
}
#[test]
fn poll_past_done() {
drop(env_logger::init());
let mut timer = TimerWheel::<i32>::new();
let now = Instant::now();
timer.insert(now + ms(200), 3);
let res = timer.poll(now + ms(300));
assert!(res.is_some());
assert_eq!(res.unwrap(), 3);
}
#[test]
fn multiple_ready() {
drop(env_logger::init());
let mut timer = TimerWheel::<i32>::new();
let now = Instant::now();
timer.insert(now + ms(200), 3);
timer.insert(now + ms(201), 4);
timer.insert(now + ms(202), 5);
timer.insert(now + ms(300), 6);
timer.insert(now + ms(301), 7);
let mut found = Vec::new();
while let Some(i) = timer.poll(now + ms(400)) {
found.push(i);
}
found.sort();
assert_eq!(found, [3, 4, 5, 6, 7]);
}
#[test]
fn poll_now() {
drop(env_logger::init());
let mut timer = TimerWheel::<i32>::new();
let now = Instant::now();
timer.insert(now, 3);
let res = timer.poll(now + ms(100));
assert!(res.is_some());
assert_eq!(res.unwrap(), 3);
}
#[test]
fn cancel() {
drop(env_logger::init());
let mut timer = TimerWheel::<i32>::new();
let now = Instant::now();
let timeout = timer.insert(now + ms(800), 3);
assert!(timer.poll(now + ms(200)).is_none());
assert!(timer.poll(now + ms(400)).is_none());
assert_eq!(timer.cancel(&timeout), Some(3));
assert!(timer.poll(now + ms(600)).is_none());
assert!(timer.poll(now + ms(800)).is_none());
assert!(timer.poll(now + ms(1000)).is_none());
}
#[test]
fn next_timeout() {
drop(env_logger::init());
let mut timer = TimerWheel::<i32>::new();
let now = Instant::now();
assert!(timer.next_timeout().is_none());
timer.insert(now + ms(400), 3);
let timeout = timer.next_timeout().expect("wanted a next_timeout");
assert_eq!(timeout, now + ms(400));
timer.insert(now + ms(1000), 3);
let timeout = timer.next_timeout().expect("wanted a next_timeout");
assert_eq!(timeout, now + ms(400));
}
#[test]
fn around_the_boundary() {
drop(env_logger::init());
let mut timer = TimerWheel::<i32>::new();
let now = Instant::now();
timer.insert(now + ms(199), 3);
timer.insert(now + ms(200), 4);
timer.insert(now + ms(201), 5);
timer.insert(now + ms(251), 6);
let mut found = Vec::new();
while let Some(i) = timer.poll(now + ms(200)) {
found.push(i);
}
found.sort();
assert_eq!(found, [3, 4, 5]);
assert_eq!(timer.poll(now + ms(300)), Some(6));
assert_eq!(timer.poll(now + ms(300)), None);
}
#[test]
fn remove_clears_timeout() {
drop(env_logger::init());
let mut timer = TimerWheel::<i32>::new();
let now = Instant::now();
timer.insert(now + ms(100), 3);
assert_eq!(timer.next_timeout(), Some(now + ms(100)));
assert_eq!(timer.poll(now + ms(200)), Some(3));
assert_eq!(timer.next_timeout(), None);
}