Пример #1
0
    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)
Пример #2
0
    def test_mouse_click_handler(self):
        tile_map = GameTileMap()
        click = MouseClick()
        click.position = Vector(1, 1)
        click.button = 0
        actual = tile_map.mouse_click_handler(None, click)
        self.assertFalse(actual)

        tile_map = GameTileMap()
        click = MouseClick()
        click.position = Vector(1, 1)
        click.button = 1
        actual = tile_map.mouse_click_handler(None, click)
        self.assertTrue(actual)
        self.assertTrue(tile_map.tiles[(0, 0)].highlighted)

        actual = tile_map.mouse_click_handler(None, click)
        self.assertTrue(actual)
        self.assertFalse(tile_map.tiles[(0, 0)].highlighted)

        tile_map = GameTileMap()
        tile_map.tiles[(0, 0)].tile_type = TileType.PATH
        click = MouseClick()
        click.position = Vector(1, 1)
        click.button = 1
        actual = tile_map.mouse_click_handler(None, click)
        self.assertTrue(actual)
        self.assertFalse(tile_map.tiles[(0, 0)].highlighted)
Пример #3
0
    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))
Пример #4
0
 def test_eq(self):
     position = Vector()
     size = Vector()
     tile_type = TileType.BUILDING_GROUND
     tile = Tile(position, size, tile_type)
     self.assertEqual(tile, tile)
     self.assertNotEqual("", tile)
    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))
Пример #6
0
    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)
Пример #7
0
    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)
Пример #8
0
 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))
Пример #10
0
    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)
Пример #11
0
    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)
Пример #12
0
    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)
Пример #13
0
 def test_shoot(self):
     building_manager = BuildingManager()
     world_position = Vector()
     direction = Vector(1, 0)
     building_manager.shoot(world_position, direction)
     self.assertEqual(1, len(building_manager.bullets))
     bullet = building_manager.bullets[0]
     self.assertEqual(world_position, bullet.position)
     self.assertEqual(direction * 5, bullet.velocity)
Пример #14
0
    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))
Пример #15
0
    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))
Пример #16
0
    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))
Пример #17
0
    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))
Пример #18
0
    def test_is_clicked(self):
        click = MouseClick()
        click.position = Vector(1, 1)

        input_component = Input(Vector(0, 10), Vector(10, 10))
        input_component.is_clicked(click)
        self.assertTrue(input_component.has_focus)

        input_component = Input(Vector(), Vector(10, 10))
        input_component.is_clicked(click)
        self.assertFalse(input_component.has_focus)
Пример #19
0
    def test_is_clicked(self):
        click = MouseClick()
        click.position = Vector(1, 1)

        highlight_component = HighlightableLabel("", Vector(0, 10),
                                                 Vector(10, 10))
        highlight_component.is_clicked(click)
        self.assertTrue(highlight_component.is_highlighted)

        highlight_component = HighlightableLabel("", Vector(), Vector(10, 10))
        highlight_component.is_clicked(click)
        self.assertFalse(highlight_component.is_highlighted)
Пример #20
0
    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))
Пример #21
0
    def test_init(self):
        vec = Vector()
        self.assertEqual(0, vec.x)
        self.assertEqual(0, vec.y)

        vec = Vector(1, 2)
        self.assertEqual(1, vec.x)
        self.assertEqual(2, vec.y)

        vec = Vector(point=(1, 2))
        self.assertEqual(1, vec.x)
        self.assertEqual(2, vec.y)
Пример #22
0
    def test_length(self):
        vec = Vector()
        self.assertEqual(0, vec.length())

        vec = Vector(2, 0)
        self.assertEqual(2, vec.length())

        vec = Vector(3, 4)
        self.assertEqual(5, vec.length())
Пример #23
0
    def test_render(self):
        was_called = []

        def dummy():
            was_called.append(0)

        text_component = Label("Hello", Vector(), Vector())
        text_component._label.draw = dummy
        text_component.render(Vector())
        self.assertEqual(1, len(was_called))

        text_component.visible = False
        text_component.render(Vector())
        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))
Пример #25
0
    def test_generate_tiles(self):
        tile_size = Vector(100, 100)

        def tile(x, y):
            return Tile(Vector(x, y), tile_size, TileType.BUILDING_GROUND)

        expected = {
            (0, 0): tile(0, 0),
            (1, 0): tile(1, 0),
            (0, 1): tile(0, 1),
            (1, 1): tile(1, 1)
        }
        max_tiles = Vector(2, 2)
        actual = TileMap.generate_tiles(max_tiles, tile_size)

        self.assertEqual(expected, actual)
Пример #26
0
    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()))
Пример #27
0
 def test_mouse_click_handler_not_on_map(self):
     tile_map = TileMap()
     click = MouseClick()
     click.position = Vector(-1, -1)
     actual = tile_map.mouse_click_handler(None, click)
     expected = False
     self.assertEqual(expected, actual)
Пример #28
0
 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)
Пример #29
0
    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))
Пример #30
0
    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))