Web based Jalousie control.

mc_unittests.py 5.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. import unittest
  2. import time
  3. from mc_control.mc_statemachine import mc_state_machine,\
  4. mc_event, mc_states
  5. class MotorControl_BaseUnitTest(unittest.TestCase):
  6. def setUp(self):
  7. Port_Up = 0
  8. Port_Down = 1
  9. self.sm = mc_state_machine(Port_Up, Port_Down, 3)
  10. self.delay=1
  11. def tearDown(self):
  12. self.sm.Stop()
  13. pass
  14. class MotorControl_UnitTest_IDLE(MotorControl_BaseUnitTest):
  15. def test_MotorDown(self):
  16. # state changed from idle over move down to down
  17. self.assertEqual(self.sm.current_state , mc_states.idle ,"Check State")
  18. self.sm.MailBox.put(mc_event.Down)
  19. time.sleep(self.sm.timeout_value-0.5)
  20. self.assertEqual(self.sm.current_state , mc_states.move_down ,"Check State")
  21. time.sleep(self.delay)
  22. self.assertEqual(self.sm.current_state , mc_states.state_down ,"Check State")
  23. def test_MotorUp(self):
  24. # state changed from idle over move down to down
  25. self.assertEqual(self.sm.current_state , mc_states.idle ,"Check State")
  26. self.sm.MailBox.put(mc_event.Up)
  27. time.sleep(self.sm.timeout_value-0.5)
  28. self.assertEqual(self.sm.current_state , mc_states.move_up ,"Check State")
  29. time.sleep(self.delay)
  30. self.assertEqual(self.sm.current_state , mc_states.state_up ,"Check State")
  31. def test_Motor_Up_and_Down(self):
  32. # move up and down
  33. self.assertEqual(self.sm.current_state , mc_states.idle ,"Check State")
  34. self.sm.MailBox.put(mc_event.Up)
  35. time.sleep(self.sm.timeout_value-0.5)
  36. self.assertEqual(self.sm.current_state , mc_states.move_up ,"Check State")
  37. time.sleep(self.delay)
  38. self.assertEqual(self.sm.current_state , mc_states.state_up ,"Check State")
  39. self.sm.MailBox.put(mc_event.Down)
  40. time.sleep(self.sm.timeout_value-0.5)
  41. self.assertEqual(self.sm.current_state , mc_states.move_down ,"Check State")
  42. time.sleep(self.delay)
  43. self.assertEqual(self.sm.current_state , mc_states.state_down ,"Check State")
  44. def test_Motor_Down_and_Up(self):
  45. # state changed from idle over move down to down
  46. self.assertEqual(self.sm.current_state , mc_states.idle ,"Check State")
  47. self.sm.MailBox.put(mc_event.Down)
  48. time.sleep(self.sm.timeout_value-0.5)
  49. self.assertEqual(self.sm.current_state , mc_states.move_down ,"Check State")
  50. time.sleep(self.delay)
  51. self.assertEqual(self.sm.current_state , mc_states.state_down ,"Check State")
  52. self.sm.MailBox.put(mc_event.Up)
  53. time.sleep(self.sm.timeout_value-0.5)
  54. self.assertEqual(self.sm.current_state , mc_states.move_up ,"Check State")
  55. time.sleep(self.delay)
  56. self.assertEqual(self.sm.current_state , mc_states.state_up ,"Check State")
  57. def test_Stop(self):
  58. # state changed from idle over move down to down
  59. self.assertEqual(self.sm.current_state , mc_states.idle ,"Check State")
  60. self.sm.MailBox.put(mc_event.Stop)
  61. time.sleep(self.delay)
  62. self.assertEqual(self.sm.current_state , mc_states.idle ,"Check State")
  63. class MotorControl_UnitTest_MoveUP(MotorControl_BaseUnitTest):
  64. def setUp(self):
  65. super().setUp()
  66. self.sm.MailBox.put(mc_event.Up)
  67. time.sleep(self.delay)
  68. def test_Stop(self):
  69. self.assertEqual(self.sm.current_state , mc_states.move_up ,"Check State")
  70. self.sm.MailBox.put(mc_event.Stop)
  71. time.sleep(self.delay)
  72. self.assertEqual(self.sm.current_state , mc_states.idle ,"Check State")
  73. def test_Up(self):
  74. self.assertEqual(self.sm.current_state , mc_states.move_up ,"Check State")
  75. self.sm.MailBox.put(mc_event.Up)
  76. time.sleep(self.delay)
  77. self.assertEqual(self.sm.current_state , mc_states.move_up ,"Check State")
  78. pass
  79. def test_Down(self):
  80. self.assertEqual(self.sm.current_state , mc_states.move_up ,"Check State")
  81. self.sm.MailBox.put(mc_event.Down)
  82. time.sleep(self.delay)
  83. self.assertEqual(self.sm.current_state , mc_states.move_down ,"Check State")
  84. def test_Timeout(self):
  85. self.assertEqual(self.sm.current_state , mc_states.move_up ,"Check State")
  86. time.sleep(self.delay+self.sm.timeout_value)
  87. self.assertEqual(self.sm.current_state , mc_states.state_up ,"Check State")
  88. class MotorControl_UnitTest_UP(MotorControl_BaseUnitTest):
  89. def setUp(self):
  90. super().setUp()
  91. self.sm.MailBox.put(mc_event.Up)
  92. time.sleep(self.delay+self.sm.timeout_value)
  93. def test_Stop(self):
  94. # state changed from idle over move down to down
  95. self.assertEqual(self.sm.current_state , mc_states.state_up ,"Check State")
  96. self.sm.MailBox.put(mc_event.Stop)
  97. time.sleep(self.delay)
  98. self.assertEqual(self.sm.current_state , mc_states.idle ,"Check State")
  99. class MotorControl_Events(MotorControl_BaseUnitTest):
  100. def setUp(self):
  101. super().setUp()
  102. #self.sm.MailBox.put(mc_event.Up)
  103. def test_Stop(self):
  104. # state changed from idle over move down to down
  105. # self.sm.MailBox.put(mc_event.Up)
  106. time.sleep(0.5)