|
|
@@ -4,7 +4,16 @@ from ..helpers import assert_device_properties_set
|
|
|
|
|
|
class BasicNumberTests:
|
|
|
def setUpBasicNumber(
|
|
|
- self, dps, subject, max, min=0, step=1, mode="auto", scale=1, unit=None
|
|
|
+ self,
|
|
|
+ dps,
|
|
|
+ subject,
|
|
|
+ max,
|
|
|
+ min=0,
|
|
|
+ step=1,
|
|
|
+ mode="auto",
|
|
|
+ scale=1,
|
|
|
+ unit=None,
|
|
|
+ testdata=None,
|
|
|
):
|
|
|
self.basicNumber = subject
|
|
|
self.basicNumberDps = dps
|
|
|
@@ -14,6 +23,7 @@ class BasicNumberTests:
|
|
|
self.basicNumberMode = mode
|
|
|
self.basicNumberScale = scale
|
|
|
self.basicNumberUnit = unit
|
|
|
+ self.basicNumberTestData = testdata
|
|
|
|
|
|
def test_number_min_value(self):
|
|
|
self.assertEqual(self.basicNumber.native_min_value, self.basicNumberMin)
|
|
|
@@ -33,14 +43,29 @@ class BasicNumberTests:
|
|
|
)
|
|
|
|
|
|
def test_number_value(self):
|
|
|
- val = min(max(self.basicNumberMin, self.basicNumberStep), self.basicNumberMax)
|
|
|
- dps_val = val * self.basicNumberScale
|
|
|
- self.dps[self.basicNumberDps] = dps_val
|
|
|
- self.assertEqual(self.basicNumber.native_value, val)
|
|
|
+ if self.basicNumberTestData:
|
|
|
+ val = self.basicNumberTestData[0]
|
|
|
+ expected = self.basicNumberTestData[1]
|
|
|
+ else:
|
|
|
+ expected = min(
|
|
|
+ max(self.basicNumberMin, self.basicNumberStep), self.basicNumberMax
|
|
|
+ )
|
|
|
+ val = expected * self.basicNumberScale
|
|
|
+
|
|
|
+ self.dps[self.basicNumberDps] = val
|
|
|
+ self.assertEqual(self.basicNumber.native_value, expected)
|
|
|
|
|
|
async def test_number_set_value(self):
|
|
|
- val = min(max(self.basicNumberMin, self.basicNumberStep), self.basicNumberMax)
|
|
|
- dps_val = val * self.basicNumberScale
|
|
|
+ if self.basicNumberTestData:
|
|
|
+ dps_val = self.basicNumberTestData[0]
|
|
|
+ val = self.basicNumberTestData[1]
|
|
|
+ else:
|
|
|
+ val = min(
|
|
|
+ max(self.basicNumberMin, self.basicNumberStep),
|
|
|
+ self.basicNumberMax,
|
|
|
+ )
|
|
|
+ dps_val = val * self.basicNumberScale
|
|
|
+
|
|
|
async with assert_device_properties_set(
|
|
|
self.basicNumber._device, {self.basicNumberDps: dps_val}
|
|
|
):
|
|
|
@@ -60,6 +85,7 @@ class MultiNumberTests:
|
|
|
self.multiNumberMode = {}
|
|
|
self.multiNumberScale = {}
|
|
|
self.multiNumberUnit = {}
|
|
|
+ self.multiNumberTestData = {}
|
|
|
|
|
|
for n in numbers:
|
|
|
name = n.get("name")
|
|
|
@@ -74,6 +100,7 @@ class MultiNumberTests:
|
|
|
self.multiNumberMode[name] = n.get("mode", "auto")
|
|
|
self.multiNumberScale[name] = n.get("scale", 1)
|
|
|
self.multiNumberUnit[name] = n.get("unit", None)
|
|
|
+ self.multiNumberTestData[name] = n.get("testdata", None)
|
|
|
|
|
|
def test_multi_number_min_value(self):
|
|
|
for key, subject in self.multiNumber.items():
|
|
|
@@ -117,21 +144,31 @@ class MultiNumberTests:
|
|
|
|
|
|
def test_multi_number_value(self):
|
|
|
for key, subject in self.multiNumber.items():
|
|
|
- val = min(
|
|
|
- max(self.multiNumberMin[key], self.multiNumberStep[key]),
|
|
|
- self.multiNumberMax[key],
|
|
|
- )
|
|
|
- dps_val = val * self.multiNumberScale[key]
|
|
|
+ if self.multiNumberTestData[key]:
|
|
|
+ val = self.multiNumberTestData[key][1]
|
|
|
+ dps_val = self.multiNumberTestData[key][0]
|
|
|
+ else:
|
|
|
+ val = min(
|
|
|
+ max(self.multiNumberMin[key], self.multiNumberStep[key]),
|
|
|
+ self.multiNumberMax[key],
|
|
|
+ )
|
|
|
+ dps_val = val * self.multiNumberScale[key]
|
|
|
+
|
|
|
self.dps[self.multiNumberDps[key]] = dps_val
|
|
|
self.assertEqual(subject.native_value, val, f"{key} value mismatch")
|
|
|
|
|
|
async def test_multi_number_set_value(self):
|
|
|
for key, subject in self.multiNumber.items():
|
|
|
- val = min(
|
|
|
- max(self.multiNumberMin[key], self.multiNumberStep[key]),
|
|
|
- self.multiNumberMax[key],
|
|
|
- )
|
|
|
- dps_val = val * self.multiNumberScale[key]
|
|
|
+ if self.multiNumberTestData[key]:
|
|
|
+ val = self.multiNumberTestData[key][1]
|
|
|
+ dps_val = self.multiNumberTestData[key][0]
|
|
|
+ else:
|
|
|
+ val = min(
|
|
|
+ max(self.multiNumberMin[key], self.multiNumberStep[key]),
|
|
|
+ self.multiNumberMax[key],
|
|
|
+ )
|
|
|
+ dps_val = val * self.multiNumberScale[key]
|
|
|
+
|
|
|
async with assert_device_properties_set(
|
|
|
subject._device,
|
|
|
{self.multiNumberDps[key]: dps_val},
|