diff options
Diffstat (limited to 'Tests/ttLib/tables/C_P_A_L_test.py')
-rw-r--r-- | Tests/ttLib/tables/C_P_A_L_test.py | 282 |
1 files changed, 157 insertions, 125 deletions
diff --git a/Tests/ttLib/tables/C_P_A_L_test.py b/Tests/ttLib/tables/C_P_A_L_test.py index 10c8ea0e..0a197099 100644 --- a/Tests/ttLib/tables/C_P_A_L_test.py +++ b/Tests/ttLib/tables/C_P_A_L_test.py @@ -5,48 +5,52 @@ import unittest CPAL_DATA_V0 = deHexStr( - '0000 0002 ' # version=0, numPaletteEntries=2 - '0002 0004 ' # numPalettes=2, numColorRecords=4 - '00000010 ' # offsetToFirstColorRecord=16 - '0000 0002 ' # colorRecordIndex=[0, 2] - '000000FF FFCC66FF ' # colorRecord #0, #1 (blue/green/red/alpha) - '000000FF 000080FF') # colorRecord #2, #3 + "0000 0002 " # version=0, numPaletteEntries=2 + "0002 0004 " # numPalettes=2, numColorRecords=4 + "00000010 " # offsetToFirstColorRecord=16 + "0000 0002 " # colorRecordIndex=[0, 2] + "000000FF FFCC66FF " # colorRecord #0, #1 (blue/green/red/alpha) + "000000FF 000080FF" +) # colorRecord #2, #3 CPAL_DATA_V0_SHARING_COLORS = deHexStr( - '0000 0003 ' # version=0, numPaletteEntries=3 - '0004 0006 ' # numPalettes=4, numColorRecords=6 - '00000014 ' # offsetToFirstColorRecord=20 - '0000 0000 0003 0000 ' # colorRecordIndex=[0, 0, 3, 0] - '443322FF 77889911 55555555 ' # colorRecord #0, #1, #2 (BGRA) - '443322FF 77889911 FFFFFFFF') # colorRecord #3, #4, #5 + "0000 0003 " # version=0, numPaletteEntries=3 + "0004 0006 " # numPalettes=4, numColorRecords=6 + "00000014 " # offsetToFirstColorRecord=20 + "0000 0000 0003 0000 " # colorRecordIndex=[0, 0, 3, 0] + "443322FF 77889911 55555555 " # colorRecord #0, #1, #2 (BGRA) + "443322FF 77889911 FFFFFFFF" +) # colorRecord #3, #4, #5 CPAL_DATA_V1_NOLABELS_NOTYPES = deHexStr( - '0001 0003 ' # version=1, numPaletteEntries=3 - '0002 0006 ' # numPalettes=2, numColorRecords=6 - '0000001C ' # offsetToFirstColorRecord=28 - '0000 0003 ' # colorRecordIndex=[0, 3] - '00000000 ' # offsetToPaletteTypeArray=0 - '00000000 ' # offsetToPaletteLabelArray=0 - '00000000 ' # offsetToPaletteEntryLabelArray=0 - 'CAFECAFE 00112233 44556677 ' # colorRecord #0, #1, #2 (BGRA) - '31415927 42424242 00331337') # colorRecord #3, #4, #5 + "0001 0003 " # version=1, numPaletteEntries=3 + "0002 0006 " # numPalettes=2, numColorRecords=6 + "0000001C " # offsetToFirstColorRecord=28 + "0000 0003 " # colorRecordIndex=[0, 3] + "00000000 " # offsetToPaletteTypeArray=0 + "00000000 " # offsetToPaletteLabelArray=0 + "00000000 " # offsetToPaletteEntryLabelArray=0 + "CAFECAFE 00112233 44556677 " # colorRecord #0, #1, #2 (BGRA) + "31415927 42424242 00331337" +) # colorRecord #3, #4, #5 CPAL_DATA_V1 = deHexStr( - '0001 0003 ' # version=1, numPaletteEntries=3 - '0002 0006 ' # numPalettes=2, numColorRecords=6 - '0000001C ' # offsetToFirstColorRecord=28 - '0000 0003 ' # colorRecordIndex=[0, 3] - '00000034 ' # offsetToPaletteTypeArray=52 - '0000003C ' # offsetToPaletteLabelArray=60 - '00000040 ' # offsetToPaletteEntryLabelArray=64 - 'CAFECAFE 00112233 44556677 ' # colorRecord #0, #1, #2 (BGRA) - '31415927 42424242 00331337 ' # colorRecord #3, #4, #5 - '00000001 00000002 ' # paletteType=[1, 2] - '0102 0103 ' # paletteLabel=[258, 259] - '0201 0202 0203') # paletteEntryLabel=[513, 514, 515] + "0001 0003 " # version=1, numPaletteEntries=3 + "0002 0006 " # numPalettes=2, numColorRecords=6 + "0000001C " # offsetToFirstColorRecord=28 + "0000 0003 " # colorRecordIndex=[0, 3] + "00000034 " # offsetToPaletteTypeArray=52 + "0000003C " # offsetToPaletteLabelArray=60 + "00000040 " # offsetToPaletteEntryLabelArray=64 + "CAFECAFE 00112233 44556677 " # colorRecord #0, #1, #2 (BGRA) + "31415927 42424242 00331337 " # colorRecord #3, #4, #5 + "00000001 00000002 " # paletteType=[1, 2] + "0102 0103 " # paletteLabel=[258, 259] + "0201 0202 0203" +) # paletteEntryLabel=[513, 514, 515] class FakeNameTable(object): @@ -59,160 +63,188 @@ class FakeNameTable(object): class CPALTest(unittest.TestCase): def test_decompile_v0(self): - cpal = newTable('CPAL') + cpal = newTable("CPAL") cpal.decompile(CPAL_DATA_V0, ttFont=None) self.assertEqual(cpal.version, 0) self.assertEqual(cpal.numPaletteEntries, 2) - self.assertEqual(repr(cpal.palettes), - '[[#000000FF, #66CCFFFF], [#000000FF, #800000FF]]') + self.assertEqual( + repr(cpal.palettes), "[[#000000FF, #66CCFFFF], [#000000FF, #800000FF]]" + ) def test_decompile_v0_sharingColors(self): - cpal = newTable('CPAL') + cpal = newTable("CPAL") cpal.decompile(CPAL_DATA_V0_SHARING_COLORS, ttFont=None) self.assertEqual(cpal.version, 0) self.assertEqual(cpal.numPaletteEntries, 3) - self.assertEqual([repr(p) for p in cpal.palettes], [ - '[#223344FF, #99887711, #55555555]', - '[#223344FF, #99887711, #55555555]', - '[#223344FF, #99887711, #FFFFFFFF]', - '[#223344FF, #99887711, #55555555]']) + self.assertEqual( + [repr(p) for p in cpal.palettes], + [ + "[#223344FF, #99887711, #55555555]", + "[#223344FF, #99887711, #55555555]", + "[#223344FF, #99887711, #FFFFFFFF]", + "[#223344FF, #99887711, #55555555]", + ], + ) def test_decompile_v1_noLabelsNoTypes(self): - cpal = newTable('CPAL') + cpal = newTable("CPAL") cpal.decompile(CPAL_DATA_V1_NOLABELS_NOTYPES, ttFont=None) self.assertEqual(cpal.version, 1) self.assertEqual(cpal.numPaletteEntries, 3) - self.assertEqual([repr(p) for p in cpal.palettes], [ - '[#CAFECAFE, #22110033, #66554477]', # RGBA - '[#59413127, #42424242, #13330037]']) + self.assertEqual( + [repr(p) for p in cpal.palettes], + [ + "[#CAFECAFE, #22110033, #66554477]", # RGBA + "[#59413127, #42424242, #13330037]", + ], + ) self.assertEqual(cpal.paletteLabels, [cpal.NO_NAME_ID] * len(cpal.palettes)) self.assertEqual(cpal.paletteTypes, [0, 0]) - self.assertEqual(cpal.paletteEntryLabels, - [cpal.NO_NAME_ID] * cpal.numPaletteEntries) + self.assertEqual( + cpal.paletteEntryLabels, [cpal.NO_NAME_ID] * cpal.numPaletteEntries + ) def test_decompile_v1(self): - cpal = newTable('CPAL') + cpal = newTable("CPAL") cpal.decompile(CPAL_DATA_V1, ttFont=None) self.assertEqual(cpal.version, 1) self.assertEqual(cpal.numPaletteEntries, 3) - self.assertEqual([repr(p) for p in cpal.palettes], [ - '[#CAFECAFE, #22110033, #66554477]', # RGBA - '[#59413127, #42424242, #13330037]']) + self.assertEqual( + [repr(p) for p in cpal.palettes], + [ + "[#CAFECAFE, #22110033, #66554477]", # RGBA + "[#59413127, #42424242, #13330037]", + ], + ) self.assertEqual(cpal.paletteTypes, [1, 2]) self.assertEqual(cpal.paletteLabels, [258, 259]) self.assertEqual(cpal.paletteEntryLabels, [513, 514, 515]) def test_compile_v0(self): - cpal = newTable('CPAL') + cpal = newTable("CPAL") cpal.decompile(CPAL_DATA_V0, ttFont=None) self.assertEqual(cpal.compile(ttFont=None), CPAL_DATA_V0) def test_compile_v0_sharingColors(self): - cpal = newTable('CPAL') + cpal = newTable("CPAL") cpal.version = 0 - Color = getTableModule('CPAL').Color - palette1 = [Color(red=0x22, green=0x33, blue=0x44, alpha=0xff), - Color(red=0x99, green=0x88, blue=0x77, alpha=0x11), - Color(red=0x55, green=0x55, blue=0x55, alpha=0x55)] - palette2 = [Color(red=0x22, green=0x33, blue=0x44, alpha=0xff), - Color(red=0x99, green=0x88, blue=0x77, alpha=0x11), - Color(red=0xFF, green=0xFF, blue=0xFF, alpha=0xFF)] + Color = getTableModule("CPAL").Color + palette1 = [ + Color(red=0x22, green=0x33, blue=0x44, alpha=0xFF), + Color(red=0x99, green=0x88, blue=0x77, alpha=0x11), + Color(red=0x55, green=0x55, blue=0x55, alpha=0x55), + ] + palette2 = [ + Color(red=0x22, green=0x33, blue=0x44, alpha=0xFF), + Color(red=0x99, green=0x88, blue=0x77, alpha=0x11), + Color(red=0xFF, green=0xFF, blue=0xFF, alpha=0xFF), + ] cpal.numPaletteEntries = len(palette1) cpal.palettes = [palette1, palette1, palette2, palette1] - self.assertEqual(cpal.compile(ttFont=None), - CPAL_DATA_V0_SHARING_COLORS) + self.assertEqual(cpal.compile(ttFont=None), CPAL_DATA_V0_SHARING_COLORS) def test_compile_v1(self): - cpal = newTable('CPAL') + cpal = newTable("CPAL") cpal.decompile(CPAL_DATA_V1, ttFont=None) self.assertEqual(cpal.compile(ttFont=None), CPAL_DATA_V1) def test_compile_v1_noLabelsNoTypes(self): - cpal = newTable('CPAL') + cpal = newTable("CPAL") cpal.decompile(CPAL_DATA_V1_NOLABELS_NOTYPES, ttFont=None) - self.assertEqual(cpal.compile(ttFont=None), - CPAL_DATA_V1_NOLABELS_NOTYPES) + self.assertEqual(cpal.compile(ttFont=None), CPAL_DATA_V1_NOLABELS_NOTYPES) def test_toXML_v0(self): - cpal = newTable('CPAL') + cpal = newTable("CPAL") cpal.decompile(CPAL_DATA_V0, ttFont=None) - self.assertEqual(getXML(cpal.toXML), - ['<version value="0"/>', - '<numPaletteEntries value="2"/>', - '<palette index="0">', - ' <color index="0" value="#000000FF"/>', - ' <color index="1" value="#66CCFFFF"/>', - '</palette>', - '<palette index="1">', - ' <color index="0" value="#000000FF"/>', - ' <color index="1" value="#800000FF"/>', - '</palette>']) + self.assertEqual( + getXML(cpal.toXML), + [ + '<version value="0"/>', + '<numPaletteEntries value="2"/>', + '<palette index="0">', + ' <color index="0" value="#000000FF"/>', + ' <color index="1" value="#66CCFFFF"/>', + "</palette>", + '<palette index="1">', + ' <color index="0" value="#000000FF"/>', + ' <color index="1" value="#800000FF"/>', + "</palette>", + ], + ) def test_toXML_v1(self): - name = FakeNameTable({258: "Spring theme", 259: "Winter theme", - 513: "darks", 515: "lights"}) - cpal = newTable('CPAL') + name = FakeNameTable( + {258: "Spring theme", 259: "Winter theme", 513: "darks", 515: "lights"} + ) + cpal = newTable("CPAL") ttFont = {"name": name, "CPAL": cpal} cpal.decompile(CPAL_DATA_V1, ttFont) - self.assertEqual(getXML(cpal.toXML, ttFont), - ['<version value="1"/>', - '<numPaletteEntries value="3"/>', - '<palette index="0" label="258" type="1">', - ' <!-- Spring theme -->', - ' <color index="0" value="#CAFECAFE"/>', - ' <color index="1" value="#22110033"/>', - ' <color index="2" value="#66554477"/>', - '</palette>', - '<palette index="1" label="259" type="2">', - ' <!-- Winter theme -->', - ' <color index="0" value="#59413127"/>', - ' <color index="1" value="#42424242"/>', - ' <color index="2" value="#13330037"/>', - '</palette>', - '<paletteEntryLabels>', - ' <label index="0" value="513"/><!-- darks -->', - ' <label index="1" value="514"/>', - ' <label index="2" value="515"/><!-- lights -->', - '</paletteEntryLabels>']) + self.assertEqual( + getXML(cpal.toXML, ttFont), + [ + '<version value="1"/>', + '<numPaletteEntries value="3"/>', + '<palette index="0" label="258" type="1">', + " <!-- Spring theme -->", + ' <color index="0" value="#CAFECAFE"/>', + ' <color index="1" value="#22110033"/>', + ' <color index="2" value="#66554477"/>', + "</palette>", + '<palette index="1" label="259" type="2">', + " <!-- Winter theme -->", + ' <color index="0" value="#59413127"/>', + ' <color index="1" value="#42424242"/>', + ' <color index="2" value="#13330037"/>', + "</palette>", + "<paletteEntryLabels>", + ' <label index="0" value="513"/><!-- darks -->', + ' <label index="1" value="514"/>', + ' <label index="2" value="515"/><!-- lights -->', + "</paletteEntryLabels>", + ], + ) def test_fromXML_v0(self): - cpal = newTable('CPAL') + cpal = newTable("CPAL") for name, attrs, content in parseXML( - '<version value="0"/>' - '<numPaletteEntries value="2"/>' - '<palette index="0">' - ' <color index="0" value="#12345678"/>' - ' <color index="1" value="#FEDCBA98"/>' - '</palette>'): + '<version value="0"/>' + '<numPaletteEntries value="2"/>' + '<palette index="0">' + ' <color index="0" value="#12345678"/>' + ' <color index="1" value="#FEDCBA98"/>' + "</palette>" + ): cpal.fromXML(name, attrs, content, ttFont=None) self.assertEqual(cpal.version, 0) self.assertEqual(cpal.numPaletteEntries, 2) - self.assertEqual(repr(cpal.palettes), '[[#12345678, #FEDCBA98]]') + self.assertEqual(repr(cpal.palettes), "[[#12345678, #FEDCBA98]]") def test_fromXML_v1(self): - cpal = newTable('CPAL') + cpal = newTable("CPAL") for name, attrs, content in parseXML( - '<version value="1"/>' - '<numPaletteEntries value="3"/>' - '<palette index="0" label="259" type="2">' - ' <color index="0" value="#12345678"/>' - ' <color index="1" value="#FEDCBA98"/>' - ' <color index="2" value="#CAFECAFE"/>' - '</palette>' - '<paletteEntryLabels>' - ' <label index="1" value="262"/>' - '</paletteEntryLabels>'): + '<version value="1"/>' + '<numPaletteEntries value="3"/>' + '<palette index="0" label="259" type="2">' + ' <color index="0" value="#12345678"/>' + ' <color index="1" value="#FEDCBA98"/>' + ' <color index="2" value="#CAFECAFE"/>' + "</palette>" + "<paletteEntryLabels>" + ' <label index="1" value="262"/>' + "</paletteEntryLabels>" + ): cpal.fromXML(name, attrs, content, ttFont=None) self.assertEqual(cpal.version, 1) self.assertEqual(cpal.numPaletteEntries, 3) - self.assertEqual(repr(cpal.palettes), - '[[#12345678, #FEDCBA98, #CAFECAFE]]') + self.assertEqual(repr(cpal.palettes), "[[#12345678, #FEDCBA98, #CAFECAFE]]") self.assertEqual(cpal.paletteLabels, [259]) self.assertEqual(cpal.paletteTypes, [2]) - self.assertEqual(cpal.paletteEntryLabels, - [cpal.NO_NAME_ID, 262, cpal.NO_NAME_ID]) + self.assertEqual( + cpal.paletteEntryLabels, [cpal.NO_NAME_ID, 262, cpal.NO_NAME_ID] + ) if __name__ == "__main__": import sys + sys.exit(unittest.main()) |