• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1from __future__ import print_function, division, absolute_import
2from fontTools.misc.py23 import *
3from fontTools.misc.testTools import parseXML
4from fontTools.misc.xmlWriter import XMLWriter
5import os
6import struct
7import unittest
8from fontTools.ttLib import newTable
9
10
11class Test_l_t_a_g(unittest.TestCase):
12
13	DATA_ = struct.pack(b">LLLHHHHHH", 1, 0, 3, 24 + 0, 2, 24 + 2, 7, 24 + 2, 2) + b"enzh-Hant"
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			table.fromXML(name, attrs, content, ttFont=None)
41		self.assertEqual(1, table.version)
42		self.assertEqual(777, table.flags)
43		self.assertEqual(["sr-Latn", "fa"], table.tags)
44
45	def test_toXML(self):
46		writer = XMLWriter(BytesIO())
47		table = newTable("ltag")
48		table.decompile(self.DATA_, ttFont=None)
49		table.toXML(writer, ttFont=None)
50		expected = os.linesep.join([
51			'<?xml version="1.0" encoding="UTF-8"?>',
52			'<version value="1"/>',
53			'<flags value="0"/>',
54			'<LanguageTag tag="en"/>',
55			'<LanguageTag tag="zh-Hant"/>',
56			'<LanguageTag tag="zh"/>'
57		]) + os.linesep
58		self.assertEqual(expected.encode("utf_8"), writer.file.getvalue())
59
60
61if __name__ == '__main__':
62	import sys
63	sys.exit(unittest.main())
64