1*e1fe3e4aSElliott Hughesimport fontTools.varLib.iup as iup 2*e1fe3e4aSElliott Hughesimport sys 3*e1fe3e4aSElliott Hughesimport pytest 4*e1fe3e4aSElliott Hughes 5*e1fe3e4aSElliott Hughes 6*e1fe3e4aSElliott Hughesclass IupTest: 7*e1fe3e4aSElliott Hughes # ----- 8*e1fe3e4aSElliott Hughes # Tests 9*e1fe3e4aSElliott Hughes # ----- 10*e1fe3e4aSElliott Hughes 11*e1fe3e4aSElliott Hughes @pytest.mark.parametrize( 12*e1fe3e4aSElliott Hughes "delta, coords, forced", 13*e1fe3e4aSElliott Hughes [ 14*e1fe3e4aSElliott Hughes ([(0, 0)], [(1, 2)], set()), 15*e1fe3e4aSElliott Hughes ([(0, 0), (0, 0), (0, 0)], [(1, 2), (3, 2), (2, 3)], set()), 16*e1fe3e4aSElliott Hughes ( 17*e1fe3e4aSElliott Hughes [(1, 1), (-1, 1), (-1, -1), (1, -1)], 18*e1fe3e4aSElliott Hughes [(0, 0), (2, 0), (2, 2), (0, 2)], 19*e1fe3e4aSElliott Hughes set(), 20*e1fe3e4aSElliott Hughes ), 21*e1fe3e4aSElliott Hughes ( 22*e1fe3e4aSElliott Hughes [ 23*e1fe3e4aSElliott Hughes (-1, 0), 24*e1fe3e4aSElliott Hughes (-1, 0), 25*e1fe3e4aSElliott Hughes (-1, 0), 26*e1fe3e4aSElliott Hughes (-1, 0), 27*e1fe3e4aSElliott Hughes (-1, 0), 28*e1fe3e4aSElliott Hughes (0, 0), 29*e1fe3e4aSElliott Hughes (0, 0), 30*e1fe3e4aSElliott Hughes (0, 0), 31*e1fe3e4aSElliott Hughes (0, 0), 32*e1fe3e4aSElliott Hughes (0, 0), 33*e1fe3e4aSElliott Hughes (0, 0), 34*e1fe3e4aSElliott Hughes (-1, 0), 35*e1fe3e4aSElliott Hughes ], 36*e1fe3e4aSElliott Hughes [ 37*e1fe3e4aSElliott Hughes (-35, -152), 38*e1fe3e4aSElliott Hughes (-86, -101), 39*e1fe3e4aSElliott Hughes (-50, -65), 40*e1fe3e4aSElliott Hughes (0, -116), 41*e1fe3e4aSElliott Hughes (51, -65), 42*e1fe3e4aSElliott Hughes (86, -99), 43*e1fe3e4aSElliott Hughes (35, -151), 44*e1fe3e4aSElliott Hughes (87, -202), 45*e1fe3e4aSElliott Hughes (51, -238), 46*e1fe3e4aSElliott Hughes (-1, -187), 47*e1fe3e4aSElliott Hughes (-53, -239), 48*e1fe3e4aSElliott Hughes (-88, -205), 49*e1fe3e4aSElliott Hughes ], 50*e1fe3e4aSElliott Hughes {11}, 51*e1fe3e4aSElliott Hughes ), 52*e1fe3e4aSElliott Hughes ( 53*e1fe3e4aSElliott Hughes [ 54*e1fe3e4aSElliott Hughes (0, 0), 55*e1fe3e4aSElliott Hughes (1, 0), 56*e1fe3e4aSElliott Hughes (2, 0), 57*e1fe3e4aSElliott Hughes (2, 0), 58*e1fe3e4aSElliott Hughes (0, 0), 59*e1fe3e4aSElliott Hughes (1, 0), 60*e1fe3e4aSElliott Hughes (3, 0), 61*e1fe3e4aSElliott Hughes (3, 0), 62*e1fe3e4aSElliott Hughes (2, 0), 63*e1fe3e4aSElliott Hughes (2, 0), 64*e1fe3e4aSElliott Hughes (0, 0), 65*e1fe3e4aSElliott Hughes (0, 0), 66*e1fe3e4aSElliott Hughes (-1, 0), 67*e1fe3e4aSElliott Hughes (-1, 0), 68*e1fe3e4aSElliott Hughes (-1, 0), 69*e1fe3e4aSElliott Hughes (-3, 0), 70*e1fe3e4aSElliott Hughes (-1, 0), 71*e1fe3e4aSElliott Hughes (0, 0), 72*e1fe3e4aSElliott Hughes (0, 0), 73*e1fe3e4aSElliott Hughes (-2, 0), 74*e1fe3e4aSElliott Hughes (-2, 0), 75*e1fe3e4aSElliott Hughes (-1, 0), 76*e1fe3e4aSElliott Hughes (-1, 0), 77*e1fe3e4aSElliott Hughes (-1, 0), 78*e1fe3e4aSElliott Hughes (-4, 0), 79*e1fe3e4aSElliott Hughes ], 80*e1fe3e4aSElliott Hughes [ 81*e1fe3e4aSElliott Hughes (330, 65), 82*e1fe3e4aSElliott Hughes (401, 65), 83*e1fe3e4aSElliott Hughes (499, 117), 84*e1fe3e4aSElliott Hughes (549, 225), 85*e1fe3e4aSElliott Hughes (549, 308), 86*e1fe3e4aSElliott Hughes (549, 422), 87*e1fe3e4aSElliott Hughes (549, 500), 88*e1fe3e4aSElliott Hughes (497, 600), 89*e1fe3e4aSElliott Hughes (397, 648), 90*e1fe3e4aSElliott Hughes (324, 648), 91*e1fe3e4aSElliott Hughes (271, 648), 92*e1fe3e4aSElliott Hughes (200, 620), 93*e1fe3e4aSElliott Hughes (165, 570), 94*e1fe3e4aSElliott Hughes (165, 536), 95*e1fe3e4aSElliott Hughes (165, 473), 96*e1fe3e4aSElliott Hughes (252, 407), 97*e1fe3e4aSElliott Hughes (355, 407), 98*e1fe3e4aSElliott Hughes (396, 407), 99*e1fe3e4aSElliott Hughes (396, 333), 100*e1fe3e4aSElliott Hughes (354, 333), 101*e1fe3e4aSElliott Hughes (249, 333), 102*e1fe3e4aSElliott Hughes (141, 268), 103*e1fe3e4aSElliott Hughes (141, 203), 104*e1fe3e4aSElliott Hughes (141, 131), 105*e1fe3e4aSElliott Hughes (247, 65), 106*e1fe3e4aSElliott Hughes ], 107*e1fe3e4aSElliott Hughes {5, 15, 24}, 108*e1fe3e4aSElliott Hughes ), 109*e1fe3e4aSElliott Hughes ], 110*e1fe3e4aSElliott Hughes ) 111*e1fe3e4aSElliott Hughes def test_forced_set(self, delta, coords, forced): 112*e1fe3e4aSElliott Hughes f = iup._iup_contour_bound_forced_set(delta, coords) 113*e1fe3e4aSElliott Hughes assert forced == f 114*e1fe3e4aSElliott Hughes 115*e1fe3e4aSElliott Hughes chain1, costs1 = iup._iup_contour_optimize_dp(delta, coords, f) 116*e1fe3e4aSElliott Hughes chain2, costs2 = iup._iup_contour_optimize_dp(delta, coords, set()) 117*e1fe3e4aSElliott Hughes 118*e1fe3e4aSElliott Hughes assert chain1 == chain2, f 119*e1fe3e4aSElliott Hughes assert costs1 == costs2, f 120*e1fe3e4aSElliott Hughes 121*e1fe3e4aSElliott Hughes 122*e1fe3e4aSElliott Hughesif __name__ == "__main__": 123*e1fe3e4aSElliott Hughes sys.exit(pytest.main(sys.argv)) 124