aboutsummaryrefslogtreecommitdiff
path: root/Tests/ttLib/tables/C_P_A_L_test.py
diff options
context:
space:
mode:
Diffstat (limited to 'Tests/ttLib/tables/C_P_A_L_test.py')
-rw-r--r--Tests/ttLib/tables/C_P_A_L_test.py282
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())