extern crate shrev;
use shrev::EventHandler;
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct TestEvent {
data: u32,
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct TestEvent2 {
data: u32,
}
fn main() {
let mut event_handler = EventHandler::new();
event_handler.register::<TestEvent>();
event_handler.register::<TestEvent2>();
let mut reader_id_2 = event_handler.register_reader::<TestEvent2>().unwrap();
event_handler
.write(&mut vec![TestEvent { data: 1 }, TestEvent { data: 2 }])
.expect("");
event_handler
.write(&mut vec![TestEvent2 { data: 3 }, TestEvent2 { data: 4 }])
.expect("");
let mut reader_id_1 = event_handler.register_reader::<TestEvent>().unwrap();
assert_eq!(
Ok([TestEvent2 { data: 3 }, TestEvent2 { data: 4 }].to_vec()),
event_handler.read::<TestEvent2>(&mut reader_id_2)
);
assert_eq!(
Ok([].to_vec()),
event_handler.read::<TestEvent2>(&mut reader_id_2)
);
assert_eq!(
Ok([].to_vec()),
event_handler.read::<TestEvent>(&mut reader_id_1)
);
event_handler
.write(&mut vec![TestEvent2 { data: 8 }, TestEvent2 { data: 9 }])
.expect("");
assert_eq!(
Ok([TestEvent2 { data: 8 }, TestEvent2 { data: 9 }].to_vec()),
event_handler.read::<TestEvent2>(&mut reader_id_2)
);
}