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