aboutsummaryrefslogtreecommitdiff
path: root/Tests/varLib/iup_test.py
blob: 76b2af51235e99013d48a62a34b9aaf441bc22b9 (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
import fontTools.varLib.iup as iup
import sys
import pytest


class IupTest:

# -----
# Tests
# -----

    @pytest.mark.parametrize(
        "delta, coords, forced",
        [
            (
                [(0, 0)],
                [(1, 2)],
                set()
            ),
            (
                [(0, 0), (0, 0), (0, 0)],
                [(1, 2), (3, 2), (2, 3)],
                set()
            ),
            (
                [(1, 1), (-1, 1), (-1, -1), (1, -1)],
                [(0, 0), (2, 0), (2, 2), (0, 2)],
                set()
            ),
            (
                [(-1, 0), (-1, 0), (-1, 0), (-1, 0), (-1, 0), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (-1, 0)],
                [(-35, -152), (-86, -101), (-50, -65), (0, -116), (51, -65), (86, -99), (35, -151), (87, -202), (51, -238), (-1, -187), (-53, -239), (-88, -205)],
                {11}
            ),
            (
                [(0, 0), (1, 0), (2, 0), (2, 0), (0, 0), (1, 0), (3, 0), (3, 0), (2, 0), (2, 0), (0, 0), (0, 0), (-1, 0), (-1, 0), (-1, 0), (-3, 0), (-1, 0), (0, 0), (0, 0), (-2, 0), (-2, 0), (-1, 0), (-1, 0), (-1, 0), (-4, 0)],
                [(330, 65), (401, 65), (499, 117), (549, 225), (549, 308), (549, 422), (549, 500), (497, 600), (397, 648), (324, 648), (271, 648), (200, 620), (165, 570), (165, 536), (165, 473), (252, 407), (355, 407), (396, 407), (396, 333), (354, 333), (249, 333), (141, 268), (141, 203), (141, 131), (247, 65)],
                {5, 15, 24}
            ),
        ]
    )
    def test_forced_set(self, delta, coords, forced):
        f = iup._iup_contour_bound_forced_set(delta, coords)
        assert forced == f

        chain1, costs1 = iup._iup_contour_optimize_dp(delta, coords, f)
        chain2, costs2 = iup._iup_contour_optimize_dp(delta, coords, set())

        assert chain1 == chain2, f
        assert costs1 == costs2, f

if __name__ == "__main__":
    sys.exit(pytest.main(sys.argv))