Skip to content

Commit 8b4d090

Browse files
authored
Regression tests for observers whose Observer component is removed. (#20657)
Regression test of #19673 . The issue above has been fixed by the observer overhaul. This PR adds the regression tests.
1 parent 3d6e838 commit 8b4d090

File tree

1 file changed

+44
-0
lines changed
  • crates/bevy_ecs/src/observer

1 file changed

+44
-0
lines changed

crates/bevy_ecs/src/observer/mod.rs

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1396,4 +1396,48 @@ mod tests {
13961396
world.trigger_targets(EventA, [entities[2], entities[3]]);
13971397
assert_eq!(vec!["a", "a"], world.resource::<Order>().0);
13981398
}
1399+
1400+
#[test]
1401+
fn unregister_global_observer() {
1402+
let mut world = World::new();
1403+
let mut observer = world.add_observer(|_: On<EventA>| {});
1404+
observer.remove::<Observer>();
1405+
let id = observer.id();
1406+
let event_key = EventA::event_key(&world).unwrap();
1407+
assert!(!world
1408+
.observers
1409+
.get_observers_mut(event_key)
1410+
.global_observers
1411+
.contains_key(&id));
1412+
}
1413+
1414+
#[test]
1415+
fn unregister_entity_observer() {
1416+
let mut world = World::new();
1417+
let entity = world.spawn_empty().id();
1418+
let observer = Observer::new(|_: On<EventA>| {}).with_entity(entity);
1419+
let mut observer = world.spawn(observer);
1420+
observer.remove::<Observer>();
1421+
let event_key = EventA::event_key(&world).unwrap();
1422+
assert!(!world
1423+
.observers
1424+
.get_observers_mut(event_key)
1425+
.entity_observers
1426+
.contains_key(&entity));
1427+
}
1428+
1429+
#[test]
1430+
fn unregister_component_observer() {
1431+
let mut world = World::new();
1432+
let a = world.register_component::<A>();
1433+
let observer = Observer::new(|_: On<EventA>| {}).with_component(a);
1434+
let mut observer = world.spawn(observer);
1435+
observer.remove::<Observer>();
1436+
let event_key = EventA::event_key(&world).unwrap();
1437+
assert!(!world
1438+
.observers
1439+
.get_observers_mut(event_key)
1440+
.get_component_observers()
1441+
.contains_key(&a));
1442+
}
13991443
}

0 commit comments

Comments
 (0)