def test_update_entities(self): game_state = GameState() was_called = [] def update(*_): was_called.append(0) entity = Entity(Vector(), Vector(), EntityType.LARGE_BOULDER) entity.update = update entity_manager = EntityManager() entity_manager.entities = [entity] entity_manager.update_entities(game_state) self.assertEqual(1, len(was_called)) before_health = game_state.player_health game_state.tile_map.tiles[(0, 0)].tile_type = TileType.FINISH entity_manager.entities = [entity] entity_manager.update_entities(game_state) self.assertEqual(0, len(entity_manager.entities)) self.assertEqual(before_health - 1, game_state.player_health) game_state = GameState() entity.health = 0 entity.entity_type = EntityType.SMALL_BOULDER entity_manager.entities = [entity] entity_manager.update_entities(game_state) self.assertEqual(0, len(entity_manager.entities))
def test_update(self): game_state = GameState() game_state.tile_map.tiles[(0, 0)].tile_type = TileType.PATH game_state.tile_map.tiles[(0, 0)].directions = [(1, 0)] game_state.entity_manager.update(game_state) entity = Entity(Vector(1, 1), Vector(10, 10), EntityType.LARGE_BOULDER) entity.update(game_state) self.assertEqual((1, 0), entity.next_tile_index)
def test_update_split_large_boulder(self): game_state = GameState() entity = Entity(Vector(), Vector(), EntityType.LARGE_BOULDER) entity.health = 0 entity_manager = EntityManager() entity_manager.entities = [entity] entity_manager.update_entities(game_state) self.assertEqual(2, len(entity_manager.entities))
def test_calculate_movement(self): game_state = GameState() entity = Entity(Vector(50, 50), Vector(10, 10), EntityType.LARGE_BOULDER) entity.next_tile_index = (1, 0) entity.calculate_movement(game_state) self.assertEqual(Vector(2, 0), entity.velocity, str(entity.velocity)) self.assertEqual(Vector(52, 50), entity.position, str(entity.position))
def test_update(self): was_called = [] def shoot(*_): was_called.append(0) game_state = GameState() game_state.window_size = Vector(100, 100) game_state.building_manager.shoot = shoot # no enemy to shoot at building = Laser(Vector(), Vector(10, 10)) building.cool_down = 0 building.update(game_state) self.assertEqual(0, len(was_called)) # on cool down building = Laser(Vector(), Vector(10, 10)) building.cool_down = 100 building.update(game_state) self.assertEqual(0, len(was_called)) # shooting game_state.entity_manager.entities = [ Entity(Vector(150, 0), Vector(10, 10), EntityType.LARGE_BOULDER) ] building = Laser(Vector(), Vector(10, 10)) building.cool_down = 0 building.update(game_state) self.assertEqual(1, len(was_called))
def test_render(self): game_state = GameState() was_called = [] def render(*_): was_called.append(0) position = Vector() size = Vector() entity = Entity(position, size, EntityType.LARGE_BOULDER) entity.render = render entity_manager = EntityManager() entity_manager.entities = [entity] entity_manager.render(game_state) self.assertEqual(1, len(was_called))
def test_update_cancel(): game_state = GameState() entity = Entity(Vector(-100, -100), Vector(10, 10), EntityType.LARGE_BOULDER) entity.update(game_state) entity = Entity(Vector(1, 1), Vector(10, 10), EntityType.LARGE_BOULDER) entity.update(game_state)
def test_update_with_entity_hit(self): game_state = GameState() entity = Entity(Vector(0, 0), Vector(10, 10), EntityType.LARGE_BOULDER) game_state.entity_manager.entities = [entity] bullet = Bullet(Vector(), Vector(10, 10), Vector(1, 1)) result = bullet.update(game_state) self.assertTrue(result)
def test_render(self): game_state = GameState() game_state.init("./tower_defense/res") game_state.window_size = Vector(100, 100) entity = Entity(Vector(1, 1), Vector(10, 10), EntityType.LARGE_BOULDER) batch = pyglet.graphics.Batch() entity.render(game_state, batch) self.assertEqual(1, len(batch.top_groups)) self.assertEqual(pyglet.graphics.TextureGroup, type(batch.top_groups[0])) entity = Entity(Vector(10, 10), Vector(10, 10), EntityType.LARGE_BOULDER) batch = pyglet.graphics.Batch() entity.render(game_state, batch) self.assertEqual(0, len(batch.top_groups))
def test_check_for_entities(self): game_state = GameState() game_state.window_size = Vector(100, 100) building = Drill(Vector(), Vector(10, 10)) result = building.check_for_entities(game_state) self.assertEqual(False, result) game_state = GameState() game_state.window_size = Vector(100, 100) game_state.entity_manager.entities = [ Entity(Vector(), Vector(10, 10), EntityType.LARGE_BOULDER) ] building = Drill(Vector(), Vector(10, 10)) result = building.check_for_entities(game_state) self.assertEqual(True, result) self.assertEqual(5, building.animation_speed) self.assertEqual(99, game_state.entity_manager.entities[0].health)
def test_take_damage(self): entity = Entity(Vector(), Vector(), EntityType.LARGE_BOULDER) entity.take_damage(10) self.assertEqual(90, entity.health)