class PercolatorTestCase(unittest.TestCase): def setUp(self): #logging.basicConfig(level=logging.INFO) #random.seed("WSlice") self.ws = ws = WS2812(1,64) for i in range(len(ws)): ws[i] = (i, 2*i, 3*i) self.p = Percolator(ws) def tearDown(self): self.ws = self.p = None gc.collect() def test_render_init(self): # A Percolator is initially in a state that renders all off self.p.render() self.assertTrue(all(sum(v)==0 for v in self.ws)) def test_render_time(self): # Rendering takes the expected amount of time n = 10 t0 = pyb.micros() for i in range(n): self.p.render() dt = pyb.elapsed_micros(t0) average_ms = dt / (n * 1000) print("%d renders average %f ms" % (n, average_ms), end='') self.assertTrue(average_ms < 15, "average render time %f ms" % (average_ms)) def test_render_at_index_0(self): # A Percolator can render itself to the backing LEDs lattice = self.p.lattice ref = (12, 34, 56) for i, v in enumerate(ref): lattice[0][i] = v self.p.render() self.assertEqual(tuple(self.ws[0]), ref) self.assertTrue(all(sum(v)==0 for v in self.ws[1:])) def test_render_at_index_0_various_brightness(self): # A Percolator can render itself to the backing LEDs with controlled brightness lattice = self.p.lattice color = (12, 34, 56) ref = [0] * 3 for brightness in (1.0, 0.5, 0.1, 0.01, 3/17, 1/254, 1/255, 1/256, 0.0): print(' %r' % brightness, end='') self.p.brightness = brightness for i, v in enumerate(color): lattice[0][i] = v ref[i] = round(brightness * v) self.p.render() self.assertEqual(tuple(self.ws[0]), tuple(ref)) self.assertTrue(all(sum(v)==0 for v in self.ws[1:])) def test_render_at_several_positions(self): # A Percolator can render itself to the backing LEDs lattice = self.p.lattice for k, g in enumerate(tg(64, 0)): for i, v in enumerate(g): lattice[k][i] = v self.p.render() for led, g in zip(self.ws, tg(64,0)): self.assertEqual(tuple(led), tuple(g))
class PercolatorTestCase(unittest.TestCase): def setUp(self): #logging.basicConfig(level=logging.INFO) #random.seed("WSlice") self.ws = ws = WS2812(1, 64) for i in range(len(ws)): ws[i] = (i, 2 * i, 3 * i) self.p = Percolator(ws) def tearDown(self): self.ws = self.p = None gc.collect() def test_render_init(self): # A Percolator is initially in a state that renders all off self.p.render() self.assertTrue(all(sum(v) == 0 for v in self.ws)) def test_render_time(self): # Rendering takes the expected amount of time n = 10 t0 = pyb.micros() for i in range(n): self.p.render() dt = pyb.elapsed_micros(t0) average_ms = dt / (n * 1000) print("%d renders average %f ms" % (n, average_ms), end='') self.assertTrue(average_ms < 15, "average render time %f ms" % (average_ms)) def test_render_at_index_0(self): # A Percolator can render itself to the backing LEDs lattice = self.p.lattice ref = (12, 34, 56) for i, v in enumerate(ref): lattice[0][i] = v self.p.render() self.assertEqual(tuple(self.ws[0]), ref) self.assertTrue(all(sum(v) == 0 for v in self.ws[1:])) def test_render_at_index_0_various_brightness(self): # A Percolator can render itself to the backing LEDs with controlled brightness lattice = self.p.lattice color = (12, 34, 56) ref = [0] * 3 for brightness in (1.0, 0.5, 0.1, 0.01, 3 / 17, 1 / 254, 1 / 255, 1 / 256, 0.0): print(' %r' % brightness, end='') self.p.brightness = brightness for i, v in enumerate(color): lattice[0][i] = v ref[i] = round(brightness * v) self.p.render() self.assertEqual(tuple(self.ws[0]), tuple(ref)) self.assertTrue(all(sum(v) == 0 for v in self.ws[1:])) def test_render_at_several_positions(self): # A Percolator can render itself to the backing LEDs lattice = self.p.lattice for k, g in enumerate(tg(64, 0)): for i, v in enumerate(g): lattice[k][i] = v self.p.render() for led, g in zip(self.ws, tg(64, 0)): self.assertEqual(tuple(led), tuple(g))