54 lines
1.1 KiB
Rust
54 lines
1.1 KiB
Rust
#[macro_use]
|
|
extern crate eventbus;
|
|
|
|
use eventbus::{Event, EventBus};
|
|
|
|
trait MyEvent : Event {
|
|
fn get_i(&self) -> i32;
|
|
fn set_i(&mut self, i32);
|
|
}
|
|
|
|
struct MyEventImpl {
|
|
i: i32
|
|
}
|
|
|
|
impl Event for MyEventImpl {
|
|
}
|
|
impl MyEvent for MyEventImpl {
|
|
fn get_i(&self) -> i32 {
|
|
self.i
|
|
}
|
|
fn set_i(&mut self, i: i32) {
|
|
self.i = i;
|
|
}
|
|
}
|
|
|
|
fn add_handler(e: &mut MyEvent) {
|
|
/* adds 1 */
|
|
let i = e.get_i();
|
|
e.set_i(i+1);
|
|
}
|
|
|
|
fn no_handler(e: &mut MyEvent) {
|
|
/* does nothing */
|
|
let i = e.get_i();
|
|
e.set_i(i);
|
|
}
|
|
|
|
#[test]
|
|
fn test_dyn_usage() {
|
|
let event_bus = EventBus::new();
|
|
//let handler_id = event_bus.register(add_handler, 0);
|
|
register_hook!(&event_bus, 0, dyn MyEvent, add_handler);
|
|
let mut event = MyEventImpl { i: 3 };
|
|
assert_eq!(event.i, 3);
|
|
post_event!(&event_bus, &mut event, dyn MyEvent);
|
|
assert_eq!(event.i, 4);
|
|
register_hook!(&event_bus, 1, dyn MyEvent, no_handler);
|
|
post_event!(&event_bus, &mut event, dyn MyEvent);
|
|
assert_eq!(event.i, 5);
|
|
//event_bus.unregister(handler_id);
|
|
post_event!(&event_bus, &mut event, dyn MyEvent);
|
|
//assert_eq!(event.i, 5);
|
|
}
|