from __future__ import annotations import sys import types import unittest from pathlib import Path sys.path.insert(0, str(Path(__file__).resolve().parents[1] / "src")) dearpygui = types.ModuleType("dearpygui") dearpygui_dearpygui = types.ModuleType("dearpygui.dearpygui") sys.modules.setdefault("dearpygui", dearpygui) sys.modules.setdefault("dearpygui.dearpygui", dearpygui_dearpygui) sys.modules.setdefault("dpg_gauges", types.ModuleType("dpg_gauges")) from dynalab.ui import windows class LoadingLayoutTests(unittest.TestCase): def test_center_loading_content_positions_logo_and_bottom_text(self) -> None: calls: list[tuple[str, str, object]] = [] windows.dpg.does_item_exist = lambda tag: tag == "loading_window" windows.dpg.get_viewport_client_width = lambda: 600 windows.dpg.get_viewport_client_height = lambda: 400 windows.dpg.set_item_width = lambda tag, width: calls.append( ("width", tag, width) ) windows.dpg.set_item_height = lambda tag, height: calls.append( ("height", tag, height) ) windows.dpg.set_item_pos = lambda tag, pos: calls.append(("pos", tag, pos)) windows.dpg.get_item_rect_size = lambda tag: { "loading_logo": (300, 100), "loading_text": (100, 20), }[tag] windows.center_loading_content() self.assertIn(("pos", "loading_logo_group", [150, 150]), calls) self.assertIn(("pos", "loading_text_row", [0, 356]), calls) self.assertIn(("width", "loading_text_left_spacer", 250), calls) self.assertNotIn( "loading_text", [tag for call_type, tag, _ in calls if call_type == "pos"], ) def test_loading_layout_handles_text_wider_than_logo(self) -> None: logo_pos, text_row_pos, text_spacer_width = windows._loading_content_layout( viewport_size=(600, 400), logo_size=(120, 50), text_size=(200, 20), ) self.assertEqual(logo_pos, [240, 175]) self.assertEqual(text_row_pos, [0, 356]) self.assertEqual(text_spacer_width, 200) if __name__ == "__main__": unittest.main()