Add unit tests for ltag table

Resolves #226 and #227.
This commit is contained in:
Sascha Brawer 2015-04-14 23:00:11 -07:00 committed by Behdad Esfahbod
parent 034ed355de
commit 012049d7fb
2 changed files with 49 additions and 1 deletions

View File

@ -15,7 +15,7 @@ class table__l_t_a_g(DefaultTable.DefaultTable):
for i in range(numTags):
pos = 12 + i * 4
offset, length = struct.unpack(">HH", data[pos:pos+4])
tag = data[offset:offset+length]
tag = data[offset:offset+length].decode("ascii")
self.tags.append(tag)
def compile(self, ttFont):

View File

@ -0,0 +1,48 @@
from __future__ import print_function, division, absolute_import
from fontTools.misc.py23 import *
from fontTools.misc.xmlWriter import XMLWriter
import struct
import unittest
from ._l_t_a_g import table__l_t_a_g
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_decompile_compile(self):
table = table__l_t_a_g()
table.decompile(self.DATA_, ttFont=None)
self.assertEquals(1, table.version)
self.assertEquals(0, table.flags)
self.assertEquals(self.TAGS_, table.tags)
self.assertEquals(self.DATA_, table.compile(ttFont=None))
def test_fromXML(self):
table = table__l_t_a_g()
table.fromXML("version", {"value": "1"}, content=None, ttFont=None)
table.fromXML("flags", {"value": "777"}, content=None, ttFont=None)
table.fromXML("LanguageTag", {"tag": "sr-Latn"}, content=None, ttFont=None)
table.fromXML("LanguageTag", {"tag": "fa"}, content=None, ttFont=None)
self.assertEquals(1, table.version)
self.assertEquals(777, table.flags)
self.assertEquals(["sr-Latn", "fa"], table.tags)
def test_toXML(self):
writer = XMLWriter(StringIO())
table = table__l_t_a_g()
table.decompile(self.DATA_, ttFont=None)
table.toXML(writer, ttFont=None)
expected = "\n".join([
'<?xml version="1.0" encoding="utf-8"?>',
'<version value="1"/>',
'<flags value="0"/>',
'<LanguageTag tag="en"/>',
'<LanguageTag tag="zh-Hant"/>',
'<LanguageTag tag="zh"/>'
]) + "\n"
self.assertEquals(expected.encode("utf-8"), writer.file.getvalue())
if __name__ == '__main__':
unittest.main()