1 # SPDX-FileCopyrightText: 2021 Melissa LeBlanc-Williams for Adafruit Industries
 
   3 # SPDX-License-Identifier: MIT
 
   7 class TestEnum(unittest.TestCase):
 
   9     Verifies the repl() and str() behaviour of an example Enum
 
  10     Enums represent configuration values such as digitalio.Direction, digitalio.Pull etc.
 
  14         """Create an example Enum, mocking __module__ and __qualname__"""
 
  15         import adafruit_blinka
 
  17         class Cls(adafruit_blinka.Enum):
 
  22         # class refs would be implicitly populated correctly in a real module
 
  23         Cls.__module__ = "ho.hum"
 
  24         Cls.__qualname__ = "Example"
 
  27     def test_iteritems(self):
 
  28         """A subtype of Enum can list all attributes of its own type"""
 
  29         items = list(self.Cls.iteritems())
 
  33                 ("one", self.Cls.one),
 
  34                 ("two", self.Cls.two),
 
  39         """A repr() call on an Enum gives its fully-qualified name"""
 
  41         actual = repr(getattr(self.Cls, name))
 
  42         expected = "{}.{}.{}".format(self.Cls.__module__, self.Cls.__qualname__, name)
 
  43         self.assertEqual(actual, expected)
 
  46         """A str() call on an Enum performs the same as repr()"""
 
  47         self.assertEqual(str(self.Cls.one), repr(self.Cls.one))
 
  50 class TestDigitalInOut(unittest.TestCase):
 
  51     def test_context_manager(self):
 
  53         from testing.board import default_pin
 
  55         """Deinitialisation is triggered by __exit__() and should dispose machine.pin reference"""
 
  56         dio = digitalio.DigitalInOut(default_pin)
 
  57         self.assertIsNotNone(dio._pin)
 
  60         self.assertIsNone(dio._pin)