]> Repositories - Adafruit_Blinka-hackapet.git/commitdiff
Coverage for switch_to_x() methods. Pull-up and pull-down.
authorCefn Hoile <github.com@cefn.com>
Mon, 19 Feb 2018 14:06:02 +0000 (14:06 +0000)
committerCefn Hoile <github.com@cefn.com>
Mon, 19 Feb 2018 14:06:02 +0000 (14:06 +0000)
python/testing/implementation/all/digitalio.py

index 85ffbf03f8c6816b056c9079343dec46555d43c7..13cfaa516a461c027383e681bd440de57e201692 100644 (file)
@@ -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))
+