def __init__(self, tc, player_b=None, player_w=None, **kwargs): self.tc = tc kwargs.setdefault('board_size', 9) game_controller = gtp_controller.Game_controller('one', 'two') if player_b is None: player_b = gtp_engine_fixtures.Test_player() if player_w is None: player_w = gtp_engine_fixtures.Test_player() engine_b = gtp_engine_fixtures.make_player_engine(player_b) engine_w = gtp_engine_fixtures.make_player_engine(player_w) channel_b = gtp_controller_test_support.Testing_gtp_channel(engine_b) channel_w = gtp_controller_test_support.Testing_gtp_channel(engine_w) controller_b = gtp_controller.Gtp_controller(channel_b, 'player one') controller_w = gtp_controller.Gtp_controller(channel_w, 'player two') game_controller.set_player_controller('b', controller_b) game_controller.set_player_controller('w', controller_w) game = gtp_games.Gtp_game(game_controller, **kwargs) self.game_controller = game_controller self.game = game self.controller_b = controller_b self.controller_w = controller_w self.channel_b = channel_b self.channel_w = channel_w self.engine_b = channel_b.engine self.engine_w = channel_w.engine self.player_b = channel_b.engine.player self.player_w = channel_w.engine.player
def test_testing_gtp_channel_sequencing(tc): engine = gtp_engine_fixtures.get_test_engine() channel = gtp_controller_test_support.Testing_gtp_channel(engine) tc.assertRaisesRegexp(SupporterError, "response request without command", channel.get_response) channel.send_command("test", []) tc.assertRaisesRegexp(SupporterError, "two commands in a row", channel.send_command, "test", [])
def test_testing_gtp_channel_fatal_errors(tc): engine = gtp_engine_fixtures.get_test_engine() channel = gtp_controller_test_support.Testing_gtp_channel(engine) channel.send_command("fatal", []) tc.assertEqual(channel.get_response(), (True, "fatal error")) tc.assertRaisesRegexp(GtpChannelClosed, "engine has closed the response channel", channel.get_response) channel.close()
def test_testing_gtp_channel_alt(tc): engine = gtp_engine_fixtures.get_test_engine() channel = gtp_controller_test_support.Testing_gtp_channel(engine) channel.engine_exit_breaks_commands = False channel.send_command("test", []) tc.assertEqual(channel.get_response(), (False, "test response")) channel.send_command("quit", []) tc.assertEqual(channel.get_response(), (False, "")) channel.send_command("test", []) tc.assertRaisesRegexp(GtpChannelClosed, "engine has closed the response channel", channel.get_response) channel.close()
def test_testing_gtp_channel(tc): engine = gtp_engine_fixtures.get_test_engine() channel = gtp_controller_test_support.Testing_gtp_channel(engine) channel.send_command("play", ["b", "a3"]) tc.assertEqual(channel.get_response(), (True, "unknown command")) channel.send_command("test", []) tc.assertEqual(channel.get_response(), (False, "test response")) channel.send_command("multiline", []) tc.assertEqual(channel.get_response(), (False, "first line \n second line\nthird line")) channel.send_command("quit", []) tc.assertEqual(channel.get_response(), (False, "")) tc.assertRaisesRegexp(GtpChannelClosed, "engine has closed the command channel", channel.send_command, "quit", []) channel.close()
def test_testing_gtp_force_error(tc): engine = gtp_engine_fixtures.get_test_engine() channel = gtp_controller_test_support.Testing_gtp_channel(engine) channel.fail_next_command = True tc.assertRaisesRegexp(GtpTransportError, "forced failure for send_command_line", channel.send_command, "test", []) channel.send_command("test", []) channel.fail_next_response = True tc.assertRaisesRegexp(GtpTransportError, "forced failure for get_response_line", channel.get_response) channel.force_next_response = "# error\n\n" tc.assertRaisesRegexp( GtpProtocolError, "no success/failure indication from engine: first line is `# error`", channel.get_response) channel.fail_close = True tc.assertRaisesRegexp(GtpTransportError, "forced failure for close", channel.close)
def get_test_channel(): """Return a Testing_gtp_channel connected to the test engine.""" engine = get_test_engine() return gtp_controller_test_support.Testing_gtp_channel(engine)