def _get_controller(self, players): controller = Mock() controller._states = [] controller._scores = None controller.get_players.return_value = players controller.get_states.return_value = controller._states controller.get_scores.side_effect = lambda: controller._scores def report_state(state): controller._states.append(state) def get_move(player, heap_sizes, serialize, deserialize): allowed = [i for i, size in enumerate(heap_sizes) if size > 0] heap_number = random.choice(allowed) removed_stones = random.randint(1, heap_sizes[heap_number]) return (heap_number, removed_stones) def finish_game(scores): controller._scores = scores controller.report_state.side_effect = report_state controller.get_move.side_effect = get_move controller.finish_game.side_effect = finish_game return controller
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