def test_coord_set_weights(self): from lepton.texturizer import SpriteTexturizer coord_set1 = ((0.5,0.5), (1,0.5), (1,1), (0.5,1)) coord_set2 = (0,0.5, 0.5,0.5, 0.5,1, 0,1) coord_set3 = (0.5,0, 1,0, 1,0.5, 0.5,0.5) tex = SpriteTexturizer(0, coords=(coord_set1, coord_set2, coord_set3), weights=(20, 30, 50)) coord_sets = tex.tex_coords self.assertEqual(coord_sets, ( (0.5,0.5, 1,0.5, 1,1, 0.5,1), (0,0.5, 0.5,0.5, 0.5,1, 0,1), (0.5,0, 1,0, 1,0.5, 0.5,0.5)) ) self.assertEqual(len(tex.weights), 3) self.assertAlmostEqual(tex.weights[0], 0.20) self.assertAlmostEqual(tex.weights[1], 0.30) self.assertAlmostEqual(tex.weights[2], 0.50) group = self._make_group(1000) coords = tuple(tex.generate_tex_coords(group)) self.failUnless(len(coords) >= 8000, (len(coords), len(group))) counts = {coord_sets[0]: 0, coord_sets[1]: 0, coord_sets[2]: 0} for i in range(1000): cset = coords[i*8:i*8+8] self.failUnless(cset in counts, cset) counts[cset] += 1 self.assertEqual(sum(counts.values()), 1000) self.failUnless(250 > counts[coord_sets[0]] > 150, counts[coord_sets[0]]) self.failUnless(375 > counts[coord_sets[1]] > 225, counts[coord_sets[1]]) self.failUnless(600 > counts[coord_sets[2]] > 400, counts[coord_sets[2]])
def test_coord_set_weights(self): from lepton.texturizer import SpriteTexturizer coord_set1 = ((0.5, 0.5), (1, 0.5), (1, 1), (0.5, 1)) coord_set2 = (0, 0.5, 0.5, 0.5, 0.5, 1, 0, 1) coord_set3 = (0.5, 0, 1, 0, 1, 0.5, 0.5, 0.5) tex = SpriteTexturizer(0, coords=(coord_set1, coord_set2, coord_set3), weights=(20, 30, 50)) coord_sets = tex.tex_coords self.assertEqual(coord_sets, ((0.5, 0.5, 1, 0.5, 1, 1, 0.5, 1), (0, 0.5, 0.5, 0.5, 0.5, 1, 0, 1), (0.5, 0, 1, 0, 1, 0.5, 0.5, 0.5))) self.assertEqual(len(tex.weights), 3) self.assertAlmostEqual(tex.weights[0], 0.20) self.assertAlmostEqual(tex.weights[1], 0.30) self.assertAlmostEqual(tex.weights[2], 0.50) group = self._make_group(1000) coords = tuple(tex.generate_tex_coords(group)) self.failUnless(len(coords) >= 8000, (len(coords), len(group))) counts = {coord_sets[0]: 0, coord_sets[1]: 0, coord_sets[2]: 0} for i in range(1000): cset = coords[i * 8:i * 8 + 8] self.failUnless(cset in counts, cset) counts[cset] += 1 self.assertEqual(sum(counts.values()), 1000) self.failUnless(250 > counts[coord_sets[0]] > 150, counts[coord_sets[0]]) self.failUnless(375 > counts[coord_sets[1]] > 225, counts[coord_sets[1]]) self.failUnless(600 > counts[coord_sets[2]] > 400, counts[coord_sets[2]])
def test_single_coord_set(self): from lepton.texturizer import SpriteTexturizer coord_set = (0,0, 0.5,0, 0.5,0.5, 0,0.5) tex = SpriteTexturizer(0, coords=[coord_set]) self.assertEqual(tex.tex_dimension, 2) self.assertEqual(tex.tex_coords, (coord_set,)) self.assertEqual(tex.weights, None) group = self._make_group(4) coords = tex.generate_tex_coords(group) self.failUnless(len(coords) >= len(group) * 8, (len(coords), len(group))) self.assertEqual(tuple(coords), coord_set * (len(coords) // 8)) return coord_set, tex, group
def test_default_coords(self): from lepton.texturizer import SpriteTexturizer tex = SpriteTexturizer(0) self.assertEqual(tex.tex_dimension, 2) expected = (0,0, 1,0, 1,1, 0,1) self.assertEqual(tex.tex_coords, None) self.assertEqual(tex.weights, None) group = self._make_group(4) coords = tex.generate_tex_coords(group) self.failUnless(len(coords) >= len(group) * 8, (len(coords), len(group))) self.assertEqual(tuple(coords), expected * (len(coords) // 8)) return tex, group
def test_coord_set_weights_deterministic(self): from lepton.texturizer import SpriteTexturizer coord_set1 = ((0.5,0.5), (1,0.5), (1,1), (0.5,1)) coord_set2 = (0,0.5, 0.5,0.5, 0.5,1, 0,1) coord_set3 = (0.5,0, 1,0, 1,0.5, 0.5,0.5) tex = SpriteTexturizer(0, coords=(coord_set1, coord_set2, coord_set3), weights=(20, 70, 10)) coord_sets = tex.tex_coords group = self._make_group(20) coords = [tuple(tex.generate_tex_coords(group)) for i in range(20)] for cs in coords: self.assertEqual(cs, coords[0])
def test_single_coord_set(self): from lepton.texturizer import SpriteTexturizer coord_set = (0, 0, 0.5, 0, 0.5, 0.5, 0, 0.5) tex = SpriteTexturizer(0, coords=[coord_set]) self.assertEqual(tex.tex_dimension, 2) self.assertEqual(tex.tex_coords, (coord_set, )) self.assertEqual(tex.weights, None) group = self._make_group(4) coords = tex.generate_tex_coords(group) self.failUnless( len(coords) >= len(group) * 8, (len(coords), len(group))) self.assertEqual(tuple(coords), coord_set * (len(coords) // 8)) return coord_set, tex, group
def test_default_coords(self): from lepton.texturizer import SpriteTexturizer tex = SpriteTexturizer(0) self.assertEqual(tex.tex_dimension, 2) expected = (0, 0, 1, 0, 1, 1, 0, 1) self.assertEqual(tex.tex_coords, None) self.assertEqual(tex.weights, None) group = self._make_group(4) coords = tex.generate_tex_coords(group) self.failUnless( len(coords) >= len(group) * 8, (len(coords), len(group))) self.assertEqual(tuple(coords), expected * (len(coords) // 8)) return tex, group
def test_coord_set_weights_deterministic(self): from lepton.texturizer import SpriteTexturizer coord_set1 = ((0.5, 0.5), (1, 0.5), (1, 1), (0.5, 1)) coord_set2 = (0, 0.5, 0.5, 0.5, 0.5, 1, 0, 1) coord_set3 = (0.5, 0, 1, 0, 1, 0.5, 0.5, 0.5) tex = SpriteTexturizer(0, coords=(coord_set1, coord_set2, coord_set3), weights=(20, 70, 10)) coord_sets = tex.tex_coords group = self._make_group(20) coords = [tuple(tex.generate_tex_coords(group)) for i in range(20)] for cs in coords: self.assertEqual(cs, coords[0])
def test_mutiple_coord_sets(self): from lepton.texturizer import SpriteTexturizer coord_set1 = (0.5, 0.5, 1, 0.5, 1, 1, 0.5, 1) coord_set2 = ((0, 0.5), (0.5, 0.5), (0.5, 1), (0, 1)) coord_set3 = (0.5, 0, 0, 1, 0, 0, 1, 0.5, 0, 0.5, 0.5, 0) tex = SpriteTexturizer(0, coords=[coord_set1, coord_set2, coord_set3]) coord_sets = tex.tex_coords self.assertEqual(coord_sets, ((0.5, 0.5, 1, 0.5, 1, 1, 0.5, 1), (0, 0.5, 0.5, 0.5, 0.5, 1, 0, 1), (0.5, 0, 1, 0, 1, 0.5, 0.5, 0.5))) self.assertEqual(tex.weights, None) group = self._make_group(6) coords = tuple(tex.generate_tex_coords(group)) self.failUnless( len(coords) >= len(group) * 8, (len(coords), len(group))) self.assertEqual(coords[:8], coord_sets[0]) self.assertEqual(coords[8:16], coord_sets[1]) self.assertEqual(coords[16:24], coord_sets[2]) self.assertEqual(coords[24:32], coord_sets[0]) self.assertEqual(coords[32:40], coord_sets[1]) self.assertEqual(coords[40:48], coord_sets[2])
def test_mutiple_coord_sets(self): from lepton.texturizer import SpriteTexturizer coord_set1 = (0.5,0.5, 1,0.5, 1,1, 0.5,1) coord_set2 = ((0,0.5), (0.5,0.5), (0.5,1), (0,1)) coord_set3 = (0.5,0,0, 1,0,0, 1,0.5,0, 0.5,0.5,0) tex = SpriteTexturizer(0, coords=[coord_set1, coord_set2, coord_set3]) coord_sets = tex.tex_coords self.assertEqual(coord_sets, ( (0.5,0.5, 1,0.5, 1,1, 0.5,1), (0,0.5, 0.5,0.5, 0.5,1, 0,1), (0.5,0, 1,0, 1,0.5, 0.5,0.5)) ) self.assertEqual(tex.weights, None) group = self._make_group(6) coords = tuple(tex.generate_tex_coords(group)) self.failUnless(len(coords) >= len(group) * 8, (len(coords), len(group))) self.assertEqual(coords[:8], coord_sets[0]) self.assertEqual(coords[8:16], coord_sets[1]) self.assertEqual(coords[16:24], coord_sets[2]) self.assertEqual(coords[24:32], coord_sets[0]) self.assertEqual(coords[32:40], coord_sets[1]) self.assertEqual(coords[40:48], coord_sets[2])
def test_aspect_adjust(self): from lepton.texturizer import SpriteTexturizer coord_set1 = (0, 0, 1, 0, 1, 0.5, 0, 0.5) coord_set2 = (0, 0.5, 0.5, 0.5, 0.5, 1, 0, 1) tex = SpriteTexturizer(0, coords=(coord_set1, coord_set2)) self.failIf(tex.aspect_adjust_width) self.failIf(tex.aspect_adjust_height) sizes = [ (1, 1, 0), (2, 3, 0), ] group = self._make_group(2) for size, p in zip(sizes, group): p.size = size self.assertEqual([tuple(p.size) for p in group], sizes) tex.generate_tex_coords(group) self.assertEqual([tuple(p.size) for p in group], sizes) tex.aspect_adjust_width = True expected = [ (2, 1, 0), (3, 3, 0), ] tex.generate_tex_coords(group) for p, b in zip(group, expected): self.assertVector(p.size, b) for size, p in zip(sizes, group): p.size = size self.assertEqual([tuple(p.size) for p in group], sizes) tex.aspect_adjust_width = False tex.aspect_adjust_height = True expected = [ (1, 0.5, 0), (2, 2, 0), ] tex.generate_tex_coords(group) for p, b in zip(group, expected): self.assertVector(p.size, b)
def test_aspect_adjust(self): from lepton.texturizer import SpriteTexturizer coord_set1 = (0,0, 1,0, 1,0.5, 0,0.5) coord_set2 = (0,0.5, 0.5,0.5, 0.5,1, 0,1) tex = SpriteTexturizer(0, coords=(coord_set1, coord_set2)) self.failIf(tex.aspect_adjust_width) self.failIf(tex.aspect_adjust_height) sizes = [ (1, 1, 0), (2, 3, 0), ] group = self._make_group(2) for size, p in zip(sizes, group): p.size = size self.assertEqual([tuple(p.size) for p in group], sizes) tex.generate_tex_coords(group) self.assertEqual([tuple(p.size) for p in group], sizes) tex.aspect_adjust_width = True expected = [ (2, 1, 0), (3, 3, 0), ] tex.generate_tex_coords(group) for p, b in zip(group, expected): self.assertVector(p.size, b) for size, p in zip(sizes, group): p.size = size self.assertEqual([tuple(p.size) for p in group], sizes) tex.aspect_adjust_width = False tex.aspect_adjust_height = True expected = [ (1, 0.5, 0), (2, 2, 0), ] tex.generate_tex_coords(group) for p, b in zip(group, expected): self.assertVector(p.size, b)