mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-09-01 21:53:42 +08:00
70 lines
2.5 KiB
Python
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
|