124 lines
3.3 KiB
Python
124 lines
3.3 KiB
Python
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))
|