add 32-bit master value tests

This commit is contained in:
justvanrossum 2021-05-04 16:39:20 +02:00
parent 22dda54616
commit 267ab2baba

View File

@ -20,7 +20,23 @@ from fontTools.ttLib.tables._f_v_a_r import Axis
[ [
[10, 20, 40, 60], [10, 20, 40, 60],
[100, 2000, 400, 6000], [100, 2000, 400, 6000],
[100, 22000, 4000, 30000], [177100, 22000, 4000, 30000],
],
),
(
[{}, {"a": 1}],
[
[10, 20],
[42000, 100],
[100, 52000],
],
),
(
[{}, {"a": 1}, {"b": 1}, {"a": 1, "b": 1}],
[
[10, 20, 40, 60],
[40000, 42000, 400, 6000],
[100, 22000, 4000, 173000],
], ],
), ),
], ],
@ -30,26 +46,18 @@ def test_onlineVarStoreBuilder(locations, masterValues):
model = VariationModel(locations) model = VariationModel(locations)
builder = OnlineVarStoreBuilder(axisTags) builder = OnlineVarStoreBuilder(axisTags)
builder.setModel(model) builder.setModel(model)
expectedDeltasAndVarIdxs = [] varIdxs = []
for masters in masterValues: for masters in masterValues:
base, *deltas = model.getDeltas(masters) _, varIdx = builder.storeMasters(masters)
varIdx = builder.storeDeltas(deltas) varIdxs.append(varIdx)
expectedDeltasAndVarIdxs.append((deltas, varIdx))
varStore = builder.finish() varStore = builder.finish()
mapping = varStore.optimize() mapping = varStore.optimize()
expectedDeltasAndVarIdxs = [ varIdxs = [mapping[varIdx] for varIdx in varIdxs]
(deltas, mapping[varIdx]) for deltas, varIdx in expectedDeltasAndVarIdxs
]
for deltas, varIdx in expectedDeltasAndVarIdxs:
major, minor = varIdx >> 16, varIdx & 0xFFFF
storedDeltas = varStore.VarData[major].Item[minor]
assert deltas == storedDeltas
fvarAxes = [buildAxis(axisTag) for axisTag in axisTags] fvarAxes = [buildAxis(axisTag) for axisTag in axisTags]
instancer = VarStoreInstancer(varStore, fvarAxes) instancer = VarStoreInstancer(varStore, fvarAxes)
for masters, (deltas, varIdx) in zip(masterValues, expectedDeltasAndVarIdxs): for masters, varIdx in zip(masterValues, varIdxs):
base, *rest = masters base, *rest = masters
for expectedValue, loc in zip(masters, locations): for expectedValue, loc in zip(masters, locations):
instancer.setLocation(loc) instancer.setLocation(loc)