aboutsummaryrefslogtreecommitdiff
path: root/Tests/varLib/iup_test.py
diff options
context:
space:
mode:
Diffstat (limited to 'Tests/varLib/iup_test.py')
-rw-r--r--Tests/varLib/iup_test.py53
1 files changed, 53 insertions, 0 deletions
diff --git a/Tests/varLib/iup_test.py b/Tests/varLib/iup_test.py
new file mode 100644
index 00000000..76b2af51
--- /dev/null
+++ b/Tests/varLib/iup_test.py
@@ -0,0 +1,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))