aboutsummaryrefslogtreecommitdiff
path: root/Tests/pens/boundsPen_test.py
blob: 190161f319ef78f0b2e8c9b91717a2459bbb4edd (plain)
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
from fontTools.pens.boundsPen import BoundsPen, ControlBoundsPen
import unittest


def draw_(pen):
    pen.moveTo((0, 0))
    pen.lineTo((0, 100))
    pen.qCurveTo((50, 75), (60, 50), (50, 25), (0, 0))
    pen.curveTo((-50, 25), (-60, 50), (-50, 75), (0, 100))
    pen.closePath()


def bounds_(pen):
    return " ".join(["%.0f" % c for c in pen.bounds])


class BoundsPenTest(unittest.TestCase):
    def test_draw(self):
        pen = BoundsPen(None)
        draw_(pen)
        self.assertEqual("-55 0 58 100", bounds_(pen))

    def test_empty(self):
        pen = BoundsPen(None)
        self.assertEqual(None, pen.bounds)

    def test_curve(self):
        pen = BoundsPen(None)
        pen.moveTo((0, 0))
        pen.curveTo((20, 10), (90, 40), (0, 0))
        self.assertEqual("0 0 45 20", bounds_(pen))

    def test_quadraticCurve(self):
        pen = BoundsPen(None)
        pen.moveTo((0, 0))
        pen.qCurveTo((6, 6), (10, 0))
        self.assertEqual("0 0 10 3", bounds_(pen))


class ControlBoundsPenTest(unittest.TestCase):
    def test_draw(self):
        pen = ControlBoundsPen(None)
        draw_(pen)
        self.assertEqual("-55 0 60 100", bounds_(pen))

    def test_empty(self):
        pen = ControlBoundsPen(None)
        self.assertEqual(None, pen.bounds)

    def test_curve(self):
        pen = ControlBoundsPen(None)
        pen.moveTo((0, 0))
        pen.curveTo((20, 10), (90, 40), (0, 0))
        self.assertEqual("0 0 90 40", bounds_(pen))

    def test_quadraticCurve(self):
        pen = ControlBoundsPen(None)
        pen.moveTo((0, 0))
        pen.qCurveTo((6, 6), (10, 0))
        self.assertEqual("0 0 10 6", bounds_(pen))

    def test_singlePoint(self):
        pen = ControlBoundsPen(None)
        pen.moveTo((-5, 10))
        self.assertEqual("-5 10 -5 10", bounds_(pen))

    def test_ignoreSinglePoint(self):
        pen = ControlBoundsPen(None, ignoreSinglePoints=True)
        pen.moveTo((0, 10))
        self.assertEqual(None, pen.bounds)


if __name__ == "__main__":
    import sys

    sys.exit(unittest.main())