From 35b9efe6488bd7c550e013d6d57bf030f22f9762 Mon Sep 17 00:00:00 2001 From: Cosimo Lupo Date: Fri, 10 Mar 2017 16:00:57 +0000 Subject: [PATCH] [varLib.builder_test] added unit tests for buildVarData https://github.com/fonttools/fonttools/commit/b2825ff6b3e98cb5c36363e4c88d8e075366f08b#commitcomment-21256990 Note that the "Tests/varLib/__init__.py" file is necessary so that pytest can distinguish between same-named test modules (e.g. we have another "builder_test.py" file in Tests/feaLib). --- Tests/varLib/__init__.py | 0 Tests/varLib/builder_test.py | 64 ++++++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 Tests/varLib/__init__.py create mode 100644 Tests/varLib/builder_test.py diff --git a/Tests/varLib/__init__.py b/Tests/varLib/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/Tests/varLib/builder_test.py b/Tests/varLib/builder_test.py new file mode 100644 index 000000000..499265ad4 --- /dev/null +++ b/Tests/varLib/builder_test.py @@ -0,0 +1,64 @@ +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]]), +], 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", +]) +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(region_indices) + assert data.VarRegionIndex == expected_regions + assert data.Item == expected_items + + +if __name__ == "__main__": + import sys + sys.exit(pytest.main(sys.argv))