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:
2020-06-11 16:39:51 +00:00
parent cdf0f4ffc9
commit 573504547c
9 changed files with 260 additions and 65 deletions

View File

@@ -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)