57 lines
1.8 KiB
Python
57 lines
1.8 KiB
Python
"""Tests for gtp_engine.py"""
|
|
|
|
from __future__ import with_statement
|
|
|
|
from gomill import gtp_engine
|
|
|
|
from gomill_tests import gomill_test_support
|
|
from gomill_tests import gtp_engine_test_support
|
|
from gomill_tests import test_support
|
|
|
|
def make_tests(suite):
|
|
suite.addTests(gomill_test_support.make_simple_tests(globals()))
|
|
|
|
def test_engine(tc):
|
|
def handle_test(args):
|
|
if args:
|
|
return "args: " + " ".join(args)
|
|
else:
|
|
return "test response"
|
|
|
|
engine = gtp_engine.Gtp_engine_protocol()
|
|
engine.add_protocol_commands()
|
|
engine.add_command('test', handle_test)
|
|
|
|
check_engine = gtp_engine_test_support.check_engine
|
|
check_engine(tc, engine, 'test', ['ab', 'cd'], "args: ab cd")
|
|
|
|
def test_run_gtp_session(tc):
|
|
engine = gtp_engine.Gtp_engine_protocol()
|
|
engine.add_protocol_commands()
|
|
|
|
stream = "known_command list_commands\nxyzzy\nquit\n"
|
|
command_pipe = test_support.Mock_reading_pipe(stream)
|
|
response_pipe = test_support.Mock_writing_pipe()
|
|
gtp_engine.run_gtp_session(engine, command_pipe, response_pipe)
|
|
tc.assertMultiLineEqual(response_pipe.getvalue(),
|
|
"= true\n\n? unknown command\n\n=\n\n")
|
|
command_pipe.close()
|
|
response_pipe.close()
|
|
|
|
def test_run_gtp_session_broken_pipe(tc):
|
|
def break_pipe(args):
|
|
response_pipe.simulate_broken_pipe()
|
|
|
|
engine = gtp_engine.Gtp_engine_protocol()
|
|
engine.add_protocol_commands()
|
|
engine.add_command("break", break_pipe)
|
|
|
|
stream = "known_command list_commands\nbreak\nquit\n"
|
|
command_pipe = test_support.Mock_reading_pipe(stream)
|
|
response_pipe = test_support.Mock_writing_pipe()
|
|
with tc.assertRaises(gtp_engine.ControllerDisconnected) as ar:
|
|
gtp_engine.run_gtp_session(engine, command_pipe, response_pipe)
|
|
command_pipe.close()
|
|
response_pipe.close()
|
|
|