piker/tests/test_dpi_font.py

37 lines
808 B
Python
Raw Normal View History

2025-12-08 20:29:56 +00:00
import pytest
from piker.ui._style import DpiAwareFont
2025-12-09 03:22:31 +00:00
class MockScreen:
2025-12-08 20:29:56 +00:00
def __init__(self, pdpi, ldpi, name="MockScreen"):
self._pdpi = pdpi
self._ldpi = ldpi
self._name = name
def physicalDotsPerInch(self):
2025-12-09 03:22:31 +00:00
return self._pdpi
2025-12-08 20:29:56 +00:00
def logicalDotsPerInch(self):
2025-12-09 03:22:31 +00:00
return self._ldpi
2025-12-08 20:29:56 +00:00
def name(self):
2025-12-09 03:22:31 +00:00
return self._name
2025-12-08 20:29:56 +00:00
@pytest.mark.parametrize(
"pdpi, ldpi, expected_px",
2025-12-08 20:29:56 +00:00
[
(96, 96, 9), # normal DPI
(169, 96, 15), # HiDPI
(120, 96, 10), # mid-DPI
2025-12-08 20:29:56 +00:00
]
)
def test_font_px_size(pdpi, ldpi, expected_px):
2025-12-08 20:29:56 +00:00
font = DpiAwareFont()
font.configure_to_dpi(screen=MockScreen(pdpi, ldpi))
2025-12-08 20:29:56 +00:00
px = font.px_size
print(f"{pdpi}x{ldpi} DPI -> Computed pixel size: {px}")
2025-12-09 03:22:31 +00:00
assert px == expected_px