From: Cefn Hoile Date: Mon, 19 Feb 2018 14:06:02 +0000 (+0000) Subject: Coverage for switch_to_x() methods. Pull-up and pull-down. X-Git-Tag: 0.1.0~4^2~82 X-Git-Url: https://git.ayoreis.com/Adafruit_Blinka-hackapet.git/commitdiff_plain/5d8a33cce7bb6ad4034cb754c55b8057ac14985b Coverage for switch_to_x() methods. Pull-up and pull-down. --- diff --git a/python/testing/implementation/all/digitalio.py b/python/testing/implementation/all/digitalio.py index 85ffbf0..13cfaa5 100644 --- a/python/testing/implementation/all/digitalio.py +++ b/python/testing/implementation/all/digitalio.py @@ -1,29 +1,75 @@ import unittest -from testing import yes_no -from testing.board import led_pin,default_pin +from testing import yes_no, await_true +from testing.board import led_pin, default_pin +import digitalio +from digitalio import * # TODO refactor below for wildcard import -class TestDigitalInOut(unittest.TestCase): +class TestDigitalInOut(unittest.TestCase): def test_default(self): - import digitalio - """Check that a DigitalInOut is input with no pull when constructed""" + """DigitalInOut is input with no pull when constructed""" + with digitalio.DigitalInOut(default_pin) as dio: + self.assertEqual(dio.direction, digitalio.Direction.INPUT) + self.assertEqual(dio.pull, None) + + def test_switch_to_output(self): + """Default configuration of switch_to_output is respected""" with digitalio.DigitalInOut(default_pin) as dio: + dio.switch_to_output() + self.assertEqual(dio.direction, digitalio.Direction.OUTPUT) + self.assertEqual(dio.value, 0) + self.assertEqual(dio.drive_mode, digitalio.DriveMode.PUSH_PULL) + + def test_switch_to_input(self): + """Default configuration of switch_to_input is respected""" + with digitalio.DigitalInOut(default_pin) as dio: + dio.switch_to_output() # starts as input anyway + dio.switch_to_input() self.assertEqual(dio.direction, digitalio.Direction.INPUT) self.assertEqual(dio.pull, None) +class TestDigitalInOutInteractive(unittest.TestCase): + def test_blink(self): - import digitalio - from agnostic import time + """LED blinks when proper attributes set""" + from agnostic import sleep self.assertTrue(yes_no("Is LED wired to {}".format(led_pin))) with digitalio.DigitalInOut(led_pin) as led: led.direction = digitalio.Direction.OUTPUT # should now be OUT, PUSH_PULL, value=0, and LED should light self.assertTrue(yes_no("Is LED lit")) - for count in range(3): + for count in range(2): led.value = True - time.sleep(1.0) + sleep(0.5) led.value = False - time.sleep(1.0) - self.assertTrue(yes_no("Did LED wink thrice")) + sleep(0.5) + self.assertTrue(yes_no("Did LED wink twice")) + + def test_button_pull_up(self): + """Pull-up button configured and detected""" + if yes_no("Is Button wired to {} to GND".format(default_pin)): + with digitalio.DigitalInOut(default_pin) as button: + button.direction = digitalio.Direction.INPUT + try: + button.pull = digitalio.Pull.UP + except NotImplementedError as e: + print(e) + return + self.assertTrue(button.value == 1) + self.assertTrue(await_true("button pressed", lambda: button.value == 0)) + + def test_button_pull_down(self): + """Pull-down button configured and detected""" + if(yes_no("Is Button wired from {} to VCC".format(default_pin))): + with digitalio.DigitalInOut(default_pin) as button: + button.direction = digitalio.Direction.INPUT + try: + button.pull = digitalio.Pull.DOWN + except NotImplementedError as e: + print(e) + return + self.assertTrue(button.value == 0) + self.assertTrue(await_true("button pressed", lambda: button.value == 1)) +