]> Repositories - Adafruit_Blinka-hackapet.git/blob - test/src/testing/adafruit_blinka.py
Merge pull request #342 from makermelissa/master
[Adafruit_Blinka-hackapet.git] / test / src / testing / adafruit_blinka.py
1 import unittest
2
3
4 class TestEnum(unittest.TestCase):
5     """
6     Verifies the repl() and str() behaviour of an example Enum
7     Enums represent configuration values such as digitalio.Direction, digitalio.Pull etc.
8     """
9
10     def setUp(self):
11         """Create an example Enum, mocking __module__ and __qualname__"""
12         import adafruit_blinka
13
14         class Cls(adafruit_blinka.Enum):
15             pass
16
17         Cls.one = Cls()
18         Cls.two = Cls()
19         # class refs would be implicitly populated correctly in a real module
20         Cls.__module__ = "ho.hum"
21         Cls.__qualname__ = "Example"
22         self.Cls = Cls
23
24     def test_iteritems(self):
25         """A subtype of Enum can list all attributes of its own type"""
26         items = list(self.Cls.iteritems())
27         self.assertEqual(
28             items,
29             [
30                 ("one", self.Cls.one),
31                 ("two", self.Cls.two),
32             ],
33         )
34
35     def test_repr(self):
36         """A repr() call on an Enum gives its fully-qualified name"""
37         name = "one"
38         actual = repr(getattr(self.Cls, name))
39         expected = "{}.{}.{}".format(self.Cls.__module__, self.Cls.__qualname__, name)
40         self.assertEqual(actual, expected)
41
42     def test_str(self):
43         """A str() call on an Enum performs the same as repr()"""
44         self.assertEqual(str(self.Cls.one), repr(self.Cls.one))
45
46
47 class TestDigitalInOut(unittest.TestCase):
48     def test_context_manager(self):
49         import digitalio
50         from testing.board import default_pin
51
52         """Deinitialisation is triggered by __exit__() and should dispose machine.pin reference"""
53         dio = digitalio.DigitalInOut(default_pin)
54         self.assertIsNotNone(dio._pin)
55         with dio:
56             pass
57         self.assertIsNone(dio._pin)