Add button tests
This is implemented by connecting the DTR pin of the serial device to the BTN_UP pin of the watch. Also, make it possible to flash different applications with the Makefile. Resolves #4
This commit is contained in:
@@ -150,7 +150,7 @@ def test_periodic_alarms(context_factory, logger):
|
||||
def test_clock(context_factory, logger):
|
||||
serial_dev, jlink = context_factory("Test/clock.bin")
|
||||
EXPECTED_RUNTIME = 10
|
||||
TOLERANCE = 0.1
|
||||
TOLERANCE = 0.2
|
||||
|
||||
serial_dev.timeout = EXPECTED_RUNTIME * 1.2
|
||||
|
||||
@@ -297,6 +297,52 @@ def test_lptim(context_factory, logger):
|
||||
assert max_f < 51
|
||||
|
||||
|
||||
def test_button_slow(context_factory, logger):
|
||||
serial_dev, jlink = context_factory("Test/button.bin")
|
||||
serial_dev.timeout = 0.3
|
||||
ASSERTED = True
|
||||
|
||||
serial_dev.dtr = not ASSERTED
|
||||
while (line := serial_dev.readline()) is not None and len(line) > 0:
|
||||
pass
|
||||
|
||||
for _ in range(5):
|
||||
serial_dev.dtr = ASSERTED
|
||||
press_line = serial_dev.readline()
|
||||
serial_dev.dtr = not ASSERTED
|
||||
release_line = serial_dev.readline()
|
||||
assert press_line == b"up:pressed\r\n"
|
||||
assert release_line == b"up:released\r\n"
|
||||
|
||||
|
||||
def test_button_fast(context_factory, logger):
|
||||
serial_dev, jlink = context_factory("Test/button.bin")
|
||||
serial_dev.timeout = 0.3
|
||||
ASSERTED = True
|
||||
|
||||
serial_dev.dtr = not ASSERTED
|
||||
time.sleep(0.3)
|
||||
serial_dev.timeout = 0
|
||||
while (line := serial_dev.readline()) is not None and len(line) > 0:
|
||||
pass
|
||||
|
||||
for _ in range(25):
|
||||
serial_dev.dtr = ASSERTED
|
||||
time.sleep(0.075)
|
||||
serial_dev.dtr = not ASSERTED
|
||||
time.sleep(0.075)
|
||||
|
||||
serial_dev.timeout = 0.3
|
||||
for _ in range(25):
|
||||
press_line = serial_dev.readline()
|
||||
release_line = serial_dev.readline()
|
||||
assert press_line == b"up:pressed\r\n"
|
||||
assert release_line == b"up:released\r\n"
|
||||
|
||||
serial_dev.timeout = 0
|
||||
assert serial_dev.readline() == b""
|
||||
|
||||
|
||||
def main():
|
||||
pytest.main(sys.argv)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user