Example #1
0
    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)
Example #2
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)
Example #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
Example #4
0
 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()
Example #5
0
 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))
Example #6
0
 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])
Example #7
0
 def checkBadLoad(self, str):
     g = gradient.Gradient()
     s = io.StringIO(str)
     self.assertRaises(Exception, g.load, s)
     self.assertWellFormedGradient(g)
Example #8
0
    def testCreate(self):
        g = gradient.Gradient()

        self.assertEqual(len(g.segments), 1)
        self.assertWellFormedGradient(g)
Example #9
0
#!/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")
Example #10
0
 def testRandomizeSpheres(self):
     g = gradient.Gradient()
     g.randomize_spheres(10)
     self.assertEqual(10, len(g.segments))
     self.assertWellFormedGradient(g)
Example #11
0
 def testRandomizeComplementary(self):
     g = gradient.Gradient()
     g.randomize_complementary(10)
     self.assertEqual(10 - 1, len(g.segments))
     self.assertWellFormedGradient(g)