bpo-35899: Support of empty and weird strings by Enum by matrixise · Pull Request #11840 · python/cpython
Building on @tirkarthi's comment, I'd like to offer alternative tests that would test both empty and "weird" strings while also aligning more with the existing unittest layout in test_enum.py. I propose the following unittest functions to be entered starting at line 762 in the original test_enum.py file:
def test_programmatic_function_string_list_with_empty_string(self):
SummerMonth = Enum('SummerMonth', ['june', 'july', ''])
lst = list(SummerMonth)
self.assertEqual(len(lst), len(SummerMonth))
self.assertEqual(len(SummerMonth), 3, SummerMonth)
self.assertEqual(
[SummerMonth.june, SummerMonth.july, getattr(SummerMonth, '')],
lst
)
for i, month in enumerate(['june', 'july', ''], 1):
e = SummerMonth(i)
self.assertEqual(int(e.value), i)
self.assertNotEqual(e, i)
self.assertEqual(e.name, month)
self.assertIn(e, SummerMonth)
self.assertIs(type(e), SummerMonth)
def test_programmatic_function_string_list_with_weird_string(self):
SummerMonth = Enum('SummerMonth', ['june', 'july', '!'])
lst = list(SummerMonth)
self.assertEqual(len(lst), len(SummerMonth))
self.assertEqual(len(SummerMonth), 3, SummerMonth)
self.assertEqual(
[SummerMonth.june, SummerMonth.july, getattr(SummerMonth, '!')],
lst
)
for i, month in enumerate('june july !'.split(), 1):
e = SummerMonth(i)
self.assertEqual(int(e.value), i)
self.assertNotEqual(e, i)
self.assertEqual(e.name, month)
self.assertIn(e, SummerMonth)
self.assertIs(type(e), SummerMonth)