Esempio n. 1
0
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)
Esempio n. 2
0
 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
Esempio n. 3
0
 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)
Esempio n. 4
0
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),
    ])
Esempio n. 5
0
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)