[varLib.models] Port getMasterScalars tests from Just

https://github.com/fonttools/fonttools/pull/3380#issuecomment-1846051270
This commit is contained in:
Behdad Esfahbod 2023-12-07 13:34:15 -07:00
parent ae69c22df8
commit 0edb0072f3

View File

@ -192,6 +192,17 @@ def test_modeling_error(numLocations, numSamples):
# print("{:d} {:.2} {:.2}".format(i, err, err_bad)) # print("{:d} {:.2} {:.2}".format(i, err, err_bad))
locationsA = [{}, {"wght": 1}, {"wdth": 1}]
locationsB = [{}, {"wght": 1}, {"wdth": 1}, {"wght": 1, "wdth": 1}]
locationsC = [
{},
{"wght": 0.5},
{"wght": 1},
{"wdth": 1},
{"wght": 1, "wdth": 1},
]
class VariationModelTest(object): class VariationModelTest(object):
@pytest.mark.parametrize( @pytest.mark.parametrize(
"locations, axisOrder, sortedLocs, supports, deltaWeights", "locations, axisOrder, sortedLocs, supports, deltaWeights",
@ -441,3 +452,81 @@ class VariationModelTest(object):
assert interpolatedValue == expectedValue assert interpolatedValue == expectedValue
assert masterScalars == model.getMasterScalars(instanceLocation) assert masterScalars == model.getMasterScalars(instanceLocation)
@pytest.mark.parametrize(
"masterLocations, location, expected",
[
(locationsA, {"wght": 0, "wdth": 0}, [1, 0, 0]),
(
locationsA,
{"wght": 0.5, "wdth": 0},
[0.5, 0.5, 0],
),
(locationsA, {"wght": 1, "wdth": 0}, [0, 1, 0]),
(
locationsA,
{"wght": 0, "wdth": 0.5},
[0.5, 0, 0.5],
),
(locationsA, {"wght": 0, "wdth": 1}, [0, 0, 1]),
(locationsA, {"wght": 1, "wdth": 1}, [-1, 1, 1]),
(
locationsA,
{"wght": 0.5, "wdth": 0.5},
[0, 0.5, 0.5],
),
(
locationsA,
{"wght": 0.75, "wdth": 0.75},
[-0.5, 0.75, 0.75],
),
(
locationsB,
{"wght": 1, "wdth": 1},
[0, 0, 0, 1],
),
(
locationsB,
{"wght": 0.5, "wdth": 0},
[0.5, 0.5, 0, 0],
),
(
locationsB,
{"wght": 1, "wdth": 0.5},
[0, 0.5, 0, 0.5],
),
(
locationsB,
{"wght": 0.5, "wdth": 0.5},
[0.25, 0.25, 0.25, 0.25],
),
(
locationsC,
{"wght": 0.5, "wdth": 0},
[0, 1, 0, 0, 0],
),
(
locationsC,
{"wght": 0.25, "wdth": 0},
[0.5, 0.5, 0, 0, 0],
),
(
locationsC,
{"wght": 0.75, "wdth": 0},
[0, 0.5, 0.5, 0, 0],
),
(
locationsC,
{"wght": 0.5, "wdth": 1},
[-0.5, 1, -0.5, 0.5, 0.5],
),
(
locationsC,
{"wght": 0.75, "wdth": 1},
[-0.25, 0.5, -0.25, 0.25, 0.75],
),
],
)
def test_getMasterLocations(self, masterLocations, location, expected):
model = VariationModel(masterLocations)
assert model.getMasterScalars(location) == expected