light.py 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. # Mixins for testing lights
  2. from homeassistant.components.light import (
  3. COLOR_MODE_BRIGHTNESS,
  4. COLOR_MODE_ONOFF,
  5. )
  6. from ..helpers import assert_device_properties_set
  7. class BasicLightTests:
  8. def setUpBasicLight(self, dps, subject):
  9. self.basicLight = subject
  10. self.basicLightDps = dps
  11. def test_basic_light_supported_features(self):
  12. self.assertEqual(self.basicLight.supported_features, 0)
  13. def test_basic_light_supported_color_modes(self):
  14. self.assertCountEqual(
  15. self.basicLight.supported_color_modes,
  16. [COLOR_MODE_ONOFF],
  17. )
  18. def test_basic_light_color_mode(self):
  19. self.assertEqual(self.basicLight.color_mode, COLOR_MODE_ONOFF)
  20. def test_light_has_no_brightness(self):
  21. self.assertIsNone(self.basicLight.brightness)
  22. def test_light_has_no_effects(self):
  23. self.assertIsNone(self.basicLight.effect_list)
  24. self.assertIsNone(self.basicLight.effect)
  25. def test_basic_light_is_on(self):
  26. self.dps[self.basicLightDps] = True
  27. self.assertTrue(self.basicLight.is_on)
  28. self.dps[self.basicLightDps] = False
  29. self.assertFalse(self.basicLight.is_on)
  30. async def test_basic_light_turn_on(self):
  31. async with assert_device_properties_set(
  32. self.basicLight._device, {self.basicLightDps: True}
  33. ):
  34. await self.basicLight.async_turn_on()
  35. async def test_basic_light_turn_off(self):
  36. async with assert_device_properties_set(
  37. self.basicLight._device, {self.basicLightDps: False}
  38. ):
  39. await self.basicLight.async_turn_off()
  40. async def test_basic_light_toggle_turns_on_when_it_was_off(self):
  41. self.dps[self.basicLightDps] = False
  42. async with assert_device_properties_set(
  43. self.basicLight._device,
  44. {self.basicLightDps: True},
  45. ):
  46. await self.basicLight.async_toggle()
  47. async def test_basic_light_toggle_turns_off_when_it_was_on(self):
  48. self.dps[self.basicLightDps] = True
  49. async with assert_device_properties_set(
  50. self.basicLight._device,
  51. {self.basicLightDps: False},
  52. ):
  53. await self.basicLight.async_toggle()
  54. def test_basic_light_state_attributes(self):
  55. self.assertEqual(self.basicLight.extra_state_attributes, {})
  56. class DimmableLightTests:
  57. def setUpDimmableLight(self, dps, subject, offval=0, tests=[(100, 100)]):
  58. self.dimmableLight = subject
  59. self.dimmableLightDps = dps
  60. self.dimmableLightOff = offval
  61. self.dimmableLightTest = tests
  62. def test_dimmable_light_supported_features(self):
  63. self.dps[self.dimmableLightDps] = self.dimmableLightOff
  64. self.assertFalse(self.dimmableLight.is_on)
  65. self.dps[self.dimmableLightDps] = self.dimmableLightTest[0][0]
  66. self.assertTrue(self.dimmableLight.is_on)
  67. self.dps[self.dimmableLightDps] = None
  68. self.assertFalse(self.dimmableLight.is_on)
  69. def test_dimmable_light_brightness(self):
  70. self.dps[self.dimmableLightDps] = self.dimmableLightOff
  71. self.assertEqual(self.dimmableLight.brightness, 0)
  72. for dps, val in self.dimmableLightTest:
  73. self.dps[self.dimmableLightDps] = dps
  74. self.assertEqual(self.dimmableLight.brightness, val)
  75. def test_dimmable_light_state_attributes(self):
  76. self.assertEqual(self.dimmableLight.extra_state_attributes, {})
  77. async def test_dimmable_light_turn_off(self):
  78. async with assert_device_properties_set(
  79. self.dimmableLight._device,
  80. {self.dimmableLightDps: self.dimmableLightOff},
  81. ):
  82. await self.dimmableLight.async_turn_off()
  83. async def test_dimmable_light_set_brightness(self):
  84. for dps, val in self.dimmableLightTest:
  85. async with assert_device_properties_set(
  86. self.dimmableLight._device,
  87. {self.dimmableLightDps: dps},
  88. ):
  89. await self.dimmableLight.async_turn_on(brightness=val)
  90. async def test_dimmable_light_set_brightness_to_off(self):
  91. async with assert_device_properties_set(
  92. self.dimmableLight._device,
  93. {self.dimmableLightDps: self.dimmableLightOff},
  94. ):
  95. await self.dimmableLight.async_turn_on(brightness=0)
  96. async def test_dimmable_light_toggle_turns_off_when_it_was_on(self):
  97. self.dps[self.dimmableLightDps] = self.dimmableLightTest[0][0]
  98. async with assert_device_properties_set(
  99. self.dimmableLight._device,
  100. {self.dimmableLightDps: self.dimmableLightOff},
  101. ):
  102. await self.dimmableLight.async_toggle()