Mercurial > code > home > repos > light9
view light9/collector/device_test.py @ 2183:081f36506ad3
address a bunch of type errors and loose types
author | drewp@bigasterisk.com |
---|---|
date | Fri, 19 May 2023 17:28:03 -0700 |
parents | 7772cc48e016 |
children |
line wrap: on
line source
import unittest from light9.newtypes import DeviceAttr, DeviceClass, HexColor, OutputAttr from rdflib import Literal from light9.namespaces import L9 from light9.collector.device import toOutputAttrs, resolve class TestUnknownDevice(unittest.TestCase): def testFails(self): self.assertRaises(NotImplementedError, toOutputAttrs, L9['bogus'], {}) class TestColorStrip(unittest.TestCase): def testConvertDeviceToOutputAttrs(self): out = toOutputAttrs(DeviceClass(L9['ChauvetColorStrip']), {DeviceAttr(L9['color']): HexColor('#ff0000')}) self.assertEqual({L9['mode']: 215, L9['red']: 255, L9['green']: 0, L9['blue']: 0}, out) class TestDimmer(unittest.TestCase): def testConvert(self): self.assertEqual({L9['level']: 127}, toOutputAttrs(DeviceClass(L9['SimpleDimmer']), {DeviceAttr(L9['brightness']): .5})) class TestMini15(unittest.TestCase): def testConvertColor(self): out = toOutputAttrs(DeviceClass(L9['Mini15']), {DeviceAttr(L9['color']): HexColor('#010203')}) self.assertEqual(255, out[OutputAttr(L9['dimmer'])]) self.assertEqual(1, out[OutputAttr(L9['red'])]) self.assertEqual(2, out[OutputAttr(L9['green'])]) self.assertEqual(3, out[OutputAttr(L9['blue'])]) def testConvertRotation(self): out = toOutputAttrs(DeviceClass(L9['Mini15']), {DeviceAttr(L9['rx']): 90, DeviceAttr(L9['ry']): 45}) self.assertEqual(42, out[OutputAttr(L9['xRotation'])]) self.assertEqual(127, out[OutputAttr(L9['xFine'])]) self.assertEqual(47, out[OutputAttr(L9['yRotation'])]) self.assertEqual(207, out[OutputAttr(L9['yFine'])]) self.assertEqual(0, out[OutputAttr(L9['rotationSpeed'])]) DC = DeviceClass(L9['someDev']) class TestResolve(unittest.TestCase): def testMaxes1Color(self): # do not delete - this one catches a bug in the rgb_to_hex(...) lines self.assertEqual(HexColor('#ff0300'), resolve(DC, DeviceAttr(L9['color']), [HexColor('#ff0300')])) def testMaxes2Colors(self): self.assertEqual(HexColor('#ff0400'), resolve(DC, DeviceAttr(L9['color']), [HexColor('#ff0300'), HexColor('#000400')])) def testMaxes3Colors(self): self.assertEqual(HexColor('#112233'), resolve(DC, DeviceAttr(L9['color']), [HexColor('#110000'), HexColor('#002200'), HexColor('#000033')]))