import unittest
|
|
|
|
|
|
class TestEnum(unittest.TestCase):
|
|
"""
|
|
Verifies the repl() and str() behaviour of an example Enum
|
|
Enums represent configuration values such as digitalio.Direction, digitalio.Pull etc.
|
|
"""
|
|
|
|
def setUp(self):
|
|
"""Create an example Enum, mocking __module__ and __qualname__"""
|
|
import adafruit_blinka
|
|
class Cls(adafruit_blinka.Enum):
|
|
pass
|
|
Cls.one = Cls()
|
|
Cls.two = Cls()
|
|
# class refs would be implicitly populated correctly in a real module
|
|
Cls.__module__ = "ho.hum"
|
|
Cls.__qualname__ = "Example"
|
|
self.Cls = Cls
|
|
|
|
|
|
def test_iteritems(self):
|
|
"""A subtype of Enum can list all attributes of its own type"""
|
|
items = list(self.Cls.iteritems())
|
|
self.assertEqual( items, [("one",self.Cls.one),("two",self.Cls.two),])
|
|
|
|
|
|
def test_repr(self):
|
|
"""A repr() call on an Enum gives its fully-qualified name"""
|
|
name = "one"
|
|
actual = repr(getattr(self.Cls, name))
|
|
expected = "{}.{}.{}".format(self.Cls.__module__, self.Cls.__qualname__, name)
|
|
self.assertEqual( actual, expected)
|
|
|
|
|
|
def test_str(self):
|
|
"""A str() call on an Enum performs the same as repr()"""
|
|
self.assertEqual(str(self.Cls.one), repr(self.Cls.one))
|
|
|
|
class TestDigitalInOut(unittest.TestCase):
|
|
|
|
|
|
def test_context_manager(self):
|
|
import digitalio
|
|
from testing.board import default_pin
|
|
"""Deinitialisation is triggered by __exit__() and should dispose machine.pin reference"""
|
|
dio = digitalio.DigitalInOut(default_pin)
|
|
self.assertIsNotNone(dio._pin)
|
|
with dio:
|
|
pass
|
|
self.assertIsNone(dio._pin)
|