def test_game_runner_result_setting(tc): # Tests Game_runner._set_result() behaves as expected # Also tests set_result_class() class Mock_result_class(object): @staticmethod def from_game_score(game_score): return ("from_game_score", game_score) @staticmethod def from_unscored_game(game): return ("from_unscored_game", game) backend1 = Testing_backend(size=5, moves=[('b', 'C1'), ('w', 'D1')]) gr1 = gameplay.Game_runner(backend1, board_size=5, komi=11) gr1.set_result_class(Mock_result_class) gr1.prepare() gr1.run() tc.assertEqual(gr1.result, ("from_game_score", backend1.score_to_return)) backend2 = Testing_backend(size=5, moves=[('b', 'C1'), ('w', 'resign')]) gr2 = gameplay.Game_runner(backend2, board_size=5, komi=11) gr2.set_result_class(Mock_result_class) gr2.prepare() gr2.run() tc.assertEqual(gr2.result[0], "from_unscored_game") game = gr2.result[1] tc.assertIs(game.seen_resignation, True) tc.assertEqual(game.move_count, 1)
def __init__(self, game_controller, board_size, komi=0.0, move_limit=None): self.game_controller = game_controller self.backend = _Gtp_backend(self.game_controller, board_size, komi) self.game_runner = gameplay.Game_runner(self.backend, board_size, komi, move_limit) self.game_runner.set_result_class(Game_result) self.game_id = None self.result = None self.cpu_time_errors = None
def __init__(self, tc, moves, backend_cls=Testing_backend, size=5, komi=11, move_limit=None): self.tc = tc self.backend = backend_cls(size, moves) self.game_runner = gameplay.Game_runner(self.backend, board_size=size, komi=komi, move_limit=move_limit)
def test_game_runner_defaults(tc): backend = Testing_backend(size=9, moves=[('b', 'C1'), ('w', 'D1')]) gr = gameplay.Game_runner(backend, board_size=9) tc.assertIsNone(gr.move_limit) gr.prepare() gr.run() tc.assertEqual(backend.log[0], "start_new_game: size=9, komi=0.0") tc.assertIsNone(gr.get_final_diagnostics()) tc.assertEqual(gr.get_moves(), [ ('b', (0, 2), None), ('w', (0, 3), None), ('b', None, None), ('w', None, None), ])
def test_game_runner_state_checks(tc): backend1 = Testing_backend(size=9, moves=[('b', 'C1'), ('w', 'D1')]) gr1 = gameplay.Game_runner(backend1, board_size=9) tc.assertRaises(gameplay.GameRunnerStateError, gr1.set_handicap, 3, False) tc.assertRaises(gameplay.GameRunnerStateError, gr1.run) gr1.prepare() tc.assertRaises(gameplay.GameRunnerStateError, gr1.prepare) gr1.run() tc.assertRaises(gameplay.GameRunnerStateError, gr1.prepare) tc.assertRaises(gameplay.GameRunnerStateError, gr1.set_handicap, 3, False) tc.assertRaises(gameplay.GameRunnerStateError, gr1.run) tc.assertFalse(gr1.make_sgf().get_root().has_property("HA")) backend2 = Testing_backend(size=9, moves=[('b', 'C1'), ('w', 'D1')]) gr2 = gameplay.Game_runner(backend2, board_size=9) gr2.prepare() gr2.set_handicap(3, False) tc.assertRaises(gameplay.GameRunnerStateError, gr1.prepare) tc.assertRaises(gameplay.GameRunnerStateError, gr1.set_handicap, 9, False) gr2.run() tc.assertRaises(gameplay.GameRunnerStateError, gr2.prepare) tc.assertRaises(gameplay.GameRunnerStateError, gr2.set_handicap, 3, False) tc.assertRaises(gameplay.GameRunnerStateError, gr1.run) tc.assertEqual(gr2.make_sgf().get_root().get("HA"), 3)