[varStore] Add test for optimize()
Doesn't hit all branches yet.
This commit is contained in:
parent
cb2f5aacd3
commit
e4281b07bc
@ -1,4 +1,6 @@
|
|||||||
import pytest
|
import pytest
|
||||||
|
from io import StringIO
|
||||||
|
from fontTools.misc.xmlWriter import XMLWriter
|
||||||
from fontTools.varLib.models import VariationModel
|
from fontTools.varLib.models import VariationModel
|
||||||
from fontTools.varLib.varStore import OnlineVarStoreBuilder, VarStoreInstancer
|
from fontTools.varLib.varStore import OnlineVarStoreBuilder, VarStoreInstancer
|
||||||
from fontTools.ttLib import TTFont, newTable
|
from fontTools.ttLib import TTFont, newTable
|
||||||
@ -80,3 +82,64 @@ def buildAxis(axisTag):
|
|||||||
axis = Axis()
|
axis = Axis()
|
||||||
axis.axisTag = axisTag
|
axis.axisTag = axisTag
|
||||||
return axis
|
return axis
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize(
|
||||||
|
"numRegions, varData, expectedNumVarData, expectedBytes",
|
||||||
|
[
|
||||||
|
(
|
||||||
|
5,
|
||||||
|
[
|
||||||
|
[10, 10, 0, 0, 20],
|
||||||
|
{3: 300},
|
||||||
|
],
|
||||||
|
1,
|
||||||
|
156,
|
||||||
|
),
|
||||||
|
(
|
||||||
|
5,
|
||||||
|
[
|
||||||
|
[10, 10, 0, 0, 20],
|
||||||
|
[10, 11, 0, 0, 20],
|
||||||
|
[10, 12, 0, 0, 20],
|
||||||
|
[10, 13, 0, 0, 20],
|
||||||
|
{3: 300},
|
||||||
|
],
|
||||||
|
2,
|
||||||
|
186,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
def test_optimize(numRegions, varData, expectedNumVarData, expectedBytes):
|
||||||
|
locations = [{i: i / 16384.0} for i in range(numRegions)]
|
||||||
|
axisTags = sorted({k for loc in locations for k in loc})
|
||||||
|
|
||||||
|
model = VariationModel(locations)
|
||||||
|
builder = OnlineVarStoreBuilder(axisTags)
|
||||||
|
builder.setModel(model)
|
||||||
|
|
||||||
|
for data in varData:
|
||||||
|
if type(data) is dict:
|
||||||
|
newData = [0] * numRegions
|
||||||
|
for k, v in data.items():
|
||||||
|
newData[k] = v
|
||||||
|
data = newData
|
||||||
|
|
||||||
|
builder.storeMasters(data)
|
||||||
|
|
||||||
|
varStore = builder.finish()
|
||||||
|
mapping = varStore.optimize()
|
||||||
|
|
||||||
|
assert len(varStore.VarData) == expectedNumVarData
|
||||||
|
|
||||||
|
dummyFont = TTFont()
|
||||||
|
|
||||||
|
writer = XMLWriter(StringIO())
|
||||||
|
varStore.toXML(writer, dummyFont)
|
||||||
|
xml = writer.file.getvalue()
|
||||||
|
|
||||||
|
writer = OTTableWriter()
|
||||||
|
varStore.compile(writer, dummyFont)
|
||||||
|
data = writer.getAllData()
|
||||||
|
|
||||||
|
assert len(data) == expectedBytes, xml
|
||||||
|
Loading…
x
Reference in New Issue
Block a user