sensor.py 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. # Mixins for testing sensor entities
  2. class BasicSensorTests:
  3. def setUpBasicSensor(
  4. self,
  5. dps,
  6. subject,
  7. unit=None,
  8. state_class=None,
  9. device_class=None,
  10. testdata=(30, 30),
  11. ):
  12. self.basicSensor = subject
  13. self.basicSensorDps = dps
  14. self.basicSensorUnit = unit
  15. self.basicSensorStateClass = state_class
  16. self.basicSensorDeviceClass = device_class
  17. self.basicSensorTestData = testdata
  18. def test_basic_sensor_units(self):
  19. self.assertEqual(
  20. self.basicSensor.native_unit_of_measurement, self.basicSensorUnit
  21. )
  22. def test_basic_sensor_device_class(self):
  23. self.assertEqual(self.basicSensor.device_class, self.basicSensorDeviceClass)
  24. def test_basic_sensor_state_class(self):
  25. self.assertEqual(self.basicSensor.state_class, self.basicSensorStateClass)
  26. def test_basic_sensor_value(self):
  27. dpval, val = self.basicSensorTestData
  28. self.dps[self.basicSensorDps] = dpval
  29. self.assertEqual(self.basicSensor.native_value, val)
  30. class MultiSensorTests:
  31. def setUpMultiSensors(self, sensors):
  32. self.multiSensor = {}
  33. self.multiSensorDps = {}
  34. self.multiSensorUnit = {}
  35. self.multiSensorDevClass = {}
  36. self.multiSensorStateClass = {}
  37. self.multiSensorTestData = {}
  38. for s in sensors:
  39. name = s.get("name")
  40. subject = self.entities.get(name)
  41. if subject is None:
  42. raise AttributeError(f"No sensor for {name} found.")
  43. self.multiSensor[name] = subject
  44. self.multiSensorDps[name] = s.get("dps")
  45. self.multiSensorUnit[name] = s.get("unit")
  46. self.multiSensorStateClass[name] = s.get("state_class")
  47. self.multiSensorDevClass[name] = s.get("device_class")
  48. self.multiSensorTestData[name] = s.get("testdata", (30, 30))
  49. def test_multi_sensor_units(self):
  50. for key, subject in self.multiSensor.items():
  51. with self.subTest(key):
  52. self.assertEqual(
  53. subject.native_unit_of_measurement, self.multiSensorUnit[key]
  54. )
  55. def test_multi_sensor_device_class(self):
  56. for key, subject in self.multiSensor.items():
  57. with self.subTest(key):
  58. self.assertEqual(subject.device_class, self.multiSensorDevClass[key])
  59. def test_multi_sensor_state_class(self):
  60. for key, subject in self.multiSensor.items():
  61. with self.subTest(key):
  62. self.assertEqual(subject.state_class, self.multiSensorStateClass[key])
  63. def test_multi_sensor_value(self):
  64. for key, subject in self.multiSensor.items():
  65. with self.subTest(key):
  66. dpsval, val = self.multiSensorTestData[key]
  67. self.dps[self.multiSensorDps[key]] = dpsval
  68. self.assertEqual(subject.native_value, val)
  69. def test_multi_sensor_device_state_attributes(self):
  70. for key, subject in self.multiSensor.items():
  71. with self.subTest(key):
  72. self.assertEqual(subject.device_state_attributes, {})