@@ -1396,4 +1396,48 @@ mod tests {
1396
1396
world. trigger_targets ( EventA , [ entities[ 2 ] , entities[ 3 ] ] ) ;
1397
1397
assert_eq ! ( vec![ "a" , "a" ] , world. resource:: <Order >( ) . 0 ) ;
1398
1398
}
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
+ }
1399
1443
}
0 commit comments