• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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