Files
@ 5bcb950024af
Branch filter:
Location: light9/light9/paint/solve_test.py
5bcb950024af
5.1 KiB
text/x-python
reformat python
Ignore-this: 7bbe37d199612c9c74ef2904c3f13553
Ignore-this: 7bbe37d199612c9c74ef2904c3f13553
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 | import unittest
import numpy.testing
from . import solve
from rdflib import Namespace
from light9.namespaces import RDF, L9, DEV
from rdfdb.localsyncedgraph import LocalSyncedGraph
from light9.effect.settings import DeviceSettings
class TestSolve(unittest.TestCase):
def setUp(self):
self.graph = LocalSyncedGraph(
files=['test/cam/lightConfig.n3', 'test/cam/bg.n3'])
self.solver = solve.Solver(self.graph,
imgSize=(100, 48),
sessions=[L9['session0']])
self.solver.loadSamples()
self.solveMethod = self.solver.solve
@unittest.skip('solveBrute unfinished')
def testBlack(self):
devAttrs = self.solveMethod({'strokes': []})
self.assertEqual(DeviceSettings(self.graph, []), devAttrs)
@unittest.skip("unfinished")
def testSingleLightCloseMatch(self):
devAttrs = self.solveMethod({
'strokes': [{
'pts': [[224, 141], [223, 159]],
'color': '#ffffff'
}]
})
self.assertEqual(
DeviceSettings(self.graph, [
(DEV['aura1'], L9['color'], "#ffffff"),
(DEV['aura1'], L9['rx'], 0.5),
(DEV['aura1'], L9['ry'], 0.573),
]), devAttrs)
class TestSolveBrute(TestSolve):
def setUp(self):
super(TestSolveBrute, self).setUp()
self.solveMethod = self.solver.solveBrute
CAM_TEST = Namespace('http://light9.bigasterisk.com/test/cam/')
class TestSimulationLayers(unittest.TestCase):
def setUp(self):
self.graph = LocalSyncedGraph(
files=['test/cam/lightConfig.n3', 'test/cam/bg.n3'])
self.solver = solve.Solver(self.graph,
imgSize=(100, 48),
sessions=[L9['session0']])
self.solver.loadSamples()
def testBlack(self):
self.assertEqual([],
self.solver.simulationLayers(
settings=DeviceSettings(self.graph, [])))
def testPerfect1Match(self):
layers = self.solver.simulationLayers(
settings=DeviceSettings(self.graph, [(
DEV['aura1'], L9['color'],
"#ffffff"), (DEV['aura1'], L9['rx'],
0.5), (DEV['aura1'], L9['ry'], 0.573)]))
self.assertEqual([{
'path': CAM_TEST['bg2-d.jpg'],
'color': (1., 1., 1.)
}], layers)
def testPerfect1MatchTinted(self):
layers = self.solver.simulationLayers(
settings=DeviceSettings(self.graph, [(
DEV['aura1'], L9['color'],
"#304050"), (DEV['aura1'], L9['rx'],
0.5), (DEV['aura1'], L9['ry'], 0.573)]))
self.assertEqual([{
'path': CAM_TEST['bg2-d.jpg'],
'color': (.188, .251, .314)
}], layers)
def testPerfect2Matches(self):
layers = self.solver.simulationLayers(
settings=DeviceSettings(self.graph, [
(DEV['aura1'], L9['color'], "#ffffff"),
(DEV['aura1'], L9['rx'], 0.5),
(DEV['aura1'], L9['ry'], 0.573),
(DEV['aura2'], L9['color'], "#ffffff"),
(DEV['aura2'], L9['rx'], 0.7),
(DEV['aura2'], L9['ry'], 0.573),
]))
self.assertItemsEqual([
{
'path': CAM_TEST['bg2-d.jpg'],
'color': (1, 1, 1)
},
{
'path': CAM_TEST['bg2-f.jpg'],
'color': (1, 1, 1)
},
], layers)
class TestCombineImages(unittest.TestCase):
def setUp(self):
graph = LocalSyncedGraph(
files=['test/cam/lightConfig.n3', 'test/cam/bg.n3'])
self.solver = solve.Solver(graph,
imgSize=(100, 48),
sessions=[L9['session0']])
self.solver.loadSamples()
def test(self):
out = self.solver.combineImages(layers=[
{
'path': CAM_TEST['bg2-d.jpg'],
'color': (.2, .2, .3)
},
{
'path': CAM_TEST['bg2-a.jpg'],
'color': (.888, 0, .3)
},
])
solve.saveNumpy('/tmp/t.png', out)
golden = solve.loadNumpy('test/cam/layers_out1.png')
numpy.testing.assert_array_equal(golden, out)
class TestBestMatch(unittest.TestCase):
def setUp(self):
graph = LocalSyncedGraph(
files=['test/cam/lightConfig.n3', 'test/cam/bg.n3'])
self.solver = solve.Solver(graph,
imgSize=(100, 48),
sessions=[L9['session0']])
self.solver.loadSamples()
def testRightSide(self):
drawingOnRight = {
"strokes": [{
"pts": [[0.875, 0.64], [0.854, 0.644]],
"color": "#aaaaaa"
}]
}
drawImg = self.solver.draw(drawingOnRight)
match, dist = self.solver.bestMatch(drawImg)
self.assertEqual(L9['sample5'], match)
self.assertAlmostEqual(0.983855965, dist)
|