@@ -496,6 +496,61 @@ def test_increment_time_scales_with_game_speed_multiplier(self):
496496 mediator .move_passengers .assert_called_once_with (400 )
497497 mediator .update_waiting_and_game_over .assert_called_once_with (400 )
498498
499+ def test_update_waiting_game_over_at_passenger_max_wait_boundary (self ):
500+ mediator = Mediator ()
501+ station = Station (Circle (station_color , station_size ), Point (0 , 0 ))
502+ mediator .stations = [station ]
503+ passenger = Passenger (Circle (station_color , station_size ))
504+ station .add_passenger (passenger )
505+
506+ mediator .passenger_max_wait_time_ms = 100
507+ mediator .max_waiting_passengers = 1
508+
509+ mediator .update_waiting_and_game_over (99 )
510+ self .assertEqual (passenger .wait_ms , 99 )
511+ self .assertFalse (mediator .is_game_over )
512+
513+ mediator .update_waiting_and_game_over (1 )
514+ self .assertEqual (passenger .wait_ms , 100 )
515+ self .assertTrue (mediator .is_game_over )
516+
517+ def test_update_waiting_game_over_respects_max_waiting_passengers (self ):
518+ mediator = Mediator ()
519+ station = Station (Circle (station_color , station_size ), Point (0 , 0 ))
520+ mediator .stations = [station ]
521+ passenger_a = Passenger (Circle (station_color , station_size ))
522+ passenger_b = Passenger (Circle (station_color , station_size ))
523+ station .add_passenger (passenger_a )
524+ station .add_passenger (passenger_b )
525+
526+ mediator .passenger_max_wait_time_ms = 100
527+ mediator .max_waiting_passengers = 2
528+ passenger_a .wait_ms = 100
529+ passenger_b .wait_ms = 99
530+
531+ mediator .update_waiting_and_game_over (0 )
532+ self .assertFalse (mediator .is_game_over )
533+
534+ mediator .update_waiting_and_game_over (1 )
535+ self .assertTrue (mediator .is_game_over )
536+
537+ def test_update_waiting_ignores_metro_passengers_for_game_over (self ):
538+ mediator = Mediator ()
539+ station = Station (Circle (station_color , station_size ), Point (0 , 0 ))
540+ mediator .stations = [station ]
541+ metro = Metro ()
542+ passenger = Passenger (Circle (station_color , station_size ))
543+ passenger .wait_ms = 10_000
544+ metro .add_passenger (passenger )
545+ mediator .metros = [metro ]
546+ mediator .passengers = [passenger ]
547+
548+ mediator .passenger_max_wait_time_ms = 1
549+ mediator .max_waiting_passengers = 1
550+
551+ mediator .update_waiting_and_game_over (0 )
552+ self .assertFalse (mediator .is_game_over )
553+
499554 def test_move_passengers_covers_all_transfers (self ):
500555 mediator , station_a , station_b , path , metro = self ._build_two_station_mediator ()
501556 mediator .update_unlocked_num_paths = MagicMock ()
0 commit comments