Add Pico touch routing abstraction
This commit is contained in:
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user