72 lines
2.8 KiB
Python
72 lines
2.8 KiB
Python
from __future__ import print_function, division, absolute_import
|
|
from __future__ import unicode_literals
|
|
# from fontTools.voltLib.error import VoltLibError
|
|
from fontTools.voltLib.parser import Parser
|
|
import codecs
|
|
import os
|
|
import shutil
|
|
import tempfile
|
|
import unittest
|
|
|
|
|
|
class ParserTest(unittest.TestCase):
|
|
def __init__(self, methodName):
|
|
unittest.TestCase.__init__(self, methodName)
|
|
# Python 3 renamed assertRaisesRegexp to assertRaisesRegex,
|
|
# and fires deprecation warnings if a program uses the old name.
|
|
if not hasattr(self, "assertRaisesRegex"):
|
|
self.assertRaisesRegex = self.assertRaisesRegexp
|
|
|
|
def test_def_glyph(self):
|
|
[def_glyph] = self.parse(
|
|
'DEF_GLYPH ".notdef" ID 0 TYPE BASE END_GLYPH'
|
|
).statements
|
|
self.assertEqual((def_glyph.name, def_glyph.id, def_glyph.unicode,
|
|
def_glyph.type, def_glyph.components),
|
|
(".notdef", 0, None, "BASE", None))
|
|
[def_glyph] = self.parse(
|
|
'DEF_GLYPH "space" ID 3 UNICODE 32 TYPE BASE END_GLYPH'
|
|
).statements
|
|
self.assertEqual((def_glyph.name, def_glyph.id, def_glyph.unicode,
|
|
def_glyph.type, def_glyph.components),
|
|
("space", 3, [0x0020], "BASE", None))
|
|
[def_glyph] = self.parse(
|
|
'DEF_GLYPH "CR" ID 2 UNICODEVALUES "U+0009,U+000D" '
|
|
'TYPE BASE END_GLYPH'
|
|
).statements
|
|
self.assertEqual((def_glyph.name, def_glyph.id, def_glyph.unicode,
|
|
def_glyph.type, def_glyph.components),
|
|
("CR", 2, [0x0009, 0x000D], "BASE", None))
|
|
[def_glyph] = self.parse(
|
|
'DEF_GLYPH "f_f" ID 320 TYPE LIGATURE COMPONENTS 2 END_GLYPH'
|
|
).statements
|
|
self.assertEqual((def_glyph.name, def_glyph.id, def_glyph.unicode,
|
|
def_glyph.type, def_glyph.components),
|
|
("f_f", 320, None, "LIGATURE", 2))
|
|
[def_glyph] = self.parse(
|
|
'DEF_GLYPH "glyph20" ID 20 END_GLYPH'
|
|
).statements
|
|
self.assertEqual((def_glyph.name, def_glyph.id, def_glyph.unicode,
|
|
def_glyph.type, def_glyph.components),
|
|
("glyph20", 20, None, None, None))
|
|
|
|
def setUp(self):
|
|
self.tempdir = None
|
|
self.num_tempfiles = 0
|
|
|
|
def tearDown(self):
|
|
if self.tempdir:
|
|
shutil.rmtree(self.tempdir)
|
|
|
|
def parse(self, text):
|
|
if not self.tempdir:
|
|
self.tempdir = tempfile.mkdtemp()
|
|
self.num_tempfiles += 1
|
|
path = os.path.join(self.tempdir, "tmp%d.vtp" % self.num_tempfiles)
|
|
with codecs.open(path, "wb", "utf-8") as outfile:
|
|
outfile.write(text)
|
|
return Parser(path).parse()
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|