def test_gotIntroducedWithInitialPlayer(self): """ The initial L{Player} in the L{Environment} should be passed to L{UI.gotInitialPlayer}. """ player = object() environment = Environment(10, Clock()) environment.setInitialPlayer(player) initialEvents = [] def gotInitialPlayer(player): initialEvents.append(('player', player)) self.ui.gotInitialPlayer = gotInitialPlayer self.ui.gotIntroduced(environment) self.assertEquals(initialEvents, [('player', player)]),
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)