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)
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
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)