from __future__ import print_function, division, absolute_import from fontTools.misc.py23 import * from fontTools.misc.testTools import getXML, parseXML from fontTools.misc.textTools import deHexStr from fontTools.ttLib import getTableModule, newTable 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 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 (blue/green/red/a) '443322FF 77889911 FFFFFFFF') # colorRecord #3, #4, #5 class CPALTest(unittest.TestCase): def test_decompile_v0(self): 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]]') def test_decompile_v0_sharingColors(self): 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]']) def test_compile_v0(self): 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.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)] cpal.numPaletteEntries = len(palette1) cpal.palettes = [palette1, palette1, palette2, palette1] self.assertEqual(cpal.compile(ttFont=None), CPAL_DATA_V0_SHARING_COLORS) def test_toXML_v0(self): cpal = newTable('CPAL') cpal.decompile(CPAL_DATA_V0, ttFont=None) self.assertEqual(getXML(cpal.toXML), '' '' '' ' ' ' ' '' '' ' ' ' ' '') def test_fromXML_v0(self): cpal = newTable('CPAL') for name, attrs, content in parseXML( '' '' '' ' ' ' ' ''): cpal.fromXML(name, attrs, content, ttFont=None) self.assertEqual(cpal.version, 0) self.assertEqual(cpal.numPaletteEntries, 1) self.assertEqual(repr(cpal.palettes), '[[#12345678, #FEDCBA98]]') if __name__ == "__main__": unittest.main()