Files
StarPilot/system/ui/lib/tests/test_application.py
T
firestar5683 f63ee3375a Comover
2026-08-21 13:21:20 -05:00

70 lines
2.5 KiB
Python

from importlib.resources import as_file
from types import SimpleNamespace
from openpilot.system.ui.lib import application
def test_raylib_target_fps_limits_mici(monkeypatch):
monkeypatch.setattr(application, "OFFSCREEN", False)
monkeypatch.setattr(application, "DEVICE_TYPE", "mici")
assert application._raylib_target_fps(60) == 60
def test_raylib_target_fps_limits_other_devices(monkeypatch):
monkeypatch.setattr(application, "OFFSCREEN", False)
monkeypatch.setattr(application, "DEVICE_TYPE", "tici")
assert application._raylib_target_fps(60) == 60
def test_raylib_target_fps_disables_limit_for_offscreen(monkeypatch):
monkeypatch.setattr(application, "OFFSCREEN", True)
monkeypatch.setattr(application, "DEVICE_TYPE", "tici")
assert application._raylib_target_fps(60) == 0
def test_burn_in_shift_transitions_between_positions(monkeypatch):
app = object.__new__(application.GuiApplication)
app._burn_in_start_time = 100.0
monkeypatch.setattr(application, "BURN_IN_PREVENTION", True)
monkeypatch.setattr(application, "BURN_IN_SHIFT_INTERVAL", 10.0)
monkeypatch.setattr(application, "BURN_IN_SHIFT_PIXELS", 2)
monkeypatch.setattr(application, "BURN_IN_SHIFT_TRANSITION_SECONDS", 2.0)
assert app._burn_in_shift(108.0) == (0.0, 0.0)
midpoint = app._burn_in_shift(109.0)
assert midpoint == (-1.0, 0.0)
assert app._burn_in_shift(110.0) == (-2.0, 0.0)
def test_brand_font_assets_include_wordmark_glyphs():
with as_file(application.FONT_DIR.joinpath("como-heavy.fnt")) as font_path:
lines = font_path.read_text().splitlines()
glyphs = {}
for line in lines:
if not line.startswith("char id="):
continue
fields = dict(field.split("=", 1) for field in line.split() if "=" in field)
glyphs[int(fields["id"])] = (int(fields["width"]), int(fields["height"]))
for char in set("StarPilot"):
assert glyphs[ord(char)][0] > 0
assert glyphs[ord(char)][1] > 0
def test_brand_font_is_not_replaced_by_language_fallback(monkeypatch):
brand_font = SimpleNamespace(texture=SimpleNamespace(id=1))
unifont = SimpleNamespace(texture=SimpleNamespace(id=2))
monkeypatch.setattr(application.multilang, "requires_unifont", lambda: True)
monkeypatch.setattr(application.gui_app, "font", lambda weight: {
application.FontWeight.BRAND: brand_font,
application.FontWeight.UNIFONT: unifont,
}[weight])
assert application.font_fallback(brand_font) is brand_font
assert application.font_fallback(SimpleNamespace(texture=SimpleNamespace(id=3))) is unifont