def test_set_sprite_to_monitor(self, _init_pygame, default_ui_manager): healthy_sprite = HealthySprite() health_bar = UIScreenSpaceHealthBar(relative_rect=pygame.Rect(100, 100, 150, 30), sprite_to_monitor=None, manager=default_ui_manager) health_bar.set_sprite_to_monitor(healthy_sprite)
def test_set_sprite_to_monitor_no_current_health(self, _init_pygame, default_ui_manager): healthy_sprite = HealthySpriteNoCurrentHealth() health_bar = UIScreenSpaceHealthBar(relative_rect=pygame.Rect(100, 100, 150, 30), sprite_to_monitor=None, manager=default_ui_manager) with pytest.raises(AttributeError, match="Sprite does not have current_health attribute"): health_bar.set_sprite_to_monitor(healthy_sprite)
def test_update(self, _init_pygame, default_ui_manager): healthy_sprite = HealthySprite() health_bar = UIScreenSpaceHealthBar(relative_rect=pygame.Rect(100, 100, 150, 30), sprite_to_monitor=healthy_sprite, manager=default_ui_manager) healthy_sprite.current_health = 10 health_bar.update(0.01) assert health_bar.image is not None
def test_hide(self, _init_pygame, default_ui_manager, _display_surface_return_none): healthy_sprite = HealthySprite() health_bar = UIScreenSpaceHealthBar(relative_rect=pygame.Rect(100, 100, 150, 30), sprite_to_monitor=healthy_sprite, manager=default_ui_manager) assert health_bar.visible == 1 health_bar.hide() assert health_bar.visible == 0
def test_set_relative_position(self, _init_pygame, default_ui_manager): healthy_sprite = HealthySprite() test_container = UIContainer(relative_rect=pygame.Rect(50, 50, 300, 250), manager=default_ui_manager) screen_space_health_bar = UIScreenSpaceHealthBar(relative_rect=pygame.Rect(100, 100, 150, 30), sprite_to_monitor=healthy_sprite, container=test_container, manager=default_ui_manager) screen_space_health_bar.set_relative_position((50.0, 30.0)) assert screen_space_health_bar.rect.topleft == (100, 80)
def test_set_dimensions(self, _init_pygame, default_ui_manager): healthy_sprite = HealthySprite() test_container = UIContainer(relative_rect=pygame.Rect(50, 50, 300, 250), manager=default_ui_manager) health_bar = UIScreenSpaceHealthBar(relative_rect=pygame.Rect(100, 100, 150, 30), sprite_to_monitor=healthy_sprite, container=test_container, manager=default_ui_manager) health_bar.set_dimensions((250.0, 60.0)) assert health_bar.drawable_shape.containing_rect.size == (250, 60) assert health_bar.rect.size == (250, 60) assert health_bar.relative_rect.size == (250, 60)
def test_rebuild_from_theme_data_bad_values(self, _init_pygame): manager = UIManager((800, 600), os.path.join("tests", "data", "themes", "ui_screen_health_bar_bad_values.json")) healthy_sprite = HealthySprite() health_bar = UIScreenSpaceHealthBar(relative_rect=pygame.Rect(100, 100, 150, 30), sprite_to_monitor=healthy_sprite, manager=manager) assert health_bar.image is not None
def test_creation_sprite_no_capacity(self, _init_pygame, default_ui_manager): healthy_sprite = HealthySpriteNoCapacity() with pytest.raises( AttributeError, match="Sprite does not have health_capacity attribute"): UIScreenSpaceHealthBar(relative_rect=pygame.Rect( 100, 100, 150, 30), sprite_to_monitor=healthy_sprite, manager=default_ui_manager)
def test_show_hide_rendering(self, _init_pygame, default_ui_manager, _display_surface_return_none): resolution = (400, 400) empty_surface = pygame.Surface(resolution) empty_surface.fill(pygame.Color(0, 0, 0)) surface = empty_surface.copy() manager = UIManager(resolution) healthy_sprite = HealthySprite() health_bar = UIScreenSpaceHealthBar(relative_rect=pygame.Rect( 25, 25, 375, 150), sprite_to_monitor=healthy_sprite, manager=manager, visible=0) manager.update(0.01) manager.draw_ui(surface) assert compare_surfaces(empty_surface, surface) surface.fill(pygame.Color(0, 0, 0)) health_bar.show() manager.update(0.01) manager.draw_ui(surface) assert not compare_surfaces(empty_surface, surface) surface.fill(pygame.Color(0, 0, 0)) health_bar.hide() manager.update(0.01) manager.draw_ui(surface) assert compare_surfaces(empty_surface, surface)
def test_creation_no_sprite(self, _init_pygame, default_ui_manager): UIScreenSpaceHealthBar(relative_rect=pygame.Rect(100, 100, 150, 30), sprite_to_monitor=None, manager=default_ui_manager)
def test_creation_with_sprite(self, _init_pygame, default_ui_manager): healthy_sprite = HealthySprite() UIScreenSpaceHealthBar(relative_rect=pygame.Rect(100, 100, 150, 30), sprite_to_monitor=healthy_sprite, manager=default_ui_manager)
def __init__(self, rect, ui_manager): element_ids = ['everything_window'] super().__init__(rect, ui_manager, element_ids=element_ids) # create shadow shadow_padding = (2, 2) self.image = self.ui_manager.get_shadow(self.rect.size) self.image.fill(self.ui_manager.get_theme().get_colour(self.object_ids, self.element_ids, 'dark_bg'), pygame.Rect(shadow_padding, (self.rect.width - shadow_padding[0] * 2, self.rect.height - shadow_padding[1] * 2) )) self.get_container().relative_rect.width = self.rect.width - shadow_padding[0] * 2 self.get_container().relative_rect.height = self.rect.height - shadow_padding[1] * 2 self.get_container().relative_rect.x = self.get_container().relative_rect.x + shadow_padding[0] self.get_container().relative_rect.y = self.get_container().relative_rect.y + shadow_padding[1] self.get_container().update_containing_rect_position() self.close_window_button = UIButton(relative_rect=pygame.Rect((self.get_container().rect.width-20, 0), (20, 20)), text='╳', manager=ui_manager, container=self.get_container(), parent_element=self ) self.menu_bar = UIButton(relative_rect=pygame.Rect((0, 0), (self.get_container().rect.width-20, 20)), text='Everything Container', manager=ui_manager, container=self.get_container(), parent_element=self, object_id='#message_window_title_bar' ) self.menu_bar.set_hold_range((100, 100)) self.grabbed_window = False self.starting_grab_difference = (0, 0) self.test_slider = UIHorizontalSlider(pygame.Rect((int(self.rect.width / 2), int(self.rect.height * 0.70)), (240, 25)), 50.0, (0.0, 100.0), self.ui_manager, container=self.get_container(), parent_element=self) self.slider_label = UILabel(pygame.Rect((int(self.rect.width / 2) + 250, int(self.rect.height * 0.70)), (27, 25)), str(int(self.test_slider.get_current_value())), self.ui_manager, container=self.get_container(), parent_element=self) self.test_text_entry = UITextEntryLine(pygame.Rect((int(self.rect.width / 2), int(self.rect.height * 0.50)), (200, -1)), self.ui_manager, container=self.get_container(), parent_element=self) self.test_text_entry.set_forbidden_characters('numbers') current_resolution_string = 'Item 1' self.test_drop_down_menu = UIDropDownMenu(['Item 1', 'Item 2', 'Item 3', 'Item 4', 'Item 5', 'Item 6'], current_resolution_string, pygame.Rect((int(self.rect.width / 2), int(self.rect.height * 0.3)), (200, 25)), self.ui_manager, container=self.get_container(), parent_element=self) self.health_bar = UIScreenSpaceHealthBar(pygame.Rect((int(self.rect.width / 9), int(self.rect.height * 0.7)), (200, 20)), self.ui_manager, container=self.get_container(), parent_element=self) loaded_test_image = pygame.image.load('data/images/splat.png').convert_alpha() self.test_image = UIImage(pygame.Rect((int(self.rect.width / 9), int(self.rect.height * 0.3)), loaded_test_image.get_rect().size), loaded_test_image, self.ui_manager, container=self.get_container(), parent_element=self) self.is_selected = False