def testRemoveSmooth(self): # test removal of segments g = gradient.Gradient() g.segments = self.three_segments() self.assertWellFormedGradient(g) self.checkGreyGradient(g, 0.5, lambda x, mid: x) # remove middle one g.remove(1, True) self.assertEqual(len(g.segments), 2) self.assertWellFormedGradient(g) self.checkGreyGradient(g, 0.5, lambda x, mid: x) self.assertEqual(g.segments[0].right, 0.5) # recreate and remove left one g.segments = self.three_segments() self.assertWellFormedGradient(g) self.checkGreyGradient(g, 0.5, lambda x, mid: x) g.remove(0, True) self.assertEqual(len(g.segments), 2) self.assertWellFormedGradient(g) self.checkGreyGradient(g, 0.5, lambda x, mid: x) self.assertEqual(g.segments[0].right, 2.0 / 3.0) # recreate and remove right one g.segments = self.three_segments() self.assertWellFormedGradient(g) self.checkGreyGradient(g, 0.5, lambda x, mid: x) g.remove(2, True) self.assertEqual(len(g.segments), 2) self.assertWellFormedGradient(g) self.checkGreyGradient(g, 0.5, lambda x, mid: x) self.assertEqual(g.segments[1].left, 1.0 / 3.0)
def testRemove(self): # test removal of segments g = gradient.Gradient() # shouldn't be able to remove last segment self.assertRaises(gradient.Error, g.remove, 0.0) g.segments = self.three_segments() self.assertWellFormedGradient(g) self.checkGreyGradient(g, 0.5, lambda x, mid: x) # remove middle one g.remove(1) self.assertEqual(len(g.segments), 2) self.assertWellFormedGradient(g) self.assertEqual(g.segments[0].right, 0.5) # recreate and remove left one g.segments = self.three_segments() self.assertWellFormedGradient(g) self.checkGreyGradient(g, 0.5, lambda x, mid: x) g.remove(0) self.assertEqual(len(g.segments), 2) self.assertWellFormedGradient(g) self.assertEqual(g.segments[0].right, 2.0 / 3.0) # recreate and remove right one g.segments = self.three_segments() self.assertWellFormedGradient(g) self.checkGreyGradient(g, 0.5, lambda x, mid: x) g.remove(2) self.assertEqual(len(g.segments), 2) self.assertWellFormedGradient(g) self.assertEqual(g.segments[1].left, 1.0 / 3.0)
def checkColorMapAndGradientEquivalent(self, colorlist, maxdiff=0): grad = gradient.Gradient() grad.load_list(colorlist, maxdiff) self.assertWellFormedGradient(grad) if maxdiff != 0: # don't have any robust metric for how close this will be return cmap = fract4dc.cmap_create(colorlist) for i in range(1000): fi = i / 1000.0 (r, g, b, a) = grad.get_color_at(fi) cmap_color = fract4dc.cmap_lookup(cmap, fi) grad_color = (int(r * 255.0), int(g * 255.0), int(b * 255.0), int(a * 255.0)) self.assertNearlyEqual( grad_color, cmap_color, "colorlist(%s) = %s but gradient(%s) = %s" % (fi, cmap_color, fi, grad_color), 1.5) return grad
def setUp(self): self.compiler = Test.g_comp self.compiler.load_formula_file("gf4d.frm") self.compiler.load_formula_file("gf4d.cfrm") self.gradient = gradient.Gradient()
def testSetColorOutOfBounds(self): g = gradient.Gradient() self.assertEqual(False, g.set_color(-1, True, 0.2, 0.7, 0.9)) self.assertEqual(False, g.set_color(7, True, 0.2, 0.7, 0.9))
def testSetColor(self): g = gradient.Gradient() self.assertEqual(True, g.set_color(0, True, 0.2, 0.7, 0.9)) self.assertEqual(g.segments[0].left_color, [0.2, 0.7, 0.9, 1.0]) self.assertEqual(True, g.set_color(0, False, 0.3, 0.8, 0.1)) self.assertEqual(g.segments[0].right_color, [0.3, 0.8, 0.1, 1.0])
def checkBadLoad(self, str): g = gradient.Gradient() s = io.StringIO(str) self.assertRaises(Exception, g.load, s) self.assertWellFormedGradient(g)
def testCreate(self): g = gradient.Gradient() self.assertEqual(len(g.segments), 1) self.assertWellFormedGradient(g)
#!/usr/bin/env python3 import io import copy from . import testbase from fract4d_compiler import fracttypes, fctutils from fract4d import formsettings, gradient g_grad = gradient.Gradient() class Parent: def __init__(self): self.dirty = False self.changes = 0 def changed(self): self.dirty = True self.changes += 1 class Test(testbase.ClassSetup): @classmethod def setUpClass(cls): super().setUpClass() cls.g_comp.load_formula_file("gf4d.frm") cls.g_comp.load_formula_file("test.cfrm") cls.g_comp.load_formula_file("gf4d.cfrm")
def testRandomizeSpheres(self): g = gradient.Gradient() g.randomize_spheres(10) self.assertEqual(10, len(g.segments)) self.assertWellFormedGradient(g)
def testRandomizeComplementary(self): g = gradient.Gradient() g.randomize_complementary(10) self.assertEqual(10 - 1, len(g.segments)) self.assertWellFormedGradient(g)