class TestWorldGeneration(BaseTestCase): def setUp(self): path = os.path.dirname(os.path.os.path.realpath(__file__)) path = os.path.join(path, 'assets/test1.tmx') self.world = World(path) def test_spawn_points_found(self): spawn_point = self.world.get_spawn_points()[0] self.assertEqual(spawn_point.x, 2) self.assertEqual(spawn_point.y, 3) def test_collidables_created(self): barrel_width = 1.0 barrel_height = 1.312 barrel_x = 6.0 barrel_y = 2.688 barrel = self.world.get_objects_by_type('collidable')[0] self.assertAlmostEqual(barrel.get_position()['x'], barrel_x+0.5*barrel_width, places=3) self.assertAlmostEqual(barrel.get_position()['y'], barrel_y+0.5*barrel_height, places=3)
class TestArcher(BaseTestCase): def setUp(self): super(TestArcher, self).setUp() path = os.path.dirname(os.path.os.path.realpath(__file__)) path = os.path.join(path, 'assets/test1.tmx') self.world = World(path) self.spawn_point = self.world.get_spawn_points()[0] self.world_update_task = task.LoopingCall(self.world.step) self.world_update_task.clock = self.clock self.world_update_task.start(settings.TIME_STEP) self.archer = Archer(self.world, reactor=self.clock) self.archer.spawn(self.spawn_point) def tearDown(self): self.archer.destroy() self.world_update_task.stop() def count_archer_arrows(self, archer): arrows = self.world.get_objects_by_type('arrow') count = 0 for arrow in arrows: if(arrow.owner == archer): count = count + 1 return count def get_archer_arrows(self, archer): arrows = self.world.get_objects_by_type('arrow') archer_arrows = list() for arrow in arrows: if(arrow.owner == archer): archer_arrows.append(arrow) return archer_arrows def test_archer_spawned(self): self.assertEqual(self.spawn_point.x, self.archer.physics.position.x) self.assertEqual(self.spawn_point.y, self.archer.physics.position.y) def test_archer_moved(self): self.archer.want_move(directions['north']) self.advance_clock(1) self.assertLess(self.archer.physics.position.y, self.spawn_point.y) def test_archer_collides(self): self.archer.want_move(directions['east']) self.advance_clock(100) self.assertLess(self.archer.physics.position.x, 6.0) self.assertGreater(self.archer.physics.position.x, self.spawn_point.x) def test_archer_shoots(self): self.archer.want_attack(directions['south']) self.advance_clock(40) self.assertEqual(self.count_archer_arrows(self.archer), 1) self.advance_clock(1000) self.assertEqual(self.count_archer_arrows(self.archer), 0) def test_arrow_flies(self): self.archer.want_attack(directions['south']) self.advance_clock(40) arrow = self.get_archer_arrows(self.archer)[0] self.assertEqual(self.archer.physics.position.x, arrow.physics.position.x) archer_position_plus_2m = self.archer.physics.position + directions['south']*2 self.assertGreater(arrow.physics.position.y, archer_position_plus_2m.y) def test_arrow_collides(self): self.archer.want_attack(directions['east']) self.advance_clock(40) arrow = self.get_archer_arrows(self.archer)[0] self.assertLess(arrow.physics.position.x, 6.0) self.assertGreater(arrow.physics.position.x, self.archer.physics.position.x) def test_archer_kills_archer(self): attacker_spawn = self.world.get_object_by_name('spawn2') defender_spawn = self.world.get_object_by_name('spawn3') attacker = Archer(self.world, name="attacker", reactor=self.clock) defender = Archer(self.world, name="defender", reactor=self.clock) attacker.spawn(attacker_spawn) defender.spawn(defender_spawn) attacker.want_attack(directions['south']) self.advance_clock(1) self.assertEqual(attacker.state, "shooting") self.assertEqual(defender.state, "standing") self.advance_clock(50) self.assertEqual(attacker.state, "standing") self.assertEqual(defender.state, "dying") self.advance_clock(250) self.assertEqual(defender.state, "dead")
class TestPlayer(BaseTestCase): def setUp(self): super(TestPlayer, self).setUp() path = os.path.dirname(os.path.os.path.realpath(__file__)) path = os.path.join(path, 'assets/test1.tmx') self.world = World(path) self.spawn_point = self.world.get_spawn_points()[0] self.world_update_task = task.LoopingCall(self.world.processing_step) self.world_update_task.clock = self.clock self.world_update_task.start(1.0 / 30) self.player = Archer(self.world, reactor=self.clock) self.player.spawn(self.spawn_point) def tearDown(self): self.player.destroy() self.world_update_task.stop() def count_player_arrows(self, player): arrows = self.world.get_objects_by_type('arrow') count = 0 for arrow in arrows: if (arrow.owner == player): count = count + 1 return count def get_player_arrows(self, player): arrows = self.world.get_objects_by_type('arrow') player_arrows = list() for arrow in arrows: if (arrow.owner == player): player_arrows.append(arrow) return player_arrows def test_player_spawned(self): self.assertEqual(self.spawn_point.x, self.player.physics.position.x) self.assertEqual(self.spawn_point.y, self.player.physics.position.y) def test_player_moved(self): self.player.want_move(directions['north']) self.advance_clock(1) self.assertLess(self.player.physics.position.y, self.spawn_point.y) def test_player_collides(self): self.player.want_move(directions['east']) self.advance_clock(100) self.assertLess(self.player.physics.position.x, 6.0) self.assertGreater(self.player.physics.position.x, self.spawn_point.x) def test_player_shoots(self): self.player.want_attack(directions['south']) self.advance_clock(40) self.assertEqual(self.count_player_arrows(self.player), 1) self.advance_clock(1000) self.assertEqual(self.count_player_arrows(self.player), 0) def test_arrow_flies(self): self.player.want_attack(directions['south']) self.advance_clock(40) arrow = self.get_player_arrows(self.player)[0] self.assertEqual(self.player.physics.position.x, arrow.physics.position.x) player_position_plus_2m = self.player.physics.position + directions[ 'south'] * 2 self.assertGreater(arrow.physics.position.y, player_position_plus_2m.y) def test_arrow_collides(self): self.player.want_attack(directions['south']) self.advance_clock(40) arrow = self.get_player_arrows(self.player)[0] self.assertLess(arrow.physics.position.x, 6.0) self.assertGreater(arrow.physics.position.y, self.player.physics.position.y) def test_player_kills_player(self): attacker_spawn = self.world.get_object_by_name('spawn2') defender_spawn = self.world.get_object_by_name('spawn3') attacker = Archer(self.world, name="attacker", reactor=self.clock) defender = Archer(self.world, name="defender", reactor=self.clock) attacker.spawn(attacker_spawn) defender.spawn(defender_spawn) attacker.want_attack(directions['south']) self.advance_clock(1) self.assertEqual(attacker.state, "shooting") self.assertEqual(defender.state, "standing") self.advance_clock(50) self.assertEqual(attacker.state, "standing") self.assertEqual(defender.state, "dying") self.advance_clock(250) self.assertEqual(defender.state, "dead")