Beispiel #1
0
 def testEq(self):
     a = LightState([0, 1, 0, 1, 0, 1, 0, 1])
     b = LightState([0, 1, 0, 1, 0, 1, 0, 1])
     c = LightState([0, 1, 0, 1, 0, 1, 0, 0])
     self.assertEqual(a, b)
     self.assertNotEqual(a, c)
     self.assertNotEqual(b, c)
Beispiel #2
0
 def testInvert(self):
     a = LightState([1, 1, 1, 1, 1, 1, 1, 1])
     b = LightState([0, 0, 0, 0, 0, 0, 0, 0])
     c = LightState([1, 0, 1, 0, 0, 1, 0, 0])
     d = ~a
     self.assertEqual(d._values, [0, 0, 0, 0, 0, 0, 0, 0])
     d = ~b
     self.assertEqual(d._values, [1, 1, 1, 1, 1, 1, 1, 1])
     d = ~c
     self.assertEqual(d._values, [0, 1, 0, 1, 1, 0, 1, 1])
Beispiel #3
0
 def testXor(self):
     a = LightState([1, 1, 1, 1, 1, 1, 1, 1])
     b = LightState([0, 0, 0, 0, 0, 0, 0, 0])
     c = LightState([1, 0, 1, 0, 0, 1, 0, 0])
     d = a ^ b
     self.assertEqual(d._values, [1, 1, 1, 1, 1, 1, 1, 1])
     d = b ^ c
     self.assertEqual(d._values, [1, 0, 1, 0, 0, 1, 0, 0])
     d = c ^ a
     self.assertEqual(d._values, [0, 1, 0, 1, 1, 0, 1, 1])
Beispiel #4
0
 def testOr(self):
     a = LightState([1, 1, 1, 1, 1, 1, 1, 1])
     b = LightState([0, 0, 0, 0, 0, 0, 0, 0])
     c = LightState([1, 0, 1, 0, 0, 1, 0, 0])
     d = a | b
     self.assertEqual(d._values, [1, 1, 1, 1, 1, 1, 1, 1])
     d = b | c
     self.assertEqual(d._values, [1, 0, 1, 0, 0, 1, 0, 0])
     d = c | a
     self.assertEqual(d._values, [1, 1, 1, 1, 1, 1, 1, 1])
Beispiel #5
0
 def testAnd(self):
     a = LightState([1, 1, 1, 1, 1, 1, 1, 1])
     b = LightState([0, 0, 0, 0, 0, 0, 0, 0])
     c = LightState([1, 0, 1, 0, 0, 1, 0, 0])
     d = a & b
     self.assertEqual(d._values, [0, 0, 0, 0, 0, 0, 0, 0])
     d = b & c
     self.assertEqual(d._values, [0, 0, 0, 0, 0, 0, 0, 0])
     d = c & a
     self.assertEqual(d._values, [1, 0, 1, 0, 0, 1, 0, 0])
Beispiel #6
0
class LightHardware(object):
    def __init__(self):
        self._values = LightState()

    @property
    def values(self):
        return self._values

    @values.setter
    def values(self, values):
        """ Set values """
        changes = self._values.diff(values)
        self._values = values
        self.updateValues(self._values)
        for lightId in changes:
            self.updateValue(lightId, changes[lightId])

    @abc.abstractmethod
    def updateValue(self, lightId, value):
        """ Send updated light value to the hardware """
        pass

    @abc.abstractmethod
    def updateValues(self, values):
        """ Display updated values to the user (for testing) """
        pass
Beispiel #7
0
class LightHardware(object):
    def __init__(self):
        self._values = LightState()

    @property
    def values(self):
        return self._values

    @values.setter
    def values(self, values):
        """ Set values """
        changes = self._values.diff(values)
        self._values = values
        self.updateValues(self._values)
        for lightId in changes:
            self.updateValue(lightId, changes[lightId])

    @abc.abstractmethod
    def updateValue(self, lightId, value):
        """ Send updated light value to the hardware """
        pass

    @abc.abstractmethod
    def updateValues(self, values):
        """ Display updated values to the user (for testing) """
        pass
Beispiel #8
0
 def testShiftLeft(self):
     # Move one place
     a = LightState([0, 0, 0, 1, 0, 0, 0, 0])
     b = a << 1
     self.assertEqual(b._values, [0, 0, 1, 0, 0, 0, 0, 0])
     # Two places
     b = a << 2
     self.assertEqual(b._values, [0, 1, 0, 0, 0, 0, 0, 0])
     # Wrapping
     b = a << 4
     self.assertEqual(b._values, [0, 0, 0, 0, 0, 0, 0, 1])
     # Handling numbers > 8
     b = a << 12
     self.assertEqual(b._values, [0, 0, 0, 0, 0, 0, 0, 1])
Beispiel #9
0
 def run(self):
     # Set up liter and delay
     self.liter.values = LightState.clear()
     delay = 1.0 / self.frameRate
     while not self._shutdown:
         try:
             a = self.animQueue.get(True, delay)
             if self._skip and not self.animQueue.empty():
                 continue
             self._skip = False
             for i in a():
                 self.liter.values = i
                 if self._shutdown or self._skip:
                     break
                 time.sleep(delay)
         except queue.Empty:
             if self._shutdownWhenComplete:
                 self._shutdown = True
             continue
     self._shutdown = True
Beispiel #10
0
 def run(self):
     # Set up liter and delay
     self.liter.values = LightState.clear()
     delay = 1.0 / self.frameRate;
     while not self._shutdown:
         try:
             a = self.animQueue.get(True, delay)
             if self._skip and not self.animQueue.empty():
                 continue
             self._skip = False
             for i in a():
                 self.liter.values = i
                 if self._shutdown or self._skip:
                     break;
                 time.sleep(delay)
         except queue.Empty:
             if self._shutdownWhenComplete:
                 self._shutdown = True
             continue
     self._shutdown = True
Beispiel #11
0
 def __init__(self):
     self._values = LightState()
Beispiel #12
0
 def frames(self):
     for i in range(0, self.a):
         yield LightState.bar(math.sin(i / 5.0) / 2.0 + 0.5)
Beispiel #13
0
 def __init__(self):
     self._values = LightState()
Beispiel #14
0
 def frames(self):
     for i in range(0, self.a):
         yield LightState.bar(math.sin(i / 5.0) / 2.0 + 0.5)