Skip to content

Commit 766e25c

Browse files
Added test for Event* as system parameters
1 parent 42dad93 commit 766e25c

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

crates/bevy_ecs/src/event.rs

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -402,12 +402,45 @@ impl<T> ManualEventReader<T> {
402402
#[cfg(test)]
403403
mod tests {
404404
use super::*;
405+
use crate::schedule::{Stage, SystemStage};
406+
use crate::system::IntoSystem;
407+
use crate::world::World;
405408

406409
#[derive(Copy, Clone, PartialEq, Eq, Debug)]
407410
struct TestEvent {
408411
i: usize,
409412
}
410413

414+
#[test]
415+
fn event_system_params() {
416+
let world = World::default();
417+
struct E;
418+
fn writes(ew: EventWriter<E>) {
419+
ew.send(E)
420+
}
421+
fn reads(er: EventReader<E>) {
422+
er.iter();
423+
}
424+
fn consumes(ec: EventConsumer<E>) {
425+
ec.drain();
426+
}
427+
428+
let mut stage1 = SystemStage::parallel();
429+
stage1.add_system(writes.system());
430+
stage1.add_system(reads.system());
431+
432+
stage1.run(&mut World::default());
433+
let current_events = world.get_resource::<Events<E>>().unwrap();
434+
assert!(current_events.events_a.len() == 1);
435+
436+
let mut stage2 = SystemStage::parallel();
437+
stage2.add_system(consumes.system());
438+
439+
stage2.run(&mut World::default());
440+
let current_events = world.get_resource::<Events<E>>().unwrap();
441+
assert!(current_events.events_a.len() == 0);
442+
}
443+
411444
#[test]
412445
fn test_events() {
413446
let mut events = Events::<TestEvent>::default();

0 commit comments

Comments
 (0)