extern crate mio; extern crate mio_extras; use mio::event::Event; use mio::{Events, Poll}; use std::time::Duration; mod test_poll_channel; mod test_timer; pub fn expect_events( poll: &Poll, event_buffer: &mut Events, poll_try_count: usize, mut expected: Vec, ) { const MS: u64 = 1_000; for _ in 0..poll_try_count { poll.poll(event_buffer, Some(Duration::from_millis(MS))) .unwrap(); for event in event_buffer.iter() { let pos_opt = match expected.iter().position(|exp_event| { (event.token() == exp_event.token()) && event.readiness().contains(exp_event.readiness()) }) { Some(x) => Some(x), None => None, }; if let Some(pos) = pos_opt { expected.remove(pos); } } if expected.is_empty() { break; } } assert!( expected.is_empty(), "The following expected events were not found: {:?}", expected ); }