def _get_simulator(self, players): simulator = Mock() simulator._states = [] simulator._scores = None simulator.get_players.return_value = players simulator.get_states.return_value = simulator._states simulator.get_scores.side_effect = lambda: simulator._scores simulator.is_finished = False def report_state(state): simulator._states.append(state) def get_move(player, state, serialize, deserialize): return (0, 0) def finish_game(scores): simulator._scores = scores simulator.is_finished = True simulator.report_state.side_effect = report_state simulator.get_move.side_effect = get_move simulator.finish_game.side_effect = finish_game return simulator
def test_game(self): def game_master_side_effect(game_controller, jury_state): game_master._game_controller = game_controller return game_master def game_side_effect(jury_state): game_master._game_controller.is_finished = True game_master = Mock() game_master.is_finished = False game_master.tick.side_effect = game_side_effect # Sample command line if os.name == 'nt': config = [player.Player('a.exe') for i in range(2)] else: config = [player.Player('./a.out') for i in range(2)] gen = generator.Generator() start_state = next(gen.generate_start_positions(' ', 2)) eng = game_simulator.GameSimulator(config, start_state, '') result = eng.play() game_master.tick.assert_called_once() answer = game_controller.GameController(config, [], start_state, eng) answer.is_finished = True self.assertEqual(answer.is_finished, result.is_finished)