Add Pico touch routing abstraction

This commit is contained in:
2026-06-03 02:48:30 -06:00
parent 2c7b090cfb
commit b5e8bf43fc
3 changed files with 113 additions and 0 deletions
+54
View File
@@ -668,3 +668,57 @@ def test_buzzer_updates_from_alarm_view():
assert buzzer.enabled is False
assert buzzer.pattern is None
def test_touch_controller_reads_event():
from hardware.touch import TouchController
class FakeTouchDevice:
def read(self):
return {"x": 100, "y": 200, "pressed": True}
controller = TouchController(FakeTouchDevice())
event = controller.read_event()
assert event.x == 100
assert event.y == 200
assert event.pressed is True
def test_touch_router_bottom_nav_changes_screen():
from hardware.touch import TouchEvent
from ui.touch_router import TouchRouter
screens = ScreenManager()
router = TouchRouter(screens)
handled = router.handle_touch(TouchEvent(200, 460, True))
assert handled is True
assert screens.current_screen == "power"
def test_touch_router_ignores_non_nav_touch():
from hardware.touch import TouchEvent
from ui.touch_router import TouchRouter
screens = ScreenManager()
router = TouchRouter(screens)
handled = router.handle_touch(TouchEvent(200, 200, True))
assert handled is False
assert screens.current_screen == "dashboard"
def test_touch_router_ignores_unpressed_event():
from hardware.touch import TouchEvent
from ui.touch_router import TouchRouter
screens = ScreenManager()
router = TouchRouter(screens)
handled = router.handle_touch(TouchEvent(200, 460, False))
assert handled is False
assert screens.current_screen == "dashboard"