[specializer_test] Simplify tests

No need to go to string and back...
This commit is contained in:
Behdad Esfahbod 2024-11-12 19:44:50 -07:00
parent 6f37252e85
commit 4e2968462a

View File

@ -23,9 +23,7 @@ def charstr_specialize(charstr, **kwargs):
return programToString(specializeProgram(stringToProgram(charstr), **kwargs)) return programToString(specializeProgram(stringToProgram(charstr), **kwargs))
def charstr_stack_use(charstr, getNumRegions=None): def program_stack_use(program, getNumRegions=None):
program = stringToProgram(charstr)
vsindex = None vsindex = None
maxStack = 0 maxStack = 0
stack = [] stack = []
@ -588,17 +586,17 @@ class CFFSpecializeProgramTest:
numRegions = 15 numRegions = 15
numOps = 600 numOps = 600
getNumRegions = lambda iv: numRegions getNumRegions = lambda iv: numRegions
blend_one = " ".join([str(i) for i in range(1 + numRegions)] + ["1", "blend"]) blend_one = [i for i in range(1 + numRegions)] + [1, "blend"]
operands = " ".join([blend_one] * 6) operands = blend_one * 6
operator = "rrcurveto" operator = "rrcurveto"
charstr = " ".join([operands, operator] * numOps) program = (operands + [operator]) * numOps
specialized = charstr_specialize( specialized = specializeProgram(
charstr, program,
getNumRegions=getNumRegions, getNumRegions=getNumRegions,
maxstack=maxStack, maxstack=maxStack,
generalizeFirst=False, generalizeFirst=False,
) )
stack_use = charstr_stack_use(specialized, getNumRegions=getNumRegions) stack_use = program_stack_use(specialized, getNumRegions=getNumRegions)
assert maxStack - numRegions < stack_use < maxStack assert maxStack - numRegions < stack_use < maxStack
def test_maxstack_commands(self): def test_maxstack_commands(self):
@ -606,17 +604,17 @@ class CFFSpecializeProgramTest:
numRegions = 400 numRegions = 400
numOps = 2 numOps = 2
getNumRegions = lambda iv: numRegions getNumRegions = lambda iv: numRegions
blend_one = " ".join([str(i) for i in range(1 + numRegions)] + ["1", "blend"]) blend_one = [i for i in range(1 + numRegions)] + [1, "blend"]
operands = " ".join([blend_one] * 6) operands = blend_one * 6
operator = "rrcurveto" operator = "rrcurveto"
charstr = " ".join([operands, operator] * numOps) program = (operands + [operator]) * numOps
specialized = charstr_specialize( specialized = specializeProgram(
charstr, program,
getNumRegions=getNumRegions, getNumRegions=getNumRegions,
maxstack=maxStack, maxstack=maxStack,
generalizeFirst=False, generalizeFirst=False,
) )
assert specialized.index("rrcurveto") == len(specialized) - len("rrcurveto") assert specialized.index("rrcurveto") == len(specialized) - 1
class CFF2VFTestSpecialize(DataFilesHandler): class CFF2VFTestSpecialize(DataFilesHandler):