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')]))