| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- # Mixins for testing time entities
- from datetime import time
- from ..helpers import assert_device_properties_set
- class BasicTimeTests:
- def setUpBasicTime(
- self,
- subject,
- hour_dp=None,
- minute_dp=None,
- second_dp=None,
- testdata=None,
- ):
- self.basicTime = subject
- self.basicTimeHourDp = hour_dp
- self.basicTimeMinDp = minute_dp
- self.basicTimeSecDp = second_dp
- self.basicTimeTestData = testdata
- def test_time_value(self):
- if self.basicTimeTestData:
- hour = self.basicTimeTestData["hour"]
- minute = self.basicTimeTestData["minute"]
- second = self.basicTimeTestData["second"]
- expected = self.basicTimeTestData["time"]
- else:
- expected = "00:00:00"
- hour = minute = second = 0
- if self.basicTimeHourDp:
- self.dps[self.basicTimeHourDp] = hour
- if self.basicTimeMinDp:
- self.dps[self.basicTimeMinDp] = minute
- if self.basicTimeSecDp:
- self.dps[self.basicTimeSecDp] = second
- self.assertEqual(self.basicTime.native_value.isoformat("seconds"), expected)
- async def test_time_set_value(self):
- if self.basicTimeTestData:
- hour = self.basicTimeTestData["hour"]
- minute = self.basicTimeTestData["minute"]
- second = self.basicTimeTestData["second"]
- val = self.basicTimeTestData["time"]
- else:
- val = "00:00:00"
- hour = minute = second = 0
- expected = {}
- if self.basicTimeHourDp:
- expected[self.basicTimeHourDp] = hour
- if self.basicTimeMinDp:
- expected[self.basicTimeMinDp] = minute
- if self.basicTimeSecDp:
- expected[self.basicTimeSecDp] = second
- async with assert_device_properties_set(
- self.basicTime._device,
- expected,
- f"{self.basicTime.name} failed to set correct value",
- ):
- await self.basicTime.async_set_native_value(time.fromisoformat(val))
- class MultiTimeTests:
- def setUpMultiTime(self, times):
- self.multiTime = {}
- self.multiTimeHourDp = {}
- self.multiTimeMinDp = {}
- self.multiTimeSecDp = {}
- self.multiTimeTestData = {}
- for t in times:
- name = t.get("name")
- subject = self.entities.get(name)
- if subject is None:
- raise AttributeError(f"No time for {name} found.")
- self.multiTime[name] = subject
- self.multiTimeHourDp[name] = t.get("hour")
- self.multiTimeMinDp[name] = t.get("minute")
- self.multiTimeSecDp[name] = t.get("second")
- self.multiTimeTestData[name] = t.get("testdata", None)
- def test_multi_time_value(self):
- for key, subject in self.multiTime.items():
- if self.multiTimeTestData[key]:
- hour = self.multiTimeTestData[key].get("hour", 0)
- minute = self.multiTimeTestData[key].get("minute", 0)
- second = self.multiTimeTestData[key].get("second", 0)
- expected = self.multiTimeTestData[key].get("time")
- else:
- expected = "00:00:00"
- hour = minute = second = 0
- if self.multiTimeHourDp[key]:
- self.dps[self.multiTimeHourDp[key]] = hour
- if self.multiTimeMinDp[key]:
- self.dps[self.multiTimeMinDp[key]] = minute
- if self.multiTimeSecDp[key]:
- self.dps[self.multiTimeSecDp[key]] = second
- self.assertEqual(
- subject.native_value.isoformat("seconds"),
- expected,
- f"{key} value mismatch",
- )
- async def test_multi_time_set_value(self):
- for key, subject in self.multiTime.items():
- if self.multiTimeTestData[key]:
- hour = self.multiTimeTestData[key].get("hour", 0)
- minute = self.multiTimeTestData[key].get("minute", 0)
- second = self.multiTimeTestData[key].get("second", 0)
- val = self.multiTimeTestData[key].get("time")
- else:
- val = "00:00:00"
- hour = minute = second = 0
- expected = {}
- if self.multiTimeHourDp[key]:
- expected[self.multiTimeHourDp[key]] = hour
- if self.multiTimeMinDp[key]:
- expected[self.multiTimeMinDp[key]] = minute
- if self.multiTimeSecDp[key]:
- expected[self.multiTimeSecDp[key]] = second
- async with assert_device_properties_set(
- subject._device,
- expected,
- f"{key} failed to set correct value",
- ):
- await subject.async_set_value(time.fromisoformat(val))
|