]> Repositories - Adafruit_Blinka-hackapet.git/blobdiff - python/testing/implementation/all/digitalio.py
Reversed mistakenly committed tweak. Introduced conservative garbage collection to...
[Adafruit_Blinka-hackapet.git] / python / testing / implementation / all / digitalio.py
index 13cfaa516a461c027383e681bd440de57e201692..f68a7603010da918b16748eb70c102bd6988d2c5 100644 (file)
@@ -1,32 +1,30 @@
 import unittest
 from testing import yes_no, await_true
 import unittest
 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
-
+from testing.board import led_pin, default_pin, led_hardwired, led_inverted
+from digitalio import *
 
 class TestDigitalInOut(unittest.TestCase):
 
     def test_default(self):
         """DigitalInOut is input with no pull when constructed"""
 
 class TestDigitalInOut(unittest.TestCase):
 
     def test_default(self):
         """DigitalInOut is input with no pull when constructed"""
-        with digitalio.DigitalInOut(default_pin) as dio:
-            self.assertEqual(dio.direction, digitalio.Direction.INPUT)
+        with DigitalInOut(default_pin) as dio:
+            self.assertEqual(dio.direction, Direction.INPUT)
             self.assertEqual(dio.pull, None)
 
     def test_switch_to_output(self):
         """Default configuration of switch_to_output is respected"""
             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:
+        with DigitalInOut(default_pin) as dio:
             dio.switch_to_output()
             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)
+            self.assertEqual(dio.direction, Direction.OUTPUT)
+            self.assertEqual(dio.value, False)
+            self.assertEqual(dio.drive_mode, DriveMode.PUSH_PULL)
 
     def test_switch_to_input(self):
         """Default configuration of switch_to_input is respected"""
 
     def test_switch_to_input(self):
         """Default configuration of switch_to_input is respected"""
-        with digitalio.DigitalInOut(default_pin) as dio:
+        with DigitalInOut(default_pin) as dio:
             dio.switch_to_output() # starts as input anyway
             dio.switch_to_input()
             dio.switch_to_output() # starts as input anyway
             dio.switch_to_input()
-            self.assertEqual(dio.direction, digitalio.Direction.INPUT)
+            self.assertEqual(dio.direction, Direction.INPUT)
             self.assertEqual(dio.pull, None)
 
 
             self.assertEqual(dio.pull, None)
 
 
@@ -34,42 +32,49 @@ class TestDigitalInOutInteractive(unittest.TestCase):
 
     def test_blink(self):
         """LED blinks when proper attributes set"""
 
     def test_blink(self):
         """LED blinks when proper attributes set"""
+        print()
         from agnostic import sleep
         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
+        if not(led_hardwired) and not(yes_no("Is LED wired to {}".format(led_pin))):
+            return # test trivially passed
+        with DigitalInOut(led_pin) as led:
+            led.direction = Direction.OUTPUT
             # should now be OUT, PUSH_PULL, value=0, and LED should light
             # should now be OUT, PUSH_PULL, value=0, and LED should light
+            led.value = False if led_inverted else True
             self.assertTrue(yes_no("Is LED lit"))
             self.assertTrue(yes_no("Is LED lit"))
+            print("Winking LED...")
             for count in range(2):
             for count in range(2):
-                led.value = True
+                led.value = not(led.value)
                 sleep(0.5)
                 sleep(0.5)
-                led.value = False
+                led.value = not(led.value)
                 sleep(0.5)
             self.assertTrue(yes_no("Did LED wink twice"))
 
     def test_button_pull_up(self):
                 sleep(0.5)
             self.assertTrue(yes_no("Did LED wink twice"))
 
     def test_button_pull_up(self):
+        print()
         """Pull-up button configured and detected"""
         """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))
+        with DigitalInOut(default_pin) as button:
+            #button.direction = Direction.INPUT # implied
+            try:
+                button.pull = Pull.UP
+            except NotImplementedError as e:
+                print()
+                print(e)
+                return  # test trivially passed
+            if yes_no("Is Button wired from {} to GND".format(default_pin)):
+                self.assertTrue(button.value == True)
+                self.assertTrue(await_true("button pressed", lambda: button.value == False))
 
     def test_button_pull_down(self):
 
     def test_button_pull_down(self):
+        print()
         """Pull-down button configured and detected"""
         """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))
+        with DigitalInOut(default_pin) as button:
+            #button.direction = Direction.INPUT # implied
+            try:
+                button.pull = Pull.DOWN
+            except NotImplementedError as e:
+                print(e)
+                return  # test trivially passed
+            if (yes_no("Is Button wired from {} to VCC".format(default_pin))):
+                self.assertTrue(button.value == False)
+                self.assertTrue(await_true("button pressed", lambda: button.value == True))