Skip to content

Commit e0b64fd

Browse files
Add test that catches EventReader + drain failure observed in example
Fails on line 467, after we try again
1 parent 987a62f commit e0b64fd

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

crates/bevy_ecs/src/event.rs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -445,6 +445,29 @@ mod tests {
445445
assert!(current_events.events_a.is_empty());
446446
}
447447

448+
#[test]
449+
fn write_eat_repeat() {
450+
struct E;
451+
let mut events = Events::<E>::default();
452+
let mut reader = events.get_reader();
453+
454+
assert!(reader.iter(&events).next().is_none());
455+
456+
// Send an event
457+
events.send(E);
458+
assert!(reader.iter(&events).next().is_some());
459+
assert!(reader.iter(&events).next().is_none());
460+
461+
// Eat all events
462+
let _ = events.drain();
463+
assert!(reader.iter(&events).next().is_none());
464+
465+
// Try again
466+
events.send(E);
467+
assert!(reader.iter(&events).next().is_some());
468+
assert!(reader.iter(&events).next().is_none());
469+
}
470+
448471
#[test]
449472
fn test_events() {
450473
let mut events = Events::<TestEvent>::default();

0 commit comments

Comments
 (0)