1*e1fe3e4aSElliott Hughesfrom fontTools.varLib.builder import buildVarData 2*e1fe3e4aSElliott Hughesimport pytest 3*e1fe3e4aSElliott Hughes 4*e1fe3e4aSElliott Hughes 5*e1fe3e4aSElliott Hughes@pytest.mark.parametrize( 6*e1fe3e4aSElliott Hughes "region_indices, items, expected_num_shorts", 7*e1fe3e4aSElliott Hughes [ 8*e1fe3e4aSElliott Hughes ([], [], 0), 9*e1fe3e4aSElliott Hughes ([0], [[1]], 0), 10*e1fe3e4aSElliott Hughes ([0], [[128]], 1), 11*e1fe3e4aSElliott Hughes ([0, 1, 2], [[128, 1, 2], [3, -129, 5], [6, 7, 8]], 2), 12*e1fe3e4aSElliott Hughes ([0, 1, 2], [[0, 128, 2], [3, 4, 5], [6, 7, -129]], 3), 13*e1fe3e4aSElliott Hughes ([0], [[32768]], 0x8001), 14*e1fe3e4aSElliott Hughes ([0, 1, 2], [[32768, 1, 2], [3, -129, 5], [6, 7, 8]], 0x8001), 15*e1fe3e4aSElliott Hughes ([0, 1, 2], [[32768, 1, 2], [3, -32769, 5], [6, 7, 8]], 0x8002), 16*e1fe3e4aSElliott Hughes ([0, 1, 2], [[0, 32768, 2], [3, 4, 5], [6, 7, -32769]], 0x8003), 17*e1fe3e4aSElliott Hughes ], 18*e1fe3e4aSElliott Hughes ids=[ 19*e1fe3e4aSElliott Hughes "0_regions_0_deltas", 20*e1fe3e4aSElliott Hughes "1_region_1_uint8", 21*e1fe3e4aSElliott Hughes "1_region_1_short", 22*e1fe3e4aSElliott Hughes "3_regions_2_shorts_ordered", 23*e1fe3e4aSElliott Hughes "3_regions_2_shorts_unordered", 24*e1fe3e4aSElliott Hughes "1_region_1_long", 25*e1fe3e4aSElliott Hughes "3_regions_1_long_ordered", 26*e1fe3e4aSElliott Hughes "3_regions_2_longs_ordered", 27*e1fe3e4aSElliott Hughes "3_regions_2_longs_unordered", 28*e1fe3e4aSElliott Hughes ], 29*e1fe3e4aSElliott Hughes) 30*e1fe3e4aSElliott Hughesdef test_buildVarData_no_optimize(region_indices, items, expected_num_shorts): 31*e1fe3e4aSElliott Hughes data = buildVarData(region_indices, items, optimize=False) 32*e1fe3e4aSElliott Hughes 33*e1fe3e4aSElliott Hughes assert data.ItemCount == len(items) 34*e1fe3e4aSElliott Hughes assert data.NumShorts == expected_num_shorts 35*e1fe3e4aSElliott Hughes assert data.VarRegionCount == len(region_indices) 36*e1fe3e4aSElliott Hughes assert data.VarRegionIndex == region_indices 37*e1fe3e4aSElliott Hughes assert data.Item == items 38*e1fe3e4aSElliott Hughes 39*e1fe3e4aSElliott Hughes 40*e1fe3e4aSElliott Hughes@pytest.mark.parametrize( 41*e1fe3e4aSElliott Hughes [ 42*e1fe3e4aSElliott Hughes "region_indices", 43*e1fe3e4aSElliott Hughes "items", 44*e1fe3e4aSElliott Hughes "expected_num_shorts", 45*e1fe3e4aSElliott Hughes "expected_regions", 46*e1fe3e4aSElliott Hughes "expected_items", 47*e1fe3e4aSElliott Hughes ], 48*e1fe3e4aSElliott Hughes [ 49*e1fe3e4aSElliott Hughes ( 50*e1fe3e4aSElliott Hughes [0, 1, 2], 51*e1fe3e4aSElliott Hughes [[0, 1, 2], [3, 4, 5], [6, 7, 8]], 52*e1fe3e4aSElliott Hughes 0, 53*e1fe3e4aSElliott Hughes [0, 1, 2], 54*e1fe3e4aSElliott Hughes [[0, 1, 2], [3, 4, 5], [6, 7, 8]], 55*e1fe3e4aSElliott Hughes ), 56*e1fe3e4aSElliott Hughes ( 57*e1fe3e4aSElliott Hughes [0, 1, 2], 58*e1fe3e4aSElliott Hughes [[0, 128, 2], [3, 4, 5], [6, 7, 8]], 59*e1fe3e4aSElliott Hughes 1, 60*e1fe3e4aSElliott Hughes [1, 0, 2], 61*e1fe3e4aSElliott Hughes [[128, 0, 2], [4, 3, 5], [7, 6, 8]], 62*e1fe3e4aSElliott Hughes ), 63*e1fe3e4aSElliott Hughes ( 64*e1fe3e4aSElliott Hughes [0, 1, 2], 65*e1fe3e4aSElliott Hughes [[0, 1, 128], [3, 4, 5], [6, -129, 8]], 66*e1fe3e4aSElliott Hughes 2, 67*e1fe3e4aSElliott Hughes [1, 2, 0], 68*e1fe3e4aSElliott Hughes [[1, 128, 0], [4, 5, 3], [-129, 8, 6]], 69*e1fe3e4aSElliott Hughes ), 70*e1fe3e4aSElliott Hughes ( 71*e1fe3e4aSElliott Hughes [0, 1, 2], 72*e1fe3e4aSElliott Hughes [[128, 1, -129], [3, 4, 5], [6, 7, 8]], 73*e1fe3e4aSElliott Hughes 2, 74*e1fe3e4aSElliott Hughes [0, 2, 1], 75*e1fe3e4aSElliott Hughes [[128, -129, 1], [3, 5, 4], [6, 8, 7]], 76*e1fe3e4aSElliott Hughes ), 77*e1fe3e4aSElliott Hughes ( 78*e1fe3e4aSElliott Hughes [0, 1, 2], 79*e1fe3e4aSElliott Hughes [[0, 1, 128], [3, -129, 5], [256, 7, 8]], 80*e1fe3e4aSElliott Hughes 3, 81*e1fe3e4aSElliott Hughes [0, 1, 2], 82*e1fe3e4aSElliott Hughes [[0, 1, 128], [3, -129, 5], [256, 7, 8]], 83*e1fe3e4aSElliott Hughes ), 84*e1fe3e4aSElliott Hughes ( 85*e1fe3e4aSElliott Hughes [0, 1, 2], 86*e1fe3e4aSElliott Hughes [[0, 128, 2], [0, 4, 5], [0, 7, 8]], 87*e1fe3e4aSElliott Hughes 1, 88*e1fe3e4aSElliott Hughes [1, 2], 89*e1fe3e4aSElliott Hughes [[128, 2], [4, 5], [7, 8]], 90*e1fe3e4aSElliott Hughes ), 91*e1fe3e4aSElliott Hughes ( 92*e1fe3e4aSElliott Hughes [0, 1, 2], 93*e1fe3e4aSElliott Hughes [[0, 32768, 2], [3, 4, 5], [6, 7, 8]], 94*e1fe3e4aSElliott Hughes 0x8001, 95*e1fe3e4aSElliott Hughes [1, 0, 2], 96*e1fe3e4aSElliott Hughes [[32768, 0, 2], [4, 3, 5], [7, 6, 8]], 97*e1fe3e4aSElliott Hughes ), 98*e1fe3e4aSElliott Hughes ( 99*e1fe3e4aSElliott Hughes [0, 1, 2], 100*e1fe3e4aSElliott Hughes [[0, 1, 32768], [3, 4, 5], [6, -32769, 8]], 101*e1fe3e4aSElliott Hughes 0x8002, 102*e1fe3e4aSElliott Hughes [1, 2, 0], 103*e1fe3e4aSElliott Hughes [[1, 32768, 0], [4, 5, 3], [-32769, 8, 6]], 104*e1fe3e4aSElliott Hughes ), 105*e1fe3e4aSElliott Hughes ( 106*e1fe3e4aSElliott Hughes [0, 1, 2], 107*e1fe3e4aSElliott Hughes [[32768, 1, -32769], [3, 4, 5], [6, 7, 8]], 108*e1fe3e4aSElliott Hughes 0x8002, 109*e1fe3e4aSElliott Hughes [0, 2, 1], 110*e1fe3e4aSElliott Hughes [[32768, -32769, 1], [3, 5, 4], [6, 8, 7]], 111*e1fe3e4aSElliott Hughes ), 112*e1fe3e4aSElliott Hughes ( 113*e1fe3e4aSElliott Hughes [0, 1, 2], 114*e1fe3e4aSElliott Hughes [[0, 1, 32768], [3, -32769, 5], [65536, 7, 8]], 115*e1fe3e4aSElliott Hughes 0x8003, 116*e1fe3e4aSElliott Hughes [0, 1, 2], 117*e1fe3e4aSElliott Hughes [[0, 1, 32768], [3, -32769, 5], [65536, 7, 8]], 118*e1fe3e4aSElliott Hughes ), 119*e1fe3e4aSElliott Hughes ( 120*e1fe3e4aSElliott Hughes [0, 1, 2], 121*e1fe3e4aSElliott Hughes [[0, 32768, 2], [0, 4, 5], [0, 7, 8]], 122*e1fe3e4aSElliott Hughes 0x8001, 123*e1fe3e4aSElliott Hughes [1, 2], 124*e1fe3e4aSElliott Hughes [[32768, 2], [4, 5], [7, 8]], 125*e1fe3e4aSElliott Hughes ), 126*e1fe3e4aSElliott Hughes ], 127*e1fe3e4aSElliott Hughes ids=[ 128*e1fe3e4aSElliott Hughes "0/3_shorts_no_reorder", 129*e1fe3e4aSElliott Hughes "1/3_shorts_reorder", 130*e1fe3e4aSElliott Hughes "2/3_shorts_reorder", 131*e1fe3e4aSElliott Hughes "2/3_shorts_same_row_reorder", 132*e1fe3e4aSElliott Hughes "3/3_shorts_no_reorder", 133*e1fe3e4aSElliott Hughes "1/3_shorts_1/3_zeroes", 134*e1fe3e4aSElliott Hughes "1/3_longs_reorder", 135*e1fe3e4aSElliott Hughes "2/3_longs_reorder", 136*e1fe3e4aSElliott Hughes "2/3_longs_same_row_reorder", 137*e1fe3e4aSElliott Hughes "3/3_longs_no_reorder", 138*e1fe3e4aSElliott Hughes "1/3_longs_1/3_zeroes", 139*e1fe3e4aSElliott Hughes ], 140*e1fe3e4aSElliott Hughes) 141*e1fe3e4aSElliott Hughesdef test_buildVarData_optimize( 142*e1fe3e4aSElliott Hughes region_indices, items, expected_num_shorts, expected_regions, expected_items 143*e1fe3e4aSElliott Hughes): 144*e1fe3e4aSElliott Hughes data = buildVarData(region_indices, items, optimize=True) 145*e1fe3e4aSElliott Hughes 146*e1fe3e4aSElliott Hughes assert data.ItemCount == len(items) 147*e1fe3e4aSElliott Hughes assert data.NumShorts == expected_num_shorts 148*e1fe3e4aSElliott Hughes assert data.VarRegionCount == len(expected_regions) 149*e1fe3e4aSElliott Hughes assert data.VarRegionIndex == expected_regions 150*e1fe3e4aSElliott Hughes assert data.Item == expected_items 151*e1fe3e4aSElliott Hughes 152*e1fe3e4aSElliott Hughes 153*e1fe3e4aSElliott Hughesif __name__ == "__main__": 154*e1fe3e4aSElliott Hughes import sys 155*e1fe3e4aSElliott Hughes 156*e1fe3e4aSElliott Hughes sys.exit(pytest.main(sys.argv)) 157