import unittest from utils.timed_phase_enum import TimedPhaseEnum class MyEnum(TimedPhaseEnum): RED = 1 GREEN = 2 BLUE = 3 class BakeOvenSteps(TimedPhaseEnum): IDLE = ('IDLE' , float('inf')) DETECTION = ('DETECTION', 0.2) OPEN_DOORS = ('OPEN_DOORS', 1.0) SLIDE_ENTER = ('SLIDE_ENTER', 0.5) CLOSE_DOORS = ('CLOSE_DOORS', 1.0) BAKE = ('BAKE', 5.0) OPEN_DOORS_EXIT = ('OPEN_DOORS_EXIT', 1.0) SLIDE_EXIT = ('SLIDE_EXIT', 0.5) CLOSE_DOORS_EXIT = ('CLOSE_DOORS_EXIT', 1.0) AWAIT_PICKUP = ('AWAIT_PICKUP', float('inf')) class TestColorEnum(unittest.TestCase): def test_enum_baseline(self): color = MyEnum.RED self.assertEqual(color, MyEnum.RED) self.assertEqual(color.value, 1) def test_incremental_enum(self): color = MyEnum.RED self.assertEqual(color, MyEnum.RED) color = color.next() self.assertEqual(color, MyEnum.GREEN) color = color.next() self.assertEqual(color, MyEnum.BLUE) def test_bake_oven_steps_enum(self): step = BakeOvenSteps.IDLE self.assertEqual(step, BakeOvenSteps.IDLE) step = step.next() self.assertEqual(step, BakeOvenSteps.DETECTION) step = step.next() self.assertEqual(step, BakeOvenSteps.OPEN_DOORS) step = step.next() self.assertEqual(step, BakeOvenSteps.SLIDE_ENTER) step = step.next() self.assertEqual(step, BakeOvenSteps.CLOSE_DOORS) step = step.next() self.assertEqual(step, BakeOvenSteps.BAKE) step = step.next() self.assertEqual(step, BakeOvenSteps.OPEN_DOORS_EXIT) step = step.next() self.assertEqual(step, BakeOvenSteps.SLIDE_EXIT) step = step.next() self.assertEqual(step, BakeOvenSteps.CLOSE_DOORS_EXIT) step = step.next() self.assertEqual(step, BakeOvenSteps.AWAIT_PICKUP) step = step.next() self.assertEqual(step, BakeOvenSteps.IDLE) def test_bake_oven_steps_enum_timing(self): step = BakeOvenSteps.IDLE self.assertEqual(step.timing, float('inf')) step = BakeOvenSteps.BAKE self.assertEqual(step.timing, 5.0) if __name__ == '__main__': unittest.main()