from fontTools.misc.testTools import parseXML from fontTools.misc.xmlWriter import XMLWriter from io import BytesIO import os import struct import unittest from fontTools.ttLib import newTable class Test_l_t_a_g(unittest.TestCase): DATA_ = struct.pack(b">LLLHHHHHH", 1, 0, 3, 24 + 0, 2, 24 + 2, 7, 24 + 2, 2) + b"enzh-Hant" TAGS_ = ["en", "zh-Hant", "zh"] def test_addTag(self): table = newTable("ltag") self.assertEqual(table.addTag("de-CH"), 0) self.assertEqual(table.addTag("gsw-LI"), 1) self.assertEqual(table.addTag("de-CH"), 0) self.assertEqual(table.tags, ["de-CH", "gsw-LI"]) def test_decompile_compile(self): table = newTable("ltag") table.decompile(self.DATA_, ttFont=None) self.assertEqual(1, table.version) self.assertEqual(0, table.flags) self.assertEqual(self.TAGS_, table.tags) compiled = table.compile(ttFont=None) self.assertEqual(self.DATA_, compiled) self.assertIsInstance(compiled, bytes) def test_fromXML(self): table = newTable("ltag") for name, attrs, content in parseXML( '' '' '' ''): table.fromXML(name, attrs, content, ttFont=None) self.assertEqual(1, table.version) self.assertEqual(777, table.flags) self.assertEqual(["sr-Latn", "fa"], table.tags) def test_toXML(self): writer = XMLWriter(BytesIO()) table = newTable("ltag") table.decompile(self.DATA_, ttFont=None) table.toXML(writer, ttFont=None) expected = os.linesep.join([ '', '', '', '', '', '' ]) + os.linesep self.assertEqual(expected.encode("utf_8"), writer.file.getvalue()) if __name__ == '__main__': import sys sys.exit(unittest.main())