from __future__ import print_function, division, absolute_import from fontTools.varLib.builder import buildVarData import pytest @pytest.mark.parametrize("region_indices, items, expected_num_shorts", [ ([], [], 0), ([0], [[1]], 0), ([0], [[128]], 1), ([0, 1, 2], [[128, 1, 2], [3, -129, 5], [6, 7, 8]], 2), ([0, 1, 2], [[0, 128, 2], [3, 4, 5], [6, 7, -129]], 3), ], ids=[ "0_regions_0_deltas", "1_region_1_uint8", "1_region_1_short", "3_regions_2_shorts_ordered", "3_regions_2_shorts_unordered", ]) def test_buildVarData_no_optimize(region_indices, items, expected_num_shorts): data = buildVarData(region_indices, items, optimize=False) assert data.ItemCount == len(items) assert data.NumShorts == expected_num_shorts assert data.VarRegionCount == len(region_indices) assert data.VarRegionIndex == region_indices assert data.Item == items @pytest.mark.parametrize([ "region_indices", "items", "expected_num_shorts", "expected_regions", "expected_items" ], [ ([0, 1, 2], [[0, 1, 2], [3, 4, 5], [6, 7, 8]], 0, [0, 1, 2], [[0, 1, 2], [3, 4, 5], [6, 7, 8]]), ([0, 1, 2], [[0, 128, 2], [3, 4, 5], [6, 7, 8]], 1, [1, 0, 2], [[128, 0, 2], [4, 3, 5], [7, 6, 8]]), ([0, 1, 2], [[0, 1, 128], [3, 4, 5], [6, -129, 8]], 2, [1, 2, 0], [[1, 128, 0], [4, 5, 3], [-129, 8, 6]]), ([0, 1, 2], [[128, 1, -129], [3, 4, 5], [6, 7, 8]], 2, [0, 2, 1], [[128, -129, 1], [3, 5, 4], [6, 8, 7]]), ([0, 1, 2], [[0, 1, 128], [3, -129, 5], [256, 7, 8]], 3, [0, 1, 2], [[0, 1, 128], [3, -129, 5], [256, 7, 8]]), ([0, 1, 2], [[0, 128, 2], [0, 4, 5], [0, 7, 8]], 1, [1, 2], [[128, 2], [4, 5], [7, 8]]), ], ids=[ "0/3_shorts_no_reorder", "1/3_shorts_reorder", "2/3_shorts_reorder", "2/3_shorts_same_row_reorder", "3/3_shorts_no_reorder", "1/3_shorts_1/3_zeroes", ]) def test_buildVarData_optimize( region_indices, items, expected_num_shorts, expected_regions, expected_items): data = buildVarData(region_indices, items, optimize=True) assert data.ItemCount == len(items) assert data.NumShorts == expected_num_shorts assert data.VarRegionCount == len(expected_regions) assert data.VarRegionIndex == expected_regions assert data.Item == expected_items if __name__ == "__main__": import sys sys.exit(pytest.main(sys.argv))