diff options
Diffstat (limited to 'Tests/ttLib/tables/S_T_A_T_test.py')
-rw-r--r-- | Tests/ttLib/tables/S_T_A_T_test.py | 236 |
1 files changed, 117 insertions, 119 deletions
diff --git a/Tests/ttLib/tables/S_T_A_T_test.py b/Tests/ttLib/tables/S_T_A_T_test.py index c5c12341..947ff195 100644 --- a/Tests/ttLib/tables/S_T_A_T_test.py +++ b/Tests/ttLib/tables/S_T_A_T_test.py @@ -5,53 +5,53 @@ import unittest STAT_DATA = deHexStr( - '0001 0000 ' # 0: Version=1.0 - '0008 0002 ' # 4: DesignAxisSize=8, DesignAxisCount=2 - '0000 0012 ' # 8: OffsetToDesignAxes=18 - '0003 0000 0022 ' # 12: AxisValueCount=3, OffsetToAxisValueOffsets=34 - '7767 6874 ' # 18: DesignAxis[0].AxisTag='wght' - '012D 0002 ' # 22: DesignAxis[0].NameID=301, .AxisOrdering=2 - '5445 5354 ' # 26: DesignAxis[1].AxisTag='TEST' - '012E 0001 ' # 30: DesignAxis[1].NameID=302, .AxisOrdering=1 - '0006 0012 0026 ' # 34: AxisValueOffsets = [6, 18, 38] (+34) - '0001 0000 0000 ' # 40: AxisValue[0].Format=1, .AxisIndex=0, .Flags=0 - '0191 0190 0000 ' # 46: AxisValue[0].ValueNameID=401, .Value=400.0 - '0002 0001 0000 ' # 52: AxisValue[1].Format=2, .AxisIndex=1, .Flags=0 - '0192 ' # 58: AxisValue[1].ValueNameID=402 - '0002 0000 ' # 60: AxisValue[1].NominalValue=2.0 - '0001 0000 ' # 64: AxisValue[1].RangeMinValue=1.0 - '0003 0000 ' # 68: AxisValue[1].RangeMaxValue=3.0 - '0003 0000 0000 ' # 72: AxisValue[2].Format=3, .AxisIndex=0, .Flags=0 - '0002 ' # 78: AxisValue[2].ValueNameID=2 'Regular' - '0190 0000 02BC 0000 ' # 80: AxisValue[2].Value=400.0, .LinkedValue=700.0 -) # 88: <end> -assert(len(STAT_DATA) == 88) + "0001 0000 " # 0: Version=1.0 + "0008 0002 " # 4: DesignAxisSize=8, DesignAxisCount=2 + "0000 0012 " # 8: OffsetToDesignAxes=18 + "0003 0000 0022 " # 12: AxisValueCount=3, OffsetToAxisValueOffsets=34 + "7767 6874 " # 18: DesignAxis[0].AxisTag='wght' + "012D 0002 " # 22: DesignAxis[0].NameID=301, .AxisOrdering=2 + "5445 5354 " # 26: DesignAxis[1].AxisTag='TEST' + "012E 0001 " # 30: DesignAxis[1].NameID=302, .AxisOrdering=1 + "0006 0012 0026 " # 34: AxisValueOffsets = [6, 18, 38] (+34) + "0001 0000 0000 " # 40: AxisValue[0].Format=1, .AxisIndex=0, .Flags=0 + "0191 0190 0000 " # 46: AxisValue[0].ValueNameID=401, .Value=400.0 + "0002 0001 0000 " # 52: AxisValue[1].Format=2, .AxisIndex=1, .Flags=0 + "0192 " # 58: AxisValue[1].ValueNameID=402 + "0002 0000 " # 60: AxisValue[1].NominalValue=2.0 + "0001 0000 " # 64: AxisValue[1].RangeMinValue=1.0 + "0003 0000 " # 68: AxisValue[1].RangeMaxValue=3.0 + "0003 0000 0000 " # 72: AxisValue[2].Format=3, .AxisIndex=0, .Flags=0 + "0002 " # 78: AxisValue[2].ValueNameID=2 'Regular' + "0190 0000 02BC 0000 " # 80: AxisValue[2].Value=400.0, .LinkedValue=700.0 +) # 88: <end> +assert len(STAT_DATA) == 88 STAT_XML = [ '<Version value="0x00010000"/>', '<DesignAxisRecordSize value="8"/>', - '<!-- DesignAxisCount=2 -->', - '<DesignAxisRecord>', + "<!-- DesignAxisCount=2 -->", + "<DesignAxisRecord>", ' <Axis index="0">', ' <AxisTag value="wght"/>', ' <AxisNameID value="301"/>', ' <AxisOrdering value="2"/>', - ' </Axis>', + " </Axis>", ' <Axis index="1">', ' <AxisTag value="TEST"/>', ' <AxisNameID value="302"/>', ' <AxisOrdering value="1"/>', - ' </Axis>', - '</DesignAxisRecord>', - '<!-- AxisValueCount=3 -->', - '<AxisValueArray>', + " </Axis>", + "</DesignAxisRecord>", + "<!-- AxisValueCount=3 -->", + "<AxisValueArray>", ' <AxisValue index="0" Format="1">', ' <AxisIndex value="0"/>', ' <Flags value="0"/>', ' <ValueNameID value="401"/>', ' <Value value="400.0"/>', - ' </AxisValue>', + " </AxisValue>", ' <AxisValue index="1" Format="2">', ' <AxisIndex value="1"/>', ' <Flags value="0"/>', @@ -59,204 +59,202 @@ STAT_XML = [ ' <NominalValue value="2.0"/>', ' <RangeMinValue value="1.0"/>', ' <RangeMaxValue value="3.0"/>', - ' </AxisValue>', + " </AxisValue>", ' <AxisValue index="2" Format="3">', ' <AxisIndex value="0"/>', ' <Flags value="0"/>', ' <ValueNameID value="2"/>', ' <Value value="400.0"/>', ' <LinkedValue value="700.0"/>', - ' </AxisValue>', - '</AxisValueArray>', + " </AxisValue>", + "</AxisValueArray>", ] # Contains junk data for making sure we get our offset decoding right. STAT_DATA_WITH_AXIS_JUNK = deHexStr( - '0001 0000 ' # 0: Version=1.0 - '000A 0002 ' # 4: DesignAxisSize=10, DesignAxisCount=2 - '0000 0012 ' # 8: OffsetToDesignAxes=18 - '0000 0000 0000 ' # 12: AxisValueCount=3, OffsetToAxisValueOffsets=34 - '7767 6874 ' # 18: DesignAxis[0].AxisTag='wght' - '012D 0002 ' # 22: DesignAxis[0].NameID=301, .AxisOrdering=2 - 'DEAD ' # 26: <junk> - '5445 5354 ' # 28: DesignAxis[1].AxisTag='TEST' - '012E 0001 ' # 32: DesignAxis[1].NameID=302, .AxisOrdering=1 - 'BEEF ' # 36: <junk> -) # 38: <end> + "0001 0000 " # 0: Version=1.0 + "000A 0002 " # 4: DesignAxisSize=10, DesignAxisCount=2 + "0000 0012 " # 8: OffsetToDesignAxes=18 + "0000 0000 0000 " # 12: AxisValueCount=3, OffsetToAxisValueOffsets=34 + "7767 6874 " # 18: DesignAxis[0].AxisTag='wght' + "012D 0002 " # 22: DesignAxis[0].NameID=301, .AxisOrdering=2 + "DEAD " # 26: <junk> + "5445 5354 " # 28: DesignAxis[1].AxisTag='TEST' + "012E 0001 " # 32: DesignAxis[1].NameID=302, .AxisOrdering=1 + "BEEF " # 36: <junk> +) # 38: <end> -assert(len(STAT_DATA_WITH_AXIS_JUNK) == 38) +assert len(STAT_DATA_WITH_AXIS_JUNK) == 38 STAT_XML_WITH_AXIS_JUNK = [ '<Version value="0x00010000"/>', '<DesignAxisRecordSize value="10"/>', - '<!-- DesignAxisCount=2 -->', - '<DesignAxisRecord>', + "<!-- DesignAxisCount=2 -->", + "<DesignAxisRecord>", ' <Axis index="0">', ' <AxisTag value="wght"/>', ' <AxisNameID value="301"/>', ' <AxisOrdering value="2"/>', ' <MoreBytes index="0" value="222"/>', # 0xDE ' <MoreBytes index="1" value="173"/>', # 0xAD - ' </Axis>', + " </Axis>", ' <Axis index="1">', ' <AxisTag value="TEST"/>', ' <AxisNameID value="302"/>', ' <AxisOrdering value="1"/>', ' <MoreBytes index="0" value="190"/>', # 0xBE ' <MoreBytes index="1" value="239"/>', # 0xEF - ' </Axis>', - '</DesignAxisRecord>', - '<!-- AxisValueCount=0 -->', + " </Axis>", + "</DesignAxisRecord>", + "<!-- AxisValueCount=0 -->", ] STAT_DATA_AXIS_VALUE_FORMAT3 = deHexStr( - '0001 0000 ' # 0: Version=1.0 - '0008 0001 ' # 4: DesignAxisSize=8, DesignAxisCount=1 - '0000 0012 ' # 8: OffsetToDesignAxes=18 - '0001 ' # 12: AxisValueCount=1 - '0000 001A ' # 14: OffsetToAxisValueOffsets=26 - '7767 6874 ' # 18: DesignAxis[0].AxisTag='wght' - '0102 ' # 22: DesignAxis[0].AxisNameID=258 'Weight' - '0000 ' # 24: DesignAxis[0].AxisOrdering=0 - '0002 ' # 26: AxisValueOffsets=[2] (+26) - '0003 ' # 28: AxisValue[0].Format=3 - '0000 0002 ' # 30: AxisValue[0].AxisIndex=0, .Flags=0x2 - '0002 ' # 34: AxisValue[0].ValueNameID=2 'Regular' - '0190 0000 ' # 36: AxisValue[0].Value=400.0 - '02BC 0000 ' # 40: AxisValue[0].LinkedValue=700.0 -) # 44: <end> -assert(len(STAT_DATA_AXIS_VALUE_FORMAT3) == 44) + "0001 0000 " # 0: Version=1.0 + "0008 0001 " # 4: DesignAxisSize=8, DesignAxisCount=1 + "0000 0012 " # 8: OffsetToDesignAxes=18 + "0001 " # 12: AxisValueCount=1 + "0000 001A " # 14: OffsetToAxisValueOffsets=26 + "7767 6874 " # 18: DesignAxis[0].AxisTag='wght' + "0102 " # 22: DesignAxis[0].AxisNameID=258 'Weight' + "0000 " # 24: DesignAxis[0].AxisOrdering=0 + "0002 " # 26: AxisValueOffsets=[2] (+26) + "0003 " # 28: AxisValue[0].Format=3 + "0000 0002 " # 30: AxisValue[0].AxisIndex=0, .Flags=0x2 + "0002 " # 34: AxisValue[0].ValueNameID=2 'Regular' + "0190 0000 " # 36: AxisValue[0].Value=400.0 + "02BC 0000 " # 40: AxisValue[0].LinkedValue=700.0 +) # 44: <end> +assert len(STAT_DATA_AXIS_VALUE_FORMAT3) == 44 STAT_XML_AXIS_VALUE_FORMAT3 = [ '<Version value="0x00010000"/>', '<DesignAxisRecordSize value="8"/>', - '<!-- DesignAxisCount=1 -->', - '<DesignAxisRecord>', + "<!-- DesignAxisCount=1 -->", + "<DesignAxisRecord>", ' <Axis index="0">', ' <AxisTag value="wght"/>', ' <AxisNameID value="258"/>', ' <AxisOrdering value="0"/>', - ' </Axis>', - '</DesignAxisRecord>', - '<!-- AxisValueCount=1 -->', - '<AxisValueArray>', + " </Axis>", + "</DesignAxisRecord>", + "<!-- AxisValueCount=1 -->", + "<AxisValueArray>", ' <AxisValue index="0" Format="3">', ' <AxisIndex value="0"/>', ' <Flags value="2"/> <!-- ElidableAxisValueName -->', ' <ValueNameID value="2"/>', ' <Value value="400.0"/>', ' <LinkedValue value="700.0"/>', - ' </AxisValue>', - '</AxisValueArray>', + " </AxisValue>", + "</AxisValueArray>", ] STAT_DATA_VERSION_1_1 = deHexStr( - '0001 0001 ' # 0: Version=1.1 - '0008 0001 ' # 4: DesignAxisSize=8, DesignAxisCount=1 - '0000 0014 ' # 8: OffsetToDesignAxes=20 - '0001 ' # 12: AxisValueCount=1 - '0000 001C ' # 14: OffsetToAxisValueOffsets=28 - '0101 ' # 18: ElidedFallbackNameID: 257 - '7767 6874 ' # 20: DesignAxis[0].AxisTag='wght' - '0102 ' # 24: DesignAxis[0].AxisNameID=258 'Weight' - '0000 ' # 26: DesignAxis[0].AxisOrdering=0 - '0002 ' # 28: AxisValueOffsets=[2] (+28) - '0003 ' # 30: AxisValue[0].Format=3 - '0000 0002 ' # 32: AxisValue[0].AxisIndex=0, .Flags=0x2 - '0002 ' # 36: AxisValue[0].ValueNameID=2 'Regular' - '0190 0000 ' # 38: AxisValue[0].Value=400.0 - '02BC 0000 ' # 42: AxisValue[0].LinkedValue=700.0 -) # 46: <end> -assert(len(STAT_DATA_VERSION_1_1) == 46) + "0001 0001 " # 0: Version=1.1 + "0008 0001 " # 4: DesignAxisSize=8, DesignAxisCount=1 + "0000 0014 " # 8: OffsetToDesignAxes=20 + "0001 " # 12: AxisValueCount=1 + "0000 001C " # 14: OffsetToAxisValueOffsets=28 + "0101 " # 18: ElidedFallbackNameID: 257 + "7767 6874 " # 20: DesignAxis[0].AxisTag='wght' + "0102 " # 24: DesignAxis[0].AxisNameID=258 'Weight' + "0000 " # 26: DesignAxis[0].AxisOrdering=0 + "0002 " # 28: AxisValueOffsets=[2] (+28) + "0003 " # 30: AxisValue[0].Format=3 + "0000 0002 " # 32: AxisValue[0].AxisIndex=0, .Flags=0x2 + "0002 " # 36: AxisValue[0].ValueNameID=2 'Regular' + "0190 0000 " # 38: AxisValue[0].Value=400.0 + "02BC 0000 " # 42: AxisValue[0].LinkedValue=700.0 +) # 46: <end> +assert len(STAT_DATA_VERSION_1_1) == 46 STAT_XML_VERSION_1_1 = [ '<Version value="0x00010001"/>', '<DesignAxisRecordSize value="8"/>', - '<!-- DesignAxisCount=1 -->', - '<DesignAxisRecord>', + "<!-- DesignAxisCount=1 -->", + "<DesignAxisRecord>", ' <Axis index="0">', ' <AxisTag value="wght"/>', ' <AxisNameID value="258"/>', ' <AxisOrdering value="0"/>', - ' </Axis>', - '</DesignAxisRecord>', - '<!-- AxisValueCount=1 -->', - '<AxisValueArray>', + " </Axis>", + "</DesignAxisRecord>", + "<!-- AxisValueCount=1 -->", + "<AxisValueArray>", ' <AxisValue index="0" Format="3">', ' <AxisIndex value="0"/>', ' <Flags value="2"/> <!-- ElidableAxisValueName -->', ' <ValueNameID value="2"/>', ' <Value value="400.0"/>', ' <LinkedValue value="700.0"/>', - ' </AxisValue>', - '</AxisValueArray>', + " </AxisValue>", + "</AxisValueArray>", '<ElidedFallbackNameID value="257"/>', ] class STATTest(unittest.TestCase): - @classmethod def setUpClass(cls): cls.maxDiff = None def test_decompile_toXML(self): - table = newTable('STAT') - table.decompile(STAT_DATA, font=FakeFont(['.notdef'])) + table = newTable("STAT") + table.decompile(STAT_DATA, font=FakeFont([".notdef"])) self.assertEqual(getXML(table.toXML), STAT_XML) def test_decompile_toXML_withAxisJunk(self): - table = newTable('STAT') - table.decompile(STAT_DATA_WITH_AXIS_JUNK, font=FakeFont(['.notdef'])) + table = newTable("STAT") + table.decompile(STAT_DATA_WITH_AXIS_JUNK, font=FakeFont([".notdef"])) self.assertEqual(getXML(table.toXML), STAT_XML_WITH_AXIS_JUNK) def test_decompile_toXML_format3(self): - table = newTable('STAT') - table.decompile(STAT_DATA_AXIS_VALUE_FORMAT3, - font=FakeFont(['.notdef'])) + table = newTable("STAT") + table.decompile(STAT_DATA_AXIS_VALUE_FORMAT3, font=FakeFont([".notdef"])) self.assertEqual(getXML(table.toXML), STAT_XML_AXIS_VALUE_FORMAT3) def test_decompile_toXML_version_1_1(self): - table = newTable('STAT') - table.decompile(STAT_DATA_VERSION_1_1, - font=FakeFont(['.notdef'])) + table = newTable("STAT") + table.decompile(STAT_DATA_VERSION_1_1, font=FakeFont([".notdef"])) self.assertEqual(getXML(table.toXML), STAT_XML_VERSION_1_1) def test_compile_fromXML(self): - table = newTable('STAT') - font = FakeFont(['.notdef']) + table = newTable("STAT") + font = FakeFont([".notdef"]) for name, attrs, content in parseXML(STAT_XML): table.fromXML(name, attrs, content, font=font) self.assertEqual(table.compile(font), STAT_DATA) def test_compile_fromXML_withAxisJunk(self): - table = newTable('STAT') - font = FakeFont(['.notdef']) + table = newTable("STAT") + font = FakeFont([".notdef"]) for name, attrs, content in parseXML(STAT_XML_WITH_AXIS_JUNK): table.fromXML(name, attrs, content, font=font) self.assertEqual(table.compile(font), STAT_DATA_WITH_AXIS_JUNK) def test_compile_fromXML_format3(self): - table = newTable('STAT') - font = FakeFont(['.notdef']) + table = newTable("STAT") + font = FakeFont([".notdef"]) for name, attrs, content in parseXML(STAT_XML_AXIS_VALUE_FORMAT3): table.fromXML(name, attrs, content, font=font) self.assertEqual(table.compile(font), STAT_DATA_AXIS_VALUE_FORMAT3) def test_compile_fromXML_version_1_1(self): - table = newTable('STAT') - font = FakeFont(['.notdef']) + table = newTable("STAT") + font = FakeFont([".notdef"]) for name, attrs, content in parseXML(STAT_XML_VERSION_1_1): table.fromXML(name, attrs, content, font=font) self.assertEqual(table.compile(font), STAT_DATA_VERSION_1_1) -if __name__ == '__main__': +if __name__ == "__main__": import sys + sys.exit(unittest.main()) |