1from __future__ import print_function, division, absolute_import 2from fontTools.varLib.builder import buildVarData 3import pytest 4 5 6@pytest.mark.parametrize("region_indices, items, expected_num_shorts", [ 7 ([], [], 0), 8 ([0], [[1]], 0), 9 ([0], [[128]], 1), 10 ([0, 1, 2], [[128, 1, 2], [3, -129, 5], [6, 7, 8]], 2), 11 ([0, 1, 2], [[0, 128, 2], [3, 4, 5], [6, 7, -129]], 3), 12], ids=[ 13 "0_regions_0_deltas", 14 "1_region_1_uint8", 15 "1_region_1_short", 16 "3_regions_2_shorts_ordered", 17 "3_regions_2_shorts_unordered", 18]) 19def test_buildVarData_no_optimize(region_indices, items, expected_num_shorts): 20 data = buildVarData(region_indices, items, optimize=False) 21 22 assert data.ItemCount == len(items) 23 assert data.NumShorts == expected_num_shorts 24 assert data.VarRegionCount == len(region_indices) 25 assert data.VarRegionIndex == region_indices 26 assert data.Item == items 27 28 29@pytest.mark.parametrize([ 30 "region_indices", "items", "expected_num_shorts", 31 "expected_regions", "expected_items" 32], [ 33 ([0, 1, 2], [[0, 1, 2], [3, 4, 5], [6, 7, 8]], 0, 34 [0, 1, 2], [[0, 1, 2], [3, 4, 5], [6, 7, 8]]), 35 ([0, 1, 2], [[0, 128, 2], [3, 4, 5], [6, 7, 8]], 1, 36 [1, 0, 2], [[128, 0, 2], [4, 3, 5], [7, 6, 8]]), 37 ([0, 1, 2], [[0, 1, 128], [3, 4, 5], [6, -129, 8]], 2, 38 [1, 2, 0], [[1, 128, 0], [4, 5, 3], [-129, 8, 6]]), 39 ([0, 1, 2], [[128, 1, -129], [3, 4, 5], [6, 7, 8]], 2, 40 [0, 2, 1], [[128, -129, 1], [3, 5, 4], [6, 8, 7]]), 41 ([0, 1, 2], [[0, 1, 128], [3, -129, 5], [256, 7, 8]], 3, 42 [0, 1, 2], [[0, 1, 128], [3, -129, 5], [256, 7, 8]]), 43 ([0, 1, 2], [[0, 128, 2], [0, 4, 5], [0, 7, 8]], 1, 44 [1, 2], [[128, 2], [4, 5], [7, 8]]), 45], ids=[ 46 "0/3_shorts_no_reorder", 47 "1/3_shorts_reorder", 48 "2/3_shorts_reorder", 49 "2/3_shorts_same_row_reorder", 50 "3/3_shorts_no_reorder", 51 "1/3_shorts_1/3_zeroes", 52]) 53def test_buildVarData_optimize( 54 region_indices, items, expected_num_shorts, expected_regions, 55 expected_items): 56 data = buildVarData(region_indices, items, optimize=True) 57 58 assert data.ItemCount == len(items) 59 assert data.NumShorts == expected_num_shorts 60 assert data.VarRegionCount == len(expected_regions) 61 assert data.VarRegionIndex == expected_regions 62 assert data.Item == expected_items 63 64 65if __name__ == "__main__": 66 import sys 67 sys.exit(pytest.main(sys.argv)) 68