示例#1
0
class HighLevelResponderTests(unittest.TestCase):
    def test_it_hooks_into_socket_sends_and_receives(self):
        transmitter = JsonTransmitter(self.connection_socket)
        handler = ResponseHandler(MoveGenerator())
        responder = Responder(transmitter, handler)

        game_info = json.dumps({"board": {1: "o", 3: "o"}, "depth": 20})
        self.sock.send(game_info)
        responder.respond()

        data_received = self.sock.recv(1024)
        updated_game = json.loads(data_received)

        WIN_MOVE = 2
        self.assertEqual(WIN_MOVE, updated_game["ai_move"])
        self.assertEqual("o", updated_game["winner_after_ai_move"])
        self.assertEqual(None, updated_game["winner_on_board"])

    def setUp(self):
        PORT = random.randint(2000, 60000)
        self.server = ServerSocket("localhost", PORT)
        self.server.initialize_and_listen_for_connections()
        self.sock = socket.socket()
        self.sock.connect(("localhost", PORT))
        self.connection_socket = self.server.accept_connection_and_return_socket(
        )

    def tearDown(self):
        self.sock.close()
        self.connection_socket.close()
示例#2
0
class HighLevelResponderTests(unittest.TestCase):

      def test_it_hooks_into_socket_sends_and_receives(self):
          transmitter = JsonTransmitter(self.connection_socket)
          handler = ResponseHandler(MoveGenerator())
          responder = Responder(transmitter,handler)

          game_info = json.dumps({ "board": {1:"o",3:"o"},
                                   "depth": 20 })
          self.sock.send(game_info)
          responder.respond()

          data_received = self.sock.recv(1024)
          updated_game = json.loads(data_received)
           
          WIN_MOVE = 2
          self.assertEqual(WIN_MOVE, updated_game["ai_move"])
          self.assertEqual("o" ,updated_game["winner_after_ai_move"])
          self.assertEqual(None, updated_game["winner_on_board"])
          
      def setUp(self):
          PORT = random.randint(2000,60000)
          self.server = ServerSocket("localhost",PORT)
          self.server.initialize_and_listen_for_connections()
          self.sock = socket.socket()
          self.sock.connect(("localhost",PORT))
          self.connection_socket = self.server.accept_connection_and_return_socket()

      def tearDown(self):
          self.sock.close()
          self.connection_socket.close()
示例#3
0
 def test_accept_connection_delegates_to_its_socket(self):
     server = ServerSocket("localhost",5000) 
     server.socket = mock.Mock()
     server.socket.accept = mock.MagicMock(return_value=("client socket","address"))
     self.assertEqual("client socket", server.accept_connection_and_return_socket())
示例#4
0
from move_generator import MoveGenerator
from response_handler import ResponseHandler
from response_thread import ResponseThread

command_line_parser = OptionParser()
command_line_parser.add_option("-p", "--port", 
                               type="int", dest="port",
                               help="Port for the server to run on")
command_line_parser.set_defaults(port=5000)

(options, args) = command_line_parser.parse_args()

server = ServerSocket("localhost", options.port)
print "Server starting on port %d..."  % options.port
server.initialize_and_listen_for_connections()

while True:
    try:
      connection_socket = server.accept_connection_and_return_socket()
      transmitter = JsonTransmitter(connection_socket)
      move_generator = MoveGenerator()
      handler = ResponseHandler(move_generator)
      responder = Responder(transmitter, handler)
      ResponseThread(responder).start()
    except KeyboardInterrupt:
      print "\nShutting down server..."
      break