1from fontTools.misc.testTools import parseXML 2from fontTools.misc.xmlWriter import XMLWriter 3from io import BytesIO 4import struct 5import unittest 6from fontTools.ttLib import newTable 7 8 9class Test_l_t_a_g(unittest.TestCase): 10 DATA_ = ( 11 struct.pack(b">LLLHHHHHH", 1, 0, 3, 24 + 0, 2, 24 + 2, 7, 24 + 2, 2) 12 + b"enzh-Hant" 13 ) 14 TAGS_ = ["en", "zh-Hant", "zh"] 15 16 def test_addTag(self): 17 table = newTable("ltag") 18 self.assertEqual(table.addTag("de-CH"), 0) 19 self.assertEqual(table.addTag("gsw-LI"), 1) 20 self.assertEqual(table.addTag("de-CH"), 0) 21 self.assertEqual(table.tags, ["de-CH", "gsw-LI"]) 22 23 def test_decompile_compile(self): 24 table = newTable("ltag") 25 table.decompile(self.DATA_, ttFont=None) 26 self.assertEqual(1, table.version) 27 self.assertEqual(0, table.flags) 28 self.assertEqual(self.TAGS_, table.tags) 29 compiled = table.compile(ttFont=None) 30 self.assertEqual(self.DATA_, compiled) 31 self.assertIsInstance(compiled, bytes) 32 33 def test_fromXML(self): 34 table = newTable("ltag") 35 for name, attrs, content in parseXML( 36 '<version value="1"/>' 37 '<flags value="777"/>' 38 '<LanguageTag tag="sr-Latn"/>' 39 '<LanguageTag tag="fa"/>' 40 ): 41 table.fromXML(name, attrs, content, ttFont=None) 42 self.assertEqual(1, table.version) 43 self.assertEqual(777, table.flags) 44 self.assertEqual(["sr-Latn", "fa"], table.tags) 45 46 def test_toXML(self): 47 writer = XMLWriter(BytesIO()) 48 table = newTable("ltag") 49 table.decompile(self.DATA_, ttFont=None) 50 table.toXML(writer, ttFont=None) 51 expected = ( 52 "\n".join( 53 [ 54 '<?xml version="1.0" encoding="UTF-8"?>', 55 '<version value="1"/>', 56 '<flags value="0"/>', 57 '<LanguageTag tag="en"/>', 58 '<LanguageTag tag="zh-Hant"/>', 59 '<LanguageTag tag="zh"/>', 60 ] 61 ) 62 + "\n" 63 ) 64 self.assertEqual(expected.encode("utf_8"), writer.file.getvalue()) 65 66 67if __name__ == "__main__": 68 import sys 69 70 sys.exit(unittest.main()) 71