def test_addHook(self): simulator = Simulator(road=Mock(), dispatcher=Mock()) hook = Mock() simulator.addHook(hook) self.assertIn(hook, simulator.hooks) simulator.removeHook(hook) self.assertNotIn(hook, simulator.hooks)
def test_step(self): road = Mock() dispatcher = Mock() simulator = Simulator(road=road, dispatcher=dispatcher) # No hooks. simulator.step() self.assertEqual(simulator.steps, 1) dispatcher.dispatch.assert_called_once() road.step.assert_called_once() # Test hooks are run. hook = Mock() simulator.addHook(hook) simulator.step() self.assertEqual(simulator.steps, 2) hook.run.assert_called_once() # Tests hooks are removed correctly. hook.run.reset_mock() simulator.removeHook(hook) simulator.step() self.assertEqual(simulator.steps, 3) hook.run.assert_not_called()