def test_render_highlight(self): game_state = GameState() game_state.window_size = Vector(100, 100) was_called = [] def dummy(*args): was_called.append(0) batch = pyglet.graphics.Batch() batch.add = dummy position = Vector() size = Vector(10, 10) tile_type = TileType.BUILDING_GROUND tile = Tile(position, size, tile_type) tile.render_highlight(game_state, batch) self.assertEqual(4, len(was_called)) def dummy(*args): was_called.append(0) batch = pyglet.graphics.Batch() batch.add = dummy game_state = GameState() was_called.clear() position = Vector() size = Vector(10, 10) tile_type = TileType.BUILDING_GROUND tile = Tile(position, size, tile_type) tile.render_highlight(game_state, batch) self.assertEqual(0, len(was_called))
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_closest_tile_angle(self): game_state = GameState() building = Drill(Vector(1, 1), Vector(10, 10)) actual = building.closest_tile_angle(game_state) self.assertEqual(0, actual) game_state = GameState() game_state.tile_map.tiles[(1, 0)].tile_type = TileType.PATH actual = building.closest_tile_angle(game_state) self.assertEqual(0, actual) game_state = GameState() game_state.tile_map.tiles[(0, 1)].tile_type = TileType.PATH actual = building.closest_tile_angle(game_state) self.assertEqual(-90, actual) game_state = GameState() game_state.tile_map.tiles[(1, 2)].tile_type = TileType.PATH actual = building.closest_tile_angle(game_state) self.assertEqual(180, actual) game_state = GameState() game_state.tile_map.tiles[(2, 1)].tile_type = TileType.PATH actual = building.closest_tile_angle(game_state) self.assertEqual(90, actual)
def test_open(self): game_state = GameState() game_state.window_size = Vector(0, 500) dialog = Dialog(True) dialog.open(game_state) self.assertTrue(dialog.visible) self.assertEqual(300, dialog.position.y)
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_clean_up(self): game_state = GameState() game_state.clean_up() self.assertEqual(0, len(game_state.mouse_clicks)) self.assertEqual("", game_state.key_presses.text) self.assertEqual(False, game_state.key_presses.back_space)
def test_update_reset_animation_speed(self): game_state = GameState() game_state.window_size = Vector(100, 100) building = Drill(Vector(), Vector(10, 10)) building.animation_speed = 5 building.update(game_state) self.assertEqual(0, building.animation_speed)
def test_update_key_event_bottom_right(self): game_state = GameState() game_state.key_presses.down = True game_state.key_presses.right = True game_state.window_size = Vector(1280, 720) game_state.update() actual = game_state.world_offset self.assertEqual(Vector(95, 105), actual)
def test_update_key_event_top_left(self): game_state = GameState() game_state.key_presses.up = True game_state.key_presses.left = True game_state.window_size = Vector(1280, 720) game_state.update() actual = game_state.world_offset self.assertEqual(Vector(105, 95), actual)
def test_index_to_world_space(self): game_state = GameState() actual = game_state.index_to_world_space((0, 0)) self.assertEqual(Vector(0, 0), actual, str(actual)) actual = game_state.index_to_world_space((1, 0)) self.assertEqual(Vector(100, 0), actual, str(actual)) actual = game_state.index_to_world_space(Vector(1, 0)) self.assertEqual(Vector(100, 0), actual, str(actual))
def test_tick(self): def dummy(): return -1, -2 window = Object() window.get_size = dummy game_state = GameState() # noinspection PyTypeChecker game_state.tick(window) self.assertEqual(Vector(-1, -2), game_state.window_size)
def test_world_to_index_space(self): game_state = GameState() actual = game_state.world_to_index_space(Vector()) self.assertEqual((0, 0), actual, str(actual)) actual = game_state.world_to_index_space(Vector(100, 100)) self.assertEqual((1, 1), actual, str(actual)) actual = game_state.world_to_index_space(Vector(50, 50)) self.assertEqual((0, 0), actual, str(actual))
def test_update(self): game_state = GameState() game_state.tile_map.tiles[(0, 0)].tile_type = TileType.START game_state.tile_map.tiles[(1, 1)].tile_type = TileType.FINISH entity_manager = EditorEntityManager() entity_manager.spawn_timer = 0 game_state.entity_manager = entity_manager entity_manager.update(game_state) self.assertEqual(0, len(entity_manager.entities)) self.assertEqual(1, entity_manager.spawn_timer)
def test_render_no_label(self): game_state = GameState() game_state.window_size = Vector(100, 100) position = Vector(1, 1) size = Vector(10, 10) tile_type = TileType.BUILDING_GROUND tile = Tile(position, size, tile_type) batch = pyglet.graphics.Batch() tile.render_label(game_state, batch) self.assertEqual(0, len(batch.top_groups))
def test_process_clicks(self): game_state = GameState() game_state.mouse_clicks.append(MouseClick()) def false_processor(game_state, mouse_click): return False process_clicks(game_state, false_processor) self.assertEqual(1, len(game_state.mouse_clicks)) def offset_processor(game_state, mouse_click): self.assertEqual(Vector(-10, -10), mouse_click.position) return False process_clicks(game_state, offset_processor, map_to_world_space=False, offset=Vector(10, 10)) self.assertEqual(1, len(game_state.mouse_clicks)) def true_processor(game_state, mouse_click): return True process_clicks(game_state, true_processor) self.assertEqual(0, len(game_state.mouse_clicks))
def test_spawn_building(self): game_state = GameState() tile_index = (1, 0) building_manager = BuildingManager() building_manager.spawn_building(game_state, tile_index, BuildingType.LASER) self.assertEqual(1, len(building_manager.buildings)) self.assertEqual((1, 0), list(building_manager.buildings.keys())[0]) building = building_manager.buildings[(1, 0)] self.assertEqual(Vector(1, 0), building.position) self.assertEqual(Laser, type(building)) building_manager.spawn_building(game_state, tile_index, BuildingType.DRILL) self.assertEqual(Drill, type(building_manager.buildings[(1, 0)])) building_manager.spawn_building(game_state, tile_index, BuildingType.HAMMER) self.assertEqual(Hammer, type(building_manager.buildings[(1, 0)])) building_manager.spawn_building(game_state, tile_index, -1) self.assertEqual(Building, type(building_manager.buildings[(1, 0)])) building_manager = BuildingManager() building_manager.gold = 0 building_manager.spawn_building(game_state, tile_index, BuildingType.HAMMER) self.assertEqual(0, len(building_manager.buildings.keys()))
def test_render(self): game_state = GameState() game_state.init("./tower_defense/res") game_state.window_size = Vector(100, 100) building = Hammer(Vector(), Vector(10, 10)) batch = pyglet.graphics.Batch() building.render(game_state, batch) self.assertEqual(1, len(batch.top_groups)) self.assertEqual(pyglet.graphics.TextureGroup, type(batch.top_groups[0])) building = Hammer(Vector(20, 20), Vector(10, 10)) batch = pyglet.graphics.Batch() building.render(game_state, batch) self.assertEqual(0, len(batch.top_groups))
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_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_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_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_spawn_random_entity(self): game_state = GameState() game_state.tile_map.tiles[(0, 0)].tile_type = TileType.START game_state.tile_map.tiles[(1, 0)].tile_type = TileType.FINISH entity_manager = EntityManager() entity_manager.spawn_entity(game_state, EntityType.LARGE_BOULDER) self.assertEqual(1, len(entity_manager.entities)) self.assertEqual(Vector(50, 50), entity_manager.entities[0].position)
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_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_new(self): tile_map = TileMap() game_state = GameState() test_path = "new.map" size = Vector(5, 5) tile_map.new(game_state, test_path, size) self.assertEqual(25, len(tile_map.tiles)) self.assertEqual(test_path, tile_map.path) self.assertEqual(size, tile_map.max_tiles) os.remove(test_path)
def test_update(self): game_state = GameState() bullet = Bullet(Vector(), Vector(10, 10), Vector(1, 1)) result = bullet.update(game_state) self.assertFalse(result) bullet = Bullet(Vector(), Vector(10, 10), Vector(-1, -1)) result = bullet.update(game_state) self.assertTrue(result)
def test_render(self): game_state = GameState() was_called = [] def dummy(*args): was_called.append(0) tile_map = EditorTileMap() tile_map.tiles[(0, 0)].render_arrow = dummy tile_map.render(game_state) self.assertEqual(1, len(was_called))
def test_open(self): game_state = GameState() was_called = [] def dummy(*args): was_called.append(0) return 0, 0 load_map_dialog = LoadMapDialog() load_map_dialog.refresh_maps = dummy load_map_dialog.open(game_state) self.assertEqual(1, len(was_called))
def test_update(self): game_state = GameState() game_state.key_presses.up = True game_state.key_presses.down = True game_state.key_presses.left = True game_state.key_presses.right = True dialog = Dialog(True) dialog.update(game_state) self.assertFalse(game_state.key_presses.up) self.assertFalse(game_state.key_presses.down) self.assertFalse(game_state.key_presses.left) self.assertFalse(game_state.key_presses.right)
def test_render(self): game_state = GameState() was_called = [] def dummy(*args): was_called.append(0) tile_map = GameTileMap() tile_map.tiles[(0, 0)].render_highlight = dummy tile_map.tiles[(0, 0)].highlighted = True tile_map.render(game_state) self.assertEqual(1, len(was_called))