示例#1
0
class TestBezier(unittest.TestCase):
    def setUp(self):
        controlpoints = [[i, random.random()] for i in range(15)]
        self.bezier = Bezier(controlpoints)

    def test_get_value(self):
        val = random.random()
        self.assertAlmostEqual(self.bezier(val)[0], self.bezier(val)[0])
        self.assertAlmostEqual(self.bezier(val)[1], self.bezier(val)[1])

    def test_fit(self):
        num = len(self.bezier.controlpoints)
        to_fit = self.bezier.get_sequence()
        bezier2 = Bezier.fit(to_fit, numpoints=num)
        for p1, p2 in zip(self.bezier.controlpoints, bezier2.controlpoints):
            self.assertAlmostEqual(p1[0], p2[0], 0)
            self.assertAlmostEqual(p1[1], p2[1], 0)

    def test_length(self):
        self.bezier.controlpoints = [[0, 0], [2, 0]]
        self.assertAlmostEqual(self.bezier.get_length(10), 2.)

    def test_get_sequence(self):
        sequence = self.bezier.get_sequence(100)