Пример #1
0
    def test_createInitialPlayer(self):
        """
        L{NetworkController._createInitialPlayer} should create the player
        object for this client.
        """
        x, y, z = (3, 2, 12)
        speed = 40
        granularity = 22
        environment = Environment(granularity, self.clock)
        observer = PlayerVisibilityObserver()
        environment.addObserver(observer)

        self.controller.createInitialPlayer(
            environment, self.identifier, Vector(x, y, z), speed)

        self.assertEqual(len(observer.createdPlayers), 1)
        self._assertThingsAboutPlayerCreation(
            environment, Vector(x, y, z), speed)
Пример #2
0
 def test_removePlayer(self):
     """
     L{NetworkController} should respond to L{RemovePlayer}
     commands by removing the identified L{Player} object from the
     L{Environment} and forgetting the L{Player}'s identifier.
     """
     environment = Environment(10, self.clock)
     self.controller.environment = environment
     observer = PlayerVisibilityObserver()
     environment.addObserver(observer)
     identifier = 123
     self.controller.newPlayer(identifier, 23, 32, 13, 939)
     responder = self.controller.lookupFunction(RemovePlayer.commandName)
     d = responder({"identifier": str(identifier)})
     def gotResult(ignored):
         self.assertEqual(observer.removedPlayers, observer.createdPlayers)
         self.assertRaises(
             KeyError,
             self.controller.objectByIdentifier, identifier)
     d.addCallback(gotResult)
     return d
Пример #3
0
class EnvironmentTests(TestCase, ArrayMixin):
    """
    Tests for L{game.environment.Environment}.
    """

    def setUp(self):
        """
        Create an L{Environment} attached to a L{Clock} so that its behavior is
        deterministic.
        """
        self.clock = Clock()
        self.environment = Environment(1, self.clock)
        self.environment.start()


    def test_terrain(self):
        """
        An L{Environment} should start with an empty terrain array.
        """
        self.assertEquals(self.environment.terrain.dict(), {})


    def test_createPlayer(self):
        """
        L{Environment.createPlayer} should instantiate a L{Player} and
        broadcast it to all registered observers.
        """
        position = Vector(1, 2, 3)
        speed = 20
        observer = PlayerVisibilityObserver()
        self.environment.addObserver(observer)
        player = self.environment.createPlayer(position, speed)
        self.assertEqual(observer.createdPlayers, [player])
        self.assertEqual(player.getPosition(), position)
        self.assertEqual(player.speed, speed)
        self.assertEqual(player.seconds, self.environment.seconds)


    def test_removePlayer(self):
        """
        L{Environment.removePlayer} should broadcast C{playerRemoved}
        to all registered observers.
        """
        position = Vector(1, 2, 3)
        speed = 20
        observer = PlayerVisibilityObserver()
        self.environment.addObserver(observer)
        player = self.environment.createPlayer(position, speed)
        self.environment.removePlayer(player)
        self.assertEqual(observer.createdPlayers, observer.removedPlayers)


    def test_setInitialPlayer(self):
        """
        L{Environment.setInitialPlayer} should change the environment's
        C{initialPlayer} attribute from C{None} to its argument.
        """
        self.assertIdentical(self.environment.initialPlayer, None)
        player = object()
        self.environment.setInitialPlayer(player)
        self.assertIdentical(self.environment.initialPlayer, player)


    def test_setNetwork(self):
        """
        L{Environment.setNetwork} changes the environment's C{network} attribute
        from C{None} to its argument.
        """
        self.assertIdentical(self.environment.network, None)
        network = object()
        self.environment.setNetwork(network)
        self.assertIdentical(self.environment.network, network)