def test_gotIntroduced(self): """ When the introduction has been reciprocated, the L{UI} should start the Environment and create a L{Window} and call L{Window.go} on it. """ starts = [] environment = Environment(3, None) environment.start = lambda: starts.append(True) self.ui.gotIntroduced(environment) self.assertIdentical(self.ui.window.environment, environment) self.assertIdentical(self.ui.window.clock, self.reactor) self.assertEqual(self.ui.window.went, [True]) self.assertEqual(starts, [True])
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)