diff --git a/test/netutils/test_enum.py b/test/netutils/test_enum.py new file mode 100644 index 0000000000..3d7cdd4e33 --- /dev/null +++ b/test/netutils/test_enum.py @@ -0,0 +1,37 @@ +"""Verify that NetUtils' enums work correctly with all supported Python versions.""" + +import pickle +import unittest +from enum import Enum +from typing import Type + +from NetUtils import ClientStatus, HintStatus, SlotType +from Utils import restricted_loads + + +class Base: + class DataEnumTest(unittest.TestCase): + type: Type[Enum] + value: Enum + + def test_unpickle(self) -> None: + """Tests that enums used in multidata or multisave can be pickled and unpickled.""" + pickled = pickle.dumps(self.value) + unpickled = restricted_loads(pickled) + self.assertEqual(unpickled, self.value) + self.assertIsInstance(unpickled, self.type) + + +class HintStatusTest(Base.DataEnumTest): + type = HintStatus + value = HintStatus.HINT_AVOID + + +class ClientStatusTest(Base.DataEnumTest): + type = ClientStatus + value = ClientStatus.CLIENT_GOAL + + +class SlotTypeTest(Base.DataEnumTest): + type = SlotType + value = SlotType.player