2009-02-28 15:47:24 +00:00
|
|
|
import os
|
|
|
|
import shutil
|
|
|
|
import unittest
|
|
|
|
import tempfile
|
2015-11-04 07:36:50 +00:00
|
|
|
from io import open
|
2018-10-17 17:41:43 +01:00
|
|
|
from fontTools.ufoLib import UFOReader, UFOWriter, UFOLibError
|
|
|
|
from fontTools.ufoLib.glifLib import GlifLibError
|
|
|
|
from fontTools.misc import plistlib
|
2018-10-09 13:15:54 +01:00
|
|
|
from .testSupport import fontInfoVersion3
|
2009-02-28 15:47:24 +00:00
|
|
|
|
|
|
|
|
2019-09-09 21:39:22 +01:00
|
|
|
class TestInfoObject:
|
|
|
|
pass
|
2009-02-28 15:47:24 +00:00
|
|
|
|
|
|
|
|
2011-09-19 01:40:21 +00:00
|
|
|
# --------------
|
|
|
|
# fontinfo.plist
|
|
|
|
# --------------
|
|
|
|
|
2009-02-28 15:47:24 +00:00
|
|
|
|
2011-09-18 12:16:25 +00:00
|
|
|
class ReadFontInfoVersion3TestCase(unittest.TestCase):
|
2009-02-28 15:47:24 +00:00
|
|
|
def setUp(self):
|
|
|
|
self.dstDir = tempfile.mktemp()
|
|
|
|
os.mkdir(self.dstDir)
|
|
|
|
metaInfo = {"creator": "test", "formatVersion": 3}
|
|
|
|
path = os.path.join(self.dstDir, "metainfo.plist")
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "wb") as f:
|
2018-07-11 12:30:11 +01:00
|
|
|
plistlib.dump(metaInfo, f)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2009-02-28 15:47:24 +00:00
|
|
|
def tearDown(self):
|
|
|
|
shutil.rmtree(self.dstDir)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2009-02-28 15:47:24 +00:00
|
|
|
def _writeInfoToPlist(self, info):
|
|
|
|
path = os.path.join(self.dstDir, "fontinfo.plist")
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "wb") as f:
|
2018-07-11 12:30:11 +01:00
|
|
|
plistlib.dump(info, f)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2009-02-28 15:47:24 +00:00
|
|
|
def testRead(self):
|
2011-09-18 12:16:25 +00:00
|
|
|
originalData = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self._writeInfoToPlist(originalData)
|
|
|
|
infoObject = TestInfoObject()
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
reader.readInfo(infoObject)
|
|
|
|
readData = {}
|
2015-11-05 09:03:19 +00:00
|
|
|
for attr in list(fontInfoVersion3.keys()):
|
2009-02-28 15:47:24 +00:00
|
|
|
readData[attr] = getattr(infoObject, attr)
|
|
|
|
self.assertEqual(originalData, readData)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2009-02-28 15:47:24 +00:00
|
|
|
def testGenericRead(self):
|
|
|
|
# familyName
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["familyName"] = 123
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# styleName
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["styleName"] = 123
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# styleMapFamilyName
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["styleMapFamilyName"] = 123
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# styleMapStyleName
|
|
|
|
## not a string
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["styleMapStyleName"] = 123
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
## out of range
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["styleMapStyleName"] = "REGULAR"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# versionMajor
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["versionMajor"] = "1"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# versionMinor
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["versionMinor"] = "0"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["versionMinor"] = -1
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
2009-02-28 15:47:24 +00:00
|
|
|
# copyright
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["copyright"] = 123
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# trademark
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["trademark"] = 123
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# unitsPerEm
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["unitsPerEm"] = "abc"
|
2011-09-18 12:16:25 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["unitsPerEm"] = -1
|
2009-02-28 15:47:24 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["unitsPerEm"] = -1.0
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
2009-02-28 15:47:24 +00:00
|
|
|
# descender
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["descender"] = "abc"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
2009-02-28 15:47:24 +00:00
|
|
|
# xHeight
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["xHeight"] = "abc"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# capHeight
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["capHeight"] = "abc"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# ascender
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["ascender"] = "abc"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# italicAngle
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["italicAngle"] = "abc"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-18 12:16:25 +00:00
|
|
|
def testGaspRead(self):
|
2009-02-28 15:47:24 +00:00
|
|
|
# not a list
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeGaspRangeRecords"] = "abc"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
2011-09-14 21:13:27 +00:00
|
|
|
# empty list
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["openTypeGaspRangeRecords"] = []
|
|
|
|
self._writeInfoToPlist(info)
|
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
|
|
|
reader.readInfo(TestInfoObject())
|
|
|
|
# not a dict
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["openTypeGaspRangeRecords"] = ["abc"]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# dict not properly formatted
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["openTypeGaspRangeRecords"] = [dict(rangeMaxPPEM=0xFFFF, notTheRightKey=1)]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["openTypeGaspRangeRecords"] = [
|
|
|
|
dict(notTheRightKey=1, rangeGaspBehavior=[0])
|
|
|
|
]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
2011-09-14 21:13:27 +00:00
|
|
|
# not an int for ppem
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["openTypeGaspRangeRecords"] = [
|
2011-09-14 21:13:27 +00:00
|
|
|
dict(rangeMaxPPEM="abc", rangeGaspBehavior=[0]),
|
2011-09-18 12:16:25 +00:00
|
|
|
dict(rangeMaxPPEM=0xFFFF, rangeGaspBehavior=[0]),
|
|
|
|
]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# not a list for behavior
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["openTypeGaspRangeRecords"] = [
|
|
|
|
dict(rangeMaxPPEM=10, rangeGaspBehavior="abc"),
|
|
|
|
dict(rangeMaxPPEM=0xFFFF, rangeGaspBehavior=[0]),
|
|
|
|
]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# invalid behavior value
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["openTypeGaspRangeRecords"] = [
|
|
|
|
dict(rangeMaxPPEM=10, rangeGaspBehavior=[-1]),
|
|
|
|
dict(rangeMaxPPEM=0xFFFF, rangeGaspBehavior=[0]),
|
|
|
|
]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# not sorted
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["openTypeGaspRangeRecords"] = [
|
|
|
|
dict(rangeMaxPPEM=0xFFFF, rangeGaspBehavior=[0]),
|
|
|
|
dict(rangeMaxPPEM=10, rangeGaspBehavior=[0]),
|
|
|
|
]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# no 0xFFFF
|
|
|
|
info = dict(fontInfoVersion3)
|
2012-02-14 03:34:28 +00:00
|
|
|
info["openTypeGaspRangeRecords"] = [
|
|
|
|
dict(rangeMaxPPEM=10, rangeGaspBehavior=[0]),
|
|
|
|
dict(rangeMaxPPEM=20, rangeGaspBehavior=[0]),
|
|
|
|
]
|
2011-09-18 12:16:25 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2012-02-14 03:34:28 +00:00
|
|
|
reader.readInfo(TestInfoObject())
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2009-02-28 15:47:24 +00:00
|
|
|
def testHeadRead(self):
|
|
|
|
# openTypeHeadCreated
|
|
|
|
## not a string
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeHeadCreated"] = 123
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
## invalid format
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeHeadCreated"] = "2000-Jan-01 00:00:00"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# openTypeHeadLowestRecPPEM
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeHeadLowestRecPPEM"] = "abc"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["openTypeHeadLowestRecPPEM"] = -1
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeHeadFlags
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeHeadFlags"] = [-1]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2009-02-28 15:47:24 +00:00
|
|
|
def testHheaRead(self):
|
|
|
|
# openTypeHheaAscender
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeHheaAscender"] = "abc"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# openTypeHheaDescender
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeHheaDescender"] = "abc"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# openTypeHheaLineGap
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeHheaLineGap"] = "abc"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# openTypeHheaCaretSlopeRise
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeHheaCaretSlopeRise"] = "abc"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# openTypeHheaCaretSlopeRun
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeHheaCaretSlopeRun"] = "abc"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# openTypeHheaCaretOffset
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeHheaCaretOffset"] = "abc"
|
2011-09-18 12:16:25 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2009-02-28 15:47:24 +00:00
|
|
|
def testNameRead(self):
|
|
|
|
# openTypeNameDesigner
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeNameDesigner"] = 123
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# openTypeNameDesignerURL
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeNameDesignerURL"] = 123
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# openTypeNameManufacturer
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeNameManufacturer"] = 123
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# openTypeNameManufacturerURL
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeNameManufacturerURL"] = 123
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# openTypeNameLicense
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeNameLicense"] = 123
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# openTypeNameLicenseURL
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeNameLicenseURL"] = 123
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# openTypeNameVersion
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeNameVersion"] = 123
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# openTypeNameUniqueID
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeNameUniqueID"] = 123
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# openTypeNameDescription
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeNameDescription"] = 123
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# openTypeNamePreferredFamilyName
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeNamePreferredFamilyName"] = 123
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# openTypeNamePreferredSubfamilyName
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeNamePreferredSubfamilyName"] = 123
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# openTypeNameCompatibleFullName
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeNameCompatibleFullName"] = 123
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# openTypeNameSampleText
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeNameSampleText"] = 123
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# openTypeNameWWSFamilyName
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeNameWWSFamilyName"] = 123
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# openTypeNameWWSSubfamilyName
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeNameWWSSubfamilyName"] = 123
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# openTypeNameRecords
|
|
|
|
## not a list
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeNameRecords"] = "abc"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
## not a dict
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeNameRecords"] = ["abc"]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
2011-09-18 12:16:25 +00:00
|
|
|
## invalid dict structure
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["openTypeNameRecords"] = [dict(foo="bar")]
|
2009-02-28 15:47:24 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
2011-09-18 12:16:25 +00:00
|
|
|
## incorrect keys
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["openTypeNameRecords"] = [
|
2022-12-13 11:26:36 +00:00
|
|
|
dict(
|
|
|
|
nameID=1,
|
2011-09-18 12:16:25 +00:00
|
|
|
platformID=1,
|
|
|
|
encodingID=1,
|
|
|
|
languageID=1,
|
|
|
|
string="Name Record.",
|
|
|
|
foo="bar",
|
2022-12-13 11:26:36 +00:00
|
|
|
)
|
2011-09-18 12:16:25 +00:00
|
|
|
]
|
2009-02-28 15:47:24 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["openTypeNameRecords"] = [
|
|
|
|
dict(platformID=1, encodingID=1, languageID=1, string="Name Record.")
|
|
|
|
]
|
2009-02-28 15:47:24 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["openTypeNameRecords"] = [
|
|
|
|
dict(nameID=1, encodingID=1, languageID=1, string="Name Record.")
|
|
|
|
]
|
2009-02-28 15:47:24 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["openTypeNameRecords"] = [
|
|
|
|
dict(nameID=1, platformID=1, languageID=1, string="Name Record.")
|
|
|
|
]
|
2009-02-28 15:47:24 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["openTypeNameRecords"] = [
|
|
|
|
dict(nameID=1, platformID=1, encodingID=1, string="Name Record.")
|
2022-12-13 11:26:36 +00:00
|
|
|
]
|
2009-02-28 15:47:24 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["openTypeNameRecords"] = [
|
|
|
|
dict(nameID=1, platformID=1, encodingID=1, languageID=1)
|
|
|
|
]
|
2009-02-28 15:47:24 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
2011-09-18 12:16:25 +00:00
|
|
|
## invalid values
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["openTypeNameRecords"] = [
|
|
|
|
dict(
|
|
|
|
nameID="1",
|
|
|
|
platformID=1,
|
|
|
|
encodingID=1,
|
|
|
|
languageID=1,
|
|
|
|
string="Name Record.",
|
|
|
|
)
|
|
|
|
]
|
2009-02-28 15:47:24 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["openTypeNameRecords"] = [
|
|
|
|
dict(
|
|
|
|
nameID=1,
|
|
|
|
platformID="1",
|
|
|
|
encodingID=1,
|
|
|
|
languageID=1,
|
|
|
|
string="Name Record.",
|
|
|
|
)
|
|
|
|
]
|
2009-02-28 15:47:24 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["openTypeNameRecords"] = [
|
|
|
|
dict(
|
|
|
|
nameID=1,
|
|
|
|
platformID=1,
|
|
|
|
encodingID="1",
|
|
|
|
languageID=1,
|
|
|
|
string="Name Record.",
|
2009-02-28 15:47:24 +00:00
|
|
|
)
|
2011-09-18 12:16:25 +00:00
|
|
|
]
|
2009-02-28 15:47:24 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["openTypeNameRecords"] = [
|
|
|
|
dict(
|
|
|
|
nameID=1,
|
|
|
|
platformID=1,
|
|
|
|
encodingID=1,
|
|
|
|
languageID="1",
|
|
|
|
string="Name Record.",
|
|
|
|
)
|
|
|
|
]
|
2009-02-28 15:47:24 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["openTypeNameRecords"] = [
|
|
|
|
dict(nameID=1, platformID=1, encodingID=1, languageID=1, string=1)
|
|
|
|
]
|
2009-02-28 15:47:24 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
2011-09-18 12:16:25 +00:00
|
|
|
## duplicate
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["openTypeNameRecords"] = [
|
|
|
|
dict(
|
|
|
|
nameID=1,
|
|
|
|
platformID=1,
|
|
|
|
encodingID=1,
|
|
|
|
languageID=1,
|
|
|
|
string="Name Record.",
|
|
|
|
),
|
|
|
|
dict(
|
|
|
|
nameID=1,
|
|
|
|
platformID=1,
|
|
|
|
encodingID=1,
|
|
|
|
languageID=1,
|
|
|
|
string="Name Record.",
|
2018-06-11 15:03:54 -05:00
|
|
|
),
|
2022-12-13 11:26:36 +00:00
|
|
|
]
|
2018-06-11 15:03:54 -05:00
|
|
|
self._writeInfoToPlist(info)
|
2012-02-14 03:38:32 +00:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
reader.readInfo(TestInfoObject())
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-18 12:16:25 +00:00
|
|
|
def testOS2Read(self):
|
|
|
|
# openTypeOS2WidthClass
|
|
|
|
## not an int
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["openTypeOS2WidthClass"] = "abc"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
## out or range
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["openTypeOS2WidthClass"] = 15
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# openTypeOS2WeightClass
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
## not an int
|
|
|
|
info["openTypeOS2WeightClass"] = "abc"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
## out of range
|
|
|
|
info["openTypeOS2WeightClass"] = -50
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# openTypeOS2Selection
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["openTypeOS2Selection"] = [-1]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# openTypeOS2VendorID
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["openTypeOS2VendorID"] = 1234
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# openTypeOS2Panose
|
|
|
|
## not an int
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["openTypeOS2Panose"] = [0, 1, 2, 3, 4, 5, 6, 7, 8, str(9)]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
## negative
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["openTypeOS2Panose"] = [0, 1, 2, 3, 4, 5, 6, 7, 8, -9]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
## too few values
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["openTypeOS2Panose"] = [0, 1, 2, 3]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
## too many values
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["openTypeOS2Panose"] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# openTypeOS2FamilyClass
|
|
|
|
## not an int
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["openTypeOS2FamilyClass"] = [1, str(1)]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
## too few values
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["openTypeOS2FamilyClass"] = [1]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
## too many values
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["openTypeOS2FamilyClass"] = [1, 1, 1]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
2009-02-28 15:47:24 +00:00
|
|
|
## out of range
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["openTypeOS2FamilyClass"] = [1, 201]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# openTypeOS2UnicodeRanges
|
|
|
|
## not an int
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["openTypeOS2UnicodeRanges"] = ["0"]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
## out of range
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["openTypeOS2UnicodeRanges"] = [-1]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# openTypeOS2CodePageRanges
|
|
|
|
## not an int
|
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeOS2CodePageRanges"] = ["0"]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
## out of range
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeOS2CodePageRanges"] = [-1]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# openTypeOS2TypoAscender
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeOS2TypoAscender"] = "abc"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# openTypeOS2TypoDescender
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeOS2TypoDescender"] = "abc"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# openTypeOS2TypoLineGap
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeOS2TypoLineGap"] = "abc"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# openTypeOS2WinAscent
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeOS2WinAscent"] = "abc"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["openTypeOS2WinAscent"] = -1
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeOS2WinDescent
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeOS2WinDescent"] = "abc"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["openTypeOS2WinDescent"] = -1
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeOS2Type
|
2011-09-18 12:16:25 +00:00
|
|
|
## not an int
|
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeOS2Type"] = ["1"]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
2009-02-28 15:47:24 +00:00
|
|
|
## out of range
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeOS2Type"] = [-1]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# openTypeOS2SubscriptXSize
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeOS2SubscriptXSize"] = "abc"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# openTypeOS2SubscriptYSize
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeOS2SubscriptYSize"] = "abc"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# openTypeOS2SubscriptXOffset
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeOS2SubscriptXOffset"] = "abc"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# openTypeOS2SubscriptYOffset
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeOS2SubscriptYOffset"] = "abc"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# openTypeOS2SuperscriptXSize
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeOS2SuperscriptXSize"] = "abc"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# openTypeOS2SuperscriptYSize
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeOS2SuperscriptYSize"] = "abc"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# openTypeOS2SuperscriptXOffset
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeOS2SuperscriptXOffset"] = "abc"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# openTypeOS2SuperscriptYOffset
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeOS2SuperscriptYOffset"] = "abc"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# openTypeOS2StrikeoutSize
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeOS2StrikeoutSize"] = "abc"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# openTypeOS2StrikeoutPosition
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeOS2StrikeoutPosition"] = "abc"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2009-02-28 15:47:24 +00:00
|
|
|
def testVheaRead(self):
|
|
|
|
# openTypeVheaVertTypoAscender
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeVheaVertTypoAscender"] = "abc"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeVheaVertTypoDescender
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeVheaVertTypoDescender"] = "abc"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# openTypeVheaVertTypoLineGap
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeVheaVertTypoLineGap"] = "abc"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# openTypeVheaCaretSlopeRise
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeVheaCaretSlopeRise"] = "abc"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# openTypeVheaCaretSlopeRun
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeVheaCaretSlopeRun"] = "abc"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# openTypeVheaCaretOffset
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["openTypeVheaCaretOffset"] = "abc"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2009-02-28 15:47:24 +00:00
|
|
|
def testFONDRead(self):
|
|
|
|
# macintoshFONDFamilyID
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["macintoshFONDFamilyID"] = "abc"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# macintoshFONDName
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["macintoshFONDName"] = 123
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2009-02-28 15:47:24 +00:00
|
|
|
def testPostscriptRead(self):
|
|
|
|
# postscriptFontName
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["postscriptFontName"] = 123
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# postscriptFullName
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["postscriptFullName"] = 123
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# postscriptSlantAngle
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["postscriptSlantAngle"] = "abc"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, info=TestInfoObject())
|
|
|
|
# postscriptUniqueID
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["postscriptUniqueID"] = "abc"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
# postscriptUnderlineThickness
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["postscriptUnderlineThickness"] = "abc"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
# postscriptUnderlinePosition
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["postscriptUnderlinePosition"] = "abc"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
# postscriptIsFixedPitch
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["postscriptIsFixedPitch"] = 2
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
# postscriptBlueValues
|
|
|
|
## not a list
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["postscriptBlueValues"] = "abc"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## uneven value count
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["postscriptBlueValues"] = [500]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## too many values
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["postscriptBlueValues"] = [
|
2022-12-13 11:26:36 +00:00
|
|
|
10,
|
|
|
|
20,
|
|
|
|
30,
|
|
|
|
40,
|
|
|
|
50,
|
|
|
|
60,
|
|
|
|
70,
|
|
|
|
80,
|
|
|
|
90,
|
|
|
|
100,
|
2018-06-11 15:03:54 -05:00
|
|
|
110,
|
2009-02-28 15:47:24 +00:00
|
|
|
120,
|
|
|
|
130,
|
2022-12-13 11:26:36 +00:00
|
|
|
140,
|
2009-02-28 15:47:24 +00:00
|
|
|
150,
|
2022-12-13 11:26:36 +00:00
|
|
|
160,
|
2009-02-28 15:47:24 +00:00
|
|
|
]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
# postscriptOtherBlues
|
|
|
|
## not a list
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["postscriptOtherBlues"] = "abc"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## uneven value count
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["postscriptOtherBlues"] = [500]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## too many values
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["postscriptOtherBlues"] = [
|
|
|
|
10,
|
|
|
|
20,
|
|
|
|
30,
|
|
|
|
40,
|
|
|
|
50,
|
|
|
|
60,
|
|
|
|
70,
|
|
|
|
80,
|
|
|
|
90,
|
|
|
|
100,
|
|
|
|
110,
|
|
|
|
120,
|
|
|
|
130,
|
|
|
|
140,
|
|
|
|
150,
|
|
|
|
160,
|
|
|
|
]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
# postscriptFamilyBlues
|
|
|
|
## not a list
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["postscriptFamilyBlues"] = "abc"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## uneven value count
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["postscriptFamilyBlues"] = [500]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## too many values
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["postscriptFamilyBlues"] = [
|
|
|
|
10,
|
|
|
|
20,
|
|
|
|
30,
|
|
|
|
40,
|
|
|
|
50,
|
|
|
|
60,
|
|
|
|
70,
|
|
|
|
80,
|
|
|
|
90,
|
|
|
|
100,
|
|
|
|
110,
|
|
|
|
120,
|
|
|
|
130,
|
|
|
|
140,
|
|
|
|
150,
|
|
|
|
160,
|
|
|
|
]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
# postscriptFamilyOtherBlues
|
|
|
|
## not a list
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["postscriptFamilyOtherBlues"] = "abc"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## uneven value count
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["postscriptFamilyOtherBlues"] = [500]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## too many values
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["postscriptFamilyOtherBlues"] = [
|
2022-12-13 11:26:36 +00:00
|
|
|
10,
|
|
|
|
20,
|
2018-06-11 15:03:54 -05:00
|
|
|
30,
|
2022-12-13 11:26:36 +00:00
|
|
|
40,
|
|
|
|
50,
|
|
|
|
60,
|
|
|
|
70,
|
|
|
|
80,
|
|
|
|
90,
|
|
|
|
100,
|
|
|
|
110,
|
|
|
|
120,
|
|
|
|
130,
|
2009-02-28 15:47:24 +00:00
|
|
|
140,
|
|
|
|
150,
|
2022-12-13 11:26:36 +00:00
|
|
|
160,
|
2009-02-28 15:47:24 +00:00
|
|
|
]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
# postscriptStemSnapH
|
|
|
|
## not list
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["postscriptStemSnapH"] = "abc"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## too many values
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["postscriptStemSnapH"] = [
|
2022-12-13 11:26:36 +00:00
|
|
|
10,
|
|
|
|
20,
|
2018-06-11 15:03:54 -05:00
|
|
|
30,
|
2009-02-28 15:47:24 +00:00
|
|
|
40,
|
|
|
|
50,
|
2022-12-13 11:26:36 +00:00
|
|
|
60,
|
|
|
|
70,
|
|
|
|
80,
|
|
|
|
90,
|
2018-06-11 15:03:54 -05:00
|
|
|
100,
|
2009-02-28 15:47:24 +00:00
|
|
|
110,
|
|
|
|
120,
|
2022-12-13 11:26:36 +00:00
|
|
|
130,
|
|
|
|
140,
|
|
|
|
150,
|
|
|
|
160,
|
2009-02-28 15:47:24 +00:00
|
|
|
]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
# postscriptStemSnapV
|
|
|
|
## not list
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["postscriptStemSnapV"] = "abc"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## too many values
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["postscriptStemSnapV"] = [
|
|
|
|
10,
|
|
|
|
20,
|
2022-12-13 11:26:36 +00:00
|
|
|
30,
|
|
|
|
40,
|
|
|
|
50,
|
2018-06-11 15:03:54 -05:00
|
|
|
60,
|
2009-02-28 15:47:24 +00:00
|
|
|
70,
|
|
|
|
80,
|
2022-12-13 11:26:36 +00:00
|
|
|
90,
|
|
|
|
100,
|
|
|
|
110,
|
|
|
|
120,
|
|
|
|
130,
|
|
|
|
140,
|
|
|
|
150,
|
|
|
|
160,
|
2009-02-28 15:47:24 +00:00
|
|
|
]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
# postscriptBlueFuzz
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["postscriptBlueFuzz"] = "abc"
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
2011-09-18 12:16:25 +00:00
|
|
|
# postscriptBlueShift
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["postscriptBlueShift"] = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
# postscriptBlueScale
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2009-02-28 15:47:24 +00:00
|
|
|
info["postscriptBlueScale"] = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
2009-02-28 15:47:24 +00:00
|
|
|
# postscriptForceBold
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["postscriptForceBold"] = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
# postscriptDefaultWidthX
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["postscriptDefaultWidthX"] = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
2009-02-28 15:47:24 +00:00
|
|
|
# postscriptNominalWidthX
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["postscriptNominalWidthX"] = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
# postscriptWeightName
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["postscriptWeightName"] = 123
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
# postscriptDefaultCharacter
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["postscriptDefaultCharacter"] = 123
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
# postscriptWindowsCharacterSet
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["postscriptWindowsCharacterSet"] = -1
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
# macintoshFONDFamilyID
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["macintoshFONDFamilyID"] = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
# macintoshFONDName
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["macintoshFONDName"] = 123
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-18 12:16:25 +00:00
|
|
|
def testWOFFRead(self):
|
|
|
|
# woffMajorVersion
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMajorVersion"] = 1.0
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMajorVersion"] = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2011-09-18 12:16:25 +00:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
2011-09-16 11:23:44 +00:00
|
|
|
# woffMinorVersion
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-16 11:23:44 +00:00
|
|
|
info["woffMinorVersion"] = 1.0
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMinorVersion"] = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
# woffMetadataUniqueID
|
|
|
|
## none
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
del info["woffMetadataUniqueID"]
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
reader.readInfo(TestInfoObject())
|
|
|
|
## not a dict
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataUniqueID"] = 1
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## unknown key
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataUniqueID"] = dict(id="foo", notTheRightKey=1)
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## no id
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataUniqueID"] = dict()
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
2011-09-16 11:23:44 +00:00
|
|
|
## not a string for id
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataUniqueID"] = dict(id=1)
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## empty string
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataUniqueID"] = dict(id="")
|
|
|
|
self._writeInfoToPlist(info)
|
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
|
|
|
reader.readInfo(TestInfoObject())
|
|
|
|
# woffMetadataVendor
|
|
|
|
## no name
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataVendor"] = dict(url="foo")
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## name not a string
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataVendor"] = dict(name=1, url="foo")
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## name an empty string
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataVendor"] = dict(name="", url="foo")
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
reader.readInfo(TestInfoObject())
|
|
|
|
## no URL
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataVendor"] = dict(name="foo")
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
reader.readInfo(TestInfoObject())
|
|
|
|
## url not a string
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataVendor"] = dict(name="foo", url=1)
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## url empty string
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataVendor"] = dict(name="foo", url="")
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
reader.readInfo(TestInfoObject())
|
2011-09-16 11:23:44 +00:00
|
|
|
## have dir
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataVendor"] = dict(name="foo", url="bar", dir="ltr")
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
reader.readInfo(TestInfoObject())
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataVendor"] = dict(name="foo", url="bar", dir="rtl")
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
reader.readInfo(TestInfoObject())
|
|
|
|
## dir not a string
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataVendor"] = dict(name="foo", url="bar", dir=1)
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## dir not ltr or rtl
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataVendor"] = dict(name="foo", url="bar", dir="utd")
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## have class
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataVendor"] = {"name": "foo", "url": "bar", "class": "hello"}
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
reader.readInfo(TestInfoObject())
|
|
|
|
## class not a string
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataVendor"] = {"name": "foo", "url": "bar", "class": 1}
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## class empty string
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataVendor"] = {"name": "foo", "url": "bar", "class": ""}
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
reader.readInfo(TestInfoObject())
|
|
|
|
# woffMetadataCredits
|
2011-09-16 14:08:58 +00:00
|
|
|
## no credits attribute
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-16 14:08:58 +00:00
|
|
|
info["woffMetadataCredits"] = {}
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## unknown attribute
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataCredits"] = dict(credits=[dict(name="foo")], notTheRightKey=1)
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## not a list
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataCredits"] = dict(credits="abc")
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## no elements in credits
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataCredits"] = dict(credits=[])
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## credit not a dict
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataCredits"] = dict(credits=["abc"])
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## unknown key
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataCredits"] = dict(credits=[dict(name="foo", notTheRightKey=1)])
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## no name
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataCredits"] = dict(credits=[dict(url="foo")])
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## name not a string
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataCredits"] = dict(credits=[dict(name=1)])
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## url not a string
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataCredits"] = dict(credits=[dict(name="foo", url=1)])
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## role not a string
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataCredits"] = dict(credits=[dict(name="foo", role=1)])
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## dir not a string
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataCredits"] = dict(credits=[dict(name="foo", dir=1)])
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## dir not ltr or rtl
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataCredits"] = dict(credits=[dict(name="foo", dir="utd")])
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## class not a string
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataCredits"] = dict(credits=[{"name": "foo", "class": 1}])
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
# woffMetadataDescription
|
|
|
|
## no url
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataDescription"] = dict(text=[dict(text="foo")])
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
reader.readInfo(TestInfoObject())
|
|
|
|
## url not a string
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataDescription"] = dict(text=[dict(text="foo")], url=1)
|
2011-09-14 23:18:00 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## no text
|
2011-09-14 23:18:00 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataDescription"] = dict(url="foo")
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## text not a list
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataDescription"] = dict(text="abc")
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
2011-09-16 15:40:21 +00:00
|
|
|
## text item not a dict
|
2011-09-14 23:18:00 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataDescription"] = dict(text=["abc"])
|
2011-09-14 23:18:00 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## text item unknown key
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataDescription"] = dict(
|
|
|
|
text=[dict(text="foo", notTheRightKey=1)]
|
|
|
|
)
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## text item missing text
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataDescription"] = dict(text=[dict(language="foo")])
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## text not a string
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataDescription"] = dict(text=[dict(text=1)])
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## url not a string
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["woffMetadataDescription"] = dict(text=[dict(text="foo", url=1)])
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## language not a string
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataDescription"] = dict(text=[dict(text="foo", language=1)])
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## dir not ltr or rtl
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataDescription"] = dict(text=[dict(text="foo", dir="utd")])
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## class not a string
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataDescription"] = dict(text=[{"text": "foo", "class": 1}])
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
# woffMetadataLicense
|
|
|
|
## no url
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-16 16:21:48 +00:00
|
|
|
info["woffMetadataLicense"] = dict(text=[dict(text="foo")])
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
reader.readInfo(TestInfoObject())
|
2011-09-16 11:23:44 +00:00
|
|
|
## url not a string
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataLicense"] = dict(text=[dict(text="foo")], url=1)
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## id not a string
|
2011-09-14 23:18:00 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataLicense"] = dict(text=[dict(text="foo")], id=1)
|
2011-09-14 23:18:00 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## no text
|
2011-09-14 23:18:00 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataLicense"] = dict(url="foo")
|
2011-09-14 23:18:00 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
reader.readInfo(TestInfoObject())
|
|
|
|
## text not a list
|
2011-09-14 23:18:00 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataLicense"] = dict(text="abc")
|
2011-09-14 23:18:00 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## text item not a dict
|
2011-09-14 23:18:00 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataLicense"] = dict(text=["abc"])
|
2011-09-14 23:18:00 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## text item unknown key
|
2011-09-14 23:18:00 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataLicense"] = dict(text=[dict(text="foo", notTheRightKey=1)])
|
2011-09-14 23:18:00 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## text item missing text
|
2011-09-14 23:18:00 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataLicense"] = dict(text=[dict(language="foo")])
|
2011-09-14 23:18:00 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## text not a string
|
2011-09-14 23:18:00 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataLicense"] = dict(text=[dict(text=1)])
|
2011-09-14 23:18:00 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## url not a string
|
2011-09-14 23:18:00 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataLicense"] = dict(text=[dict(text="foo", url=1)])
|
2011-09-14 23:18:00 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## language not a string
|
2011-09-14 23:18:00 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataLicense"] = dict(text=[dict(text="foo", language=1)])
|
2011-09-14 23:18:00 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## dir not ltr or rtl
|
2011-09-14 23:18:00 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataLicense"] = dict(text=[dict(text="foo", dir="utd")])
|
2011-09-14 23:18:00 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## class not a string
|
2011-09-14 23:18:00 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataLicense"] = dict(text=[{"text": "foo", "class": 1}])
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
# woffMetadataCopyright
|
2011-09-16 14:08:58 +00:00
|
|
|
## unknown attribute
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["woffMetadataCopyright"] = dict(text=[dict(text="foo")], notTheRightKey=1)
|
2011-09-14 23:18:00 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## no text
|
2011-09-14 23:18:00 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataCopyright"] = dict()
|
|
|
|
self._writeInfoToPlist(info)
|
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
2011-09-16 15:40:21 +00:00
|
|
|
## text not a list
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["woffMetadataCopyright"] = dict(text="abc")
|
2011-09-14 23:18:00 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## text item not a dict
|
2011-09-14 23:18:00 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataCopyright"] = dict(text=["abc"])
|
2011-09-14 23:18:00 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## text item unknown key
|
2011-09-14 23:18:00 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataCopyright"] = dict(text=[dict(text="foo", notTheRightKey=1)])
|
2011-09-14 23:18:00 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## text item missing text
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataCopyright"] = dict(text=[dict(language="foo")])
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## text not a string
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataCopyright"] = dict(text=[dict(text=1)])
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## url not a string
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataCopyright"] = dict(text=[dict(text="foo", url=1)])
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## language not a string
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["woffMetadataCopyright"] = dict(text=[dict(text="foo", language=1)])
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## dir not ltr or rtl
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataCopyright"] = dict(text=[dict(text="foo", dir="utd")])
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## class not a string
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataCopyright"] = dict(text=[{"text": "foo", "class": 1}])
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
# woffMetadataTrademark
|
|
|
|
## unknown attribute
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataTrademark"] = dict(text=[dict(text="foo")], notTheRightKey=1)
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## no text
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataTrademark"] = dict()
|
|
|
|
self._writeInfoToPlist(info)
|
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
2011-09-16 15:40:21 +00:00
|
|
|
## text not a list
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["woffMetadataTrademark"] = dict(text="abc")
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
2011-09-16 15:40:21 +00:00
|
|
|
## text item not a dict
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-16 16:37:09 +00:00
|
|
|
info["woffMetadataTrademark"] = dict(text=["abc"])
|
2011-09-18 12:16:25 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## text item unknown key
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataTrademark"] = dict(text=[dict(text="foo", notTheRightKey=1)])
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## text item missing text
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataTrademark"] = dict(text=[dict(language="foo")])
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## text not a string
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataTrademark"] = dict(text=[dict(text=1)])
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## url not a string
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataTrademark"] = dict(text=[dict(text="foo", url=1)])
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## language not a string
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataTrademark"] = dict(text=[dict(text="foo", language=1)])
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## dir not ltr or rtl
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataTrademark"] = dict(text=[dict(text="foo", dir="utd")])
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## class not a string
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataTrademark"] = dict(text=[{"text": "foo", "class": 1}])
|
|
|
|
self._writeInfoToPlist(info)
|
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
# woffMetadataLicensee
|
|
|
|
## no name
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["woffMetadataLicensee"] = dict()
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## unknown attribute
|
2011-09-14 21:13:27 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataLicensee"] = dict(name="foo", notTheRightKey=1)
|
2011-09-14 21:13:27 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
2011-09-14 21:13:27 +00:00
|
|
|
## name not a string
|
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 12:16:25 +00:00
|
|
|
info["woffMetadataLicensee"] = dict(name=1)
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## dir options
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["woffMetadataLicensee"] = dict(name="foo", dir="ltr")
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
reader.readInfo(TestInfoObject())
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["woffMetadataLicensee"] = dict(name="foo", dir="rtl")
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
reader.readInfo(TestInfoObject())
|
|
|
|
## dir not ltr or rtl
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["woffMetadataLicensee"] = dict(name="foo", dir="utd")
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
2011-09-16 11:23:44 +00:00
|
|
|
## have class
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["woffMetadataLicensee"] = {"name": "foo", "class": "hello"}
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
reader.readInfo(TestInfoObject())
|
|
|
|
## class not a string
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["woffMetadataLicensee"] = {"name": "foo", "class": 1}
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-18 12:16:25 +00:00
|
|
|
def testGuidelinesRead(self):
|
|
|
|
# x
|
|
|
|
## not an int or float
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["guidelines"] = [dict(x="1")]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
2022-12-13 11:26:36 +00:00
|
|
|
# y
|
2011-09-18 12:16:25 +00:00
|
|
|
## not an int or float
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["guidelines"] = [dict(y="1")]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
2022-12-13 11:26:36 +00:00
|
|
|
# angle
|
2011-09-18 12:16:25 +00:00
|
|
|
## < 0
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["guidelines"] = [dict(x=0, y=0, angle=-1)]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## > 360
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["guidelines"] = [dict(x=0, y=0, angle=361)]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
# name
|
|
|
|
## not a string
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["guidelines"] = [dict(x=0, name=1)]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
# color
|
|
|
|
## not a string
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["guidelines"] = [dict(x=0, color=1)]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
2011-09-18 11:18:31 +00:00
|
|
|
## not enough commas
|
2011-09-18 12:16:25 +00:00
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["guidelines"] = [dict(x=0, color="1 0, 0, 0")]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["guidelines"] = [dict(x=0, color="1 0 0, 0")]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["guidelines"] = [dict(x=0, color="1 0 0 0")]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## not enough parts
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["guidelines"] = [dict(x=0, color=", 0, 0, 0")]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["guidelines"] = [dict(x=0, color="1, , 0, 0")]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["guidelines"] = [dict(x=0, color="1, 0, , 0")]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["guidelines"] = [dict(x=0, color="1, 0, 0, ")]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["guidelines"] = [dict(x=0, color=", , , ")]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## not a number in all positions
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["guidelines"] = [dict(x=0, color="r, 1, 1, 1")]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["guidelines"] = [dict(x=0, color="1, g, 1, 1")]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
info = dict(fontInfoVersion3)
|
2011-09-18 11:18:31 +00:00
|
|
|
info["guidelines"] = [dict(x=0, color="1, 1, b, 1")]
|
2011-09-18 12:16:25 +00:00
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["guidelines"] = [dict(x=0, color="1, 1, 1, a")]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## too many parts
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["guidelines"] = [dict(x=0, color="1, 0, 0, 0, 0")]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## < 0 in each position
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["guidelines"] = [dict(x=0, color="-1, 0, 0, 0")]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["guidelines"] = [dict(x=0, color="0, -1, 0, 0")]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["guidelines"] = [dict(x=0, color="0, 0, -1, 0")]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["guidelines"] = [dict(x=0, color="0, 0, 0, -1")]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
## > 1 in each position
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["guidelines"] = [dict(x=0, color="2, 0, 0, 0")]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["guidelines"] = [dict(x=0, color="0, 2, 0, 0")]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["guidelines"] = [dict(x=0, color="0, 0, 2, 0")]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["guidelines"] = [dict(x=0, color="0, 0, 0, 2")]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
|
|
|
# identifier
|
|
|
|
## duplicate
|
|
|
|
info = dict(fontInfoVersion3)
|
|
|
|
info["guidelines"] = [
|
|
|
|
dict(x=0, identifier="guide1"),
|
|
|
|
dict(y=0, identifier="guide1"),
|
|
|
|
]
|
|
|
|
self._writeInfoToPlist(info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.dstDir, validate=True)
|
2011-09-18 12:16:25 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.readInfo, TestInfoObject())
|
2009-02-28 15:47:24 +00:00
|
|
|
|
|
|
|
|
2011-09-14 21:13:27 +00:00
|
|
|
class WriteFontInfoVersion3TestCase(unittest.TestCase):
|
2009-02-28 15:47:24 +00:00
|
|
|
def setUp(self):
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tempDir = tempfile.mktemp()
|
|
|
|
os.mkdir(self.tempDir)
|
|
|
|
self.dstDir = os.path.join(self.tempDir, "test.ufo")
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2009-02-28 15:47:24 +00:00
|
|
|
def tearDown(self):
|
2011-09-19 01:40:21 +00:00
|
|
|
shutil.rmtree(self.tempDir)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-19 01:40:21 +00:00
|
|
|
def tearDownUFO(self):
|
2015-11-02 14:10:06 +00:00
|
|
|
if os.path.exists(self.dstDir):
|
|
|
|
shutil.rmtree(self.dstDir)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2009-02-28 15:47:24 +00:00
|
|
|
def makeInfoObject(self):
|
|
|
|
infoObject = TestInfoObject()
|
2015-11-05 09:03:19 +00:00
|
|
|
for attr, value in list(fontInfoVersion3.items()):
|
2009-02-28 15:47:24 +00:00
|
|
|
setattr(infoObject, attr, value)
|
|
|
|
return infoObject
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2009-02-28 15:47:24 +00:00
|
|
|
def readPlist(self):
|
|
|
|
path = os.path.join(self.dstDir, "fontinfo.plist")
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "rb") as f:
|
2018-07-11 12:30:11 +01:00
|
|
|
plist = plistlib.load(f)
|
2015-11-04 07:36:50 +00:00
|
|
|
return plist
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2009-02-28 15:47:24 +00:00
|
|
|
def testWrite(self):
|
|
|
|
infoObject = self.makeInfoObject()
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
writer.writeInfo(infoObject)
|
|
|
|
writtenData = self.readPlist()
|
2015-11-05 09:03:19 +00:00
|
|
|
for attr, originalValue in list(fontInfoVersion3.items()):
|
2009-02-28 15:47:24 +00:00
|
|
|
newValue = writtenData[attr]
|
|
|
|
self.assertEqual(newValue, originalValue)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2009-02-28 15:47:24 +00:00
|
|
|
def testGenericWrite(self):
|
|
|
|
# familyName
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.familyName = 123
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# styleName
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.styleName = 123
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# styleMapFamilyName
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.styleMapFamilyName = 123
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# styleMapStyleName
|
|
|
|
## not a string
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.styleMapStyleName = 123
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
## out of range
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.styleMapStyleName = "REGULAR"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# versionMajor
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.versionMajor = "1"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# versionMinor
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.versionMinor = "0"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# copyright
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.copyright = 123
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# trademark
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.trademark = 123
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# unitsPerEm
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.unitsPerEm = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# descender
|
2011-09-14 21:13:27 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
2009-02-28 15:47:24 +00:00
|
|
|
infoObject.descender = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# xHeight
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.xHeight = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# capHeight
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.capHeight = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# ascender
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.ascender = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# italicAngle
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.italicAngle = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2009-02-28 15:47:24 +00:00
|
|
|
def testGaspWrite(self):
|
|
|
|
# not a list
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeGaspRangeRecords = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2022-12-13 11:26:36 +00:00
|
|
|
# empty list
|
2011-09-14 23:18:00 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
2011-09-14 21:13:27 +00:00
|
|
|
infoObject.openTypeGaspRangeRecords = []
|
2011-09-14 23:18:00 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2011-10-18 13:15:04 +00:00
|
|
|
writer.writeInfo(infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-14 21:13:27 +00:00
|
|
|
# not a dict
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeGaspRangeRecords = ["abc"]
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-14 21:13:27 +00:00
|
|
|
# dict not properly formatted
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeGaspRangeRecords = [
|
2011-09-18 12:16:25 +00:00
|
|
|
dict(rangeMaxPPEM=0xFFFF, notTheRightKey=1)
|
2011-09-14 21:13:27 +00:00
|
|
|
]
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-14 21:13:27 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeGaspRangeRecords = [
|
|
|
|
dict(notTheRightKey=1, rangeGaspBehavior=[0])
|
|
|
|
]
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-18 11:18:31 +00:00
|
|
|
# not an int for ppem
|
2011-09-14 21:13:27 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeGaspRangeRecords = [
|
2012-02-14 03:34:28 +00:00
|
|
|
dict(rangeMaxPPEM="abc", rangeGaspBehavior=[0]),
|
2011-09-14 21:13:27 +00:00
|
|
|
dict(rangeMaxPPEM=0xFFFF, rangeGaspBehavior=[0]),
|
|
|
|
]
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-14 21:13:27 +00:00
|
|
|
# not a list for behavior
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeGaspRangeRecords = [
|
|
|
|
dict(rangeMaxPPEM=10, rangeGaspBehavior="abc"),
|
|
|
|
dict(rangeMaxPPEM=0xFFFF, rangeGaspBehavior=[0]),
|
|
|
|
]
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-14 21:13:27 +00:00
|
|
|
# invalid behavior value
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeGaspRangeRecords = [
|
|
|
|
dict(rangeMaxPPEM=10, rangeGaspBehavior=[-1]),
|
|
|
|
dict(rangeMaxPPEM=0xFFFF, rangeGaspBehavior=[0]),
|
|
|
|
]
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-14 21:13:27 +00:00
|
|
|
# not sorted
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeGaspRangeRecords = [
|
|
|
|
dict(rangeMaxPPEM=0xFFFF, rangeGaspBehavior=[0]),
|
|
|
|
dict(rangeMaxPPEM=10, rangeGaspBehavior=[0]),
|
|
|
|
]
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-14 21:13:27 +00:00
|
|
|
# no 0xFFFF
|
|
|
|
infoObject = self.makeInfoObject()
|
2012-02-14 03:34:28 +00:00
|
|
|
infoObject.openTypeGaspRangeRecords = [
|
|
|
|
dict(rangeMaxPPEM=10, rangeGaspBehavior=[0]),
|
|
|
|
dict(rangeMaxPPEM=20, rangeGaspBehavior=[0]),
|
|
|
|
]
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2012-02-14 03:34:28 +00:00
|
|
|
writer.writeInfo(infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2009-02-28 15:47:24 +00:00
|
|
|
def testHeadWrite(self):
|
|
|
|
# openTypeHeadCreated
|
|
|
|
## not a string
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeHeadCreated = 123
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
## invalid format
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeHeadCreated = "2000-Jan-01 00:00:00"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeHeadLowestRecPPEM
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeHeadLowestRecPPEM = "abc"
|
2011-09-14 23:18:00 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeHeadFlags
|
2011-09-14 23:18:00 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
2009-02-28 15:47:24 +00:00
|
|
|
infoObject.openTypeHeadFlags = [-1]
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2009-02-28 15:47:24 +00:00
|
|
|
def testHheaWrite(self):
|
|
|
|
# openTypeHheaAscender
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeHheaAscender = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeHheaDescender
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeHheaDescender = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeHheaLineGap
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeHheaLineGap = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeHheaCaretSlopeRise
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeHheaCaretSlopeRise = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeHheaCaretSlopeRun
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeHheaCaretSlopeRun = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeHheaCaretOffset
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeHheaCaretOffset = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2009-02-28 15:47:24 +00:00
|
|
|
def testNameWrite(self):
|
|
|
|
# openTypeNameDesigner
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeNameDesigner = 123
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeNameDesignerURL
|
2011-09-14 23:18:00 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeNameDesignerURL = 123
|
2009-02-28 15:47:24 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2011-09-14 23:18:00 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-18 12:16:25 +00:00
|
|
|
# openTypeNameManufacturer
|
2009-02-28 15:47:24 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeNameManufacturer = 123
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeNameManufacturerURL
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeNameManufacturerURL = 123
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeNameLicense
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeNameLicense = 123
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeNameLicenseURL
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeNameLicenseURL = 123
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeNameVersion
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeNameVersion = 123
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeNameUniqueID
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeNameUniqueID = 123
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeNameDescription
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeNameDescription = 123
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeNamePreferredFamilyName
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeNamePreferredFamilyName = 123
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeNamePreferredSubfamilyName
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeNamePreferredSubfamilyName = 123
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeNameCompatibleFullName
|
|
|
|
infoObject = self.makeInfoObject()
|
2011-09-14 23:18:00 +00:00
|
|
|
infoObject.openTypeNameCompatibleFullName = 123
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeNameSampleText
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeNameSampleText = 123
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeNameWWSFamilyName
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeNameWWSFamilyName = 123
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeNameWWSSubfamilyName
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeNameWWSSubfamilyName = 123
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeNameRecords
|
|
|
|
## not a list
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeNameRecords = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
## not a dict
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeNameRecords = ["abc"]
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
## invalid dict structure
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeNameRecords = [dict(foo="bar")]
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-14 23:18:00 +00:00
|
|
|
## incorrect keys
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeNameRecords = [
|
2022-12-13 11:26:36 +00:00
|
|
|
dict(
|
|
|
|
nameID=1,
|
2011-09-14 23:18:00 +00:00
|
|
|
platformID=1,
|
|
|
|
encodingID=1,
|
|
|
|
languageID=1,
|
|
|
|
string="Name Record.",
|
|
|
|
foo="bar",
|
2022-12-13 11:26:36 +00:00
|
|
|
)
|
2011-09-14 23:18:00 +00:00
|
|
|
]
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-14 23:18:00 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeNameRecords = [
|
|
|
|
dict(platformID=1, encodingID=1, languageID=1, string="Name Record.")
|
|
|
|
]
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-14 23:18:00 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeNameRecords = [
|
|
|
|
dict(nameID=1, encodingID=1, languageID=1, string="Name Record.")
|
|
|
|
]
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-14 23:18:00 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeNameRecords = [
|
|
|
|
dict(nameID=1, platformID=1, languageID=1, string="Name Record.")
|
|
|
|
]
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-14 23:18:00 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeNameRecords = [
|
|
|
|
dict(nameID=1, platformID=1, encodingID=1, string="Name Record.")
|
|
|
|
]
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-14 23:18:00 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeNameRecords = [
|
|
|
|
dict(nameID=1, platformID=1, encodingID=1, languageID=1)
|
|
|
|
]
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-14 23:18:00 +00:00
|
|
|
## invalid values
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeNameRecords = [
|
|
|
|
dict(
|
|
|
|
nameID="1",
|
|
|
|
platformID=1,
|
|
|
|
encodingID=1,
|
|
|
|
languageID=1,
|
|
|
|
string="Name Record.",
|
|
|
|
)
|
|
|
|
]
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-14 23:18:00 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeNameRecords = [
|
|
|
|
dict(
|
|
|
|
nameID=1,
|
|
|
|
platformID="1",
|
|
|
|
encodingID=1,
|
|
|
|
languageID=1,
|
|
|
|
string="Name Record.",
|
|
|
|
)
|
|
|
|
]
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-14 23:18:00 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeNameRecords = [
|
|
|
|
dict(
|
|
|
|
nameID=1,
|
|
|
|
platformID=1,
|
|
|
|
encodingID="1",
|
|
|
|
languageID=1,
|
|
|
|
string="Name Record.",
|
2011-09-19 01:40:21 +00:00
|
|
|
)
|
2011-09-14 23:18:00 +00:00
|
|
|
]
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-14 23:18:00 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeNameRecords = [
|
|
|
|
dict(
|
|
|
|
nameID=1,
|
|
|
|
platformID=1,
|
|
|
|
encodingID=1,
|
|
|
|
languageID="1",
|
|
|
|
string="Name Record.",
|
|
|
|
)
|
|
|
|
]
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-14 23:18:00 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeNameRecords = [
|
|
|
|
dict(nameID=1, platformID=1, encodingID=1, languageID=1, string=1)
|
|
|
|
]
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-14 23:18:00 +00:00
|
|
|
## duplicate
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeNameRecords = [
|
|
|
|
dict(
|
|
|
|
nameID=1,
|
|
|
|
platformID=1,
|
|
|
|
encodingID=1,
|
|
|
|
languageID=1,
|
|
|
|
string="Name Record.",
|
|
|
|
),
|
|
|
|
dict(
|
|
|
|
nameID=1,
|
|
|
|
platformID=1,
|
|
|
|
encodingID=1,
|
|
|
|
languageID=1,
|
|
|
|
string="Name Record.",
|
|
|
|
),
|
2022-12-13 11:26:36 +00:00
|
|
|
]
|
2012-02-14 03:38:32 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
writer.writeInfo(infoObject)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2009-02-28 15:47:24 +00:00
|
|
|
def testOS2Write(self):
|
|
|
|
# openTypeOS2WidthClass
|
|
|
|
## not an int
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeOS2WidthClass = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
## out or range
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeOS2WidthClass = 15
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeOS2WeightClass
|
|
|
|
## not an int
|
2011-09-19 01:40:21 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
2009-02-28 15:47:24 +00:00
|
|
|
infoObject.openTypeOS2WeightClass = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
## out of range
|
2011-09-19 01:40:21 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
2009-02-28 15:47:24 +00:00
|
|
|
infoObject.openTypeOS2WeightClass = -50
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeOS2Selection
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeOS2Selection = [-1]
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeOS2VendorID
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeOS2VendorID = 1234
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeOS2Panose
|
|
|
|
## not an int
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeOS2Panose = [0, 1, 2, 3, 4, 5, 6, 7, 8, str(9)]
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
## too few values
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeOS2Panose = [0, 1, 2, 3]
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
## too many values
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeOS2Panose = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeOS2FamilyClass
|
|
|
|
## not an int
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeOS2FamilyClass = [0, str(1)]
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
## too few values
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeOS2FamilyClass = [1]
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
## too many values
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeOS2FamilyClass = [1, 1, 1]
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
## out of range
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeOS2FamilyClass = [1, 20]
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeOS2UnicodeRanges
|
|
|
|
## not an int
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeOS2UnicodeRanges = ["0"]
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
## out of range
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeOS2UnicodeRanges = [-1]
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeOS2CodePageRanges
|
|
|
|
## not an int
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeOS2CodePageRanges = ["0"]
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
## out of range
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeOS2CodePageRanges = [-1]
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeOS2TypoAscender
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeOS2TypoAscender = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeOS2TypoDescender
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeOS2TypoDescender = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeOS2TypoLineGap
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeOS2TypoLineGap = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeOS2WinAscent
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeOS2WinAscent = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-14 21:23:53 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeOS2WinAscent = -1
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeOS2WinDescent
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeOS2WinDescent = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-14 21:23:53 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeOS2WinDescent = -1
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeOS2Type
|
|
|
|
## not an int
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeOS2Type = ["1"]
|
2011-09-14 21:23:53 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
## out of range
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeOS2Type = [-1]
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeOS2SubscriptXSize
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeOS2SubscriptXSize = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeOS2SubscriptYSize
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeOS2SubscriptYSize = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeOS2SubscriptXOffset
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeOS2SubscriptXOffset = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeOS2SubscriptYOffset
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeOS2SubscriptYOffset = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeOS2SuperscriptXSize
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeOS2SuperscriptXSize = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeOS2SuperscriptYSize
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeOS2SuperscriptYSize = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeOS2SuperscriptXOffset
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeOS2SuperscriptXOffset = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeOS2SuperscriptYOffset
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeOS2SuperscriptYOffset = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeOS2StrikeoutSize
|
|
|
|
infoObject = self.makeInfoObject()
|
2011-09-14 23:18:00 +00:00
|
|
|
infoObject.openTypeOS2StrikeoutSize = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeOS2StrikeoutPosition
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeOS2StrikeoutPosition = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2009-02-28 15:47:24 +00:00
|
|
|
def testVheaWrite(self):
|
|
|
|
# openTypeVheaVertTypoAscender
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeVheaVertTypoAscender = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeVheaVertTypoDescender
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeVheaVertTypoDescender = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeVheaVertTypoLineGap
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeVheaVertTypoLineGap = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeVheaCaretSlopeRise
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeVheaCaretSlopeRise = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeVheaCaretSlopeRun
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeVheaCaretSlopeRun = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# openTypeVheaCaretOffset
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.openTypeVheaCaretOffset = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-12 17:49:34 +00:00
|
|
|
def testFONDWrite(self):
|
2009-02-28 15:47:24 +00:00
|
|
|
# macintoshFONDFamilyID
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.macintoshFONDFamilyID = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# macintoshFONDName
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.macintoshFONDName = 123
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2009-02-28 15:47:24 +00:00
|
|
|
def testPostscriptWrite(self):
|
|
|
|
# postscriptFontName
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.postscriptFontName = 123
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# postscriptFullName
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.postscriptFullName = 123
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# postscriptSlantAngle
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.postscriptSlantAngle = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# postscriptUniqueID
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.postscriptUniqueID = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# postscriptUnderlineThickness
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.postscriptUnderlineThickness = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# postscriptUnderlinePosition
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.postscriptUnderlinePosition = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# postscriptIsFixedPitch
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.postscriptIsFixedPitch = 2
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# postscriptBlueValues
|
|
|
|
## not a list
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.postscriptBlueValues = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
## uneven value count
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.postscriptBlueValues = [500]
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
## too many values
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.postscriptBlueValues = [
|
2011-09-14 21:13:27 +00:00
|
|
|
10,
|
2022-12-13 11:26:36 +00:00
|
|
|
20,
|
|
|
|
30,
|
|
|
|
40,
|
|
|
|
50,
|
|
|
|
60,
|
|
|
|
70,
|
|
|
|
80,
|
|
|
|
90,
|
|
|
|
100,
|
|
|
|
110,
|
2009-02-28 15:47:24 +00:00
|
|
|
120,
|
|
|
|
130,
|
2022-12-13 11:26:36 +00:00
|
|
|
140,
|
2009-02-28 15:47:24 +00:00
|
|
|
150,
|
2022-12-13 11:26:36 +00:00
|
|
|
160,
|
2009-02-28 15:47:24 +00:00
|
|
|
]
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# postscriptOtherBlues
|
|
|
|
## not a list
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.postscriptOtherBlues = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
## uneven value count
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.postscriptOtherBlues = [500]
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
## too many values
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.postscriptOtherBlues = [
|
|
|
|
10,
|
|
|
|
20,
|
|
|
|
30,
|
|
|
|
40,
|
|
|
|
50,
|
|
|
|
60,
|
|
|
|
70,
|
|
|
|
80,
|
|
|
|
90,
|
|
|
|
100,
|
|
|
|
110,
|
|
|
|
120,
|
|
|
|
130,
|
|
|
|
140,
|
|
|
|
150,
|
|
|
|
160,
|
|
|
|
]
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# postscriptFamilyBlues
|
|
|
|
## not a list
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.postscriptFamilyBlues = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
## uneven value count
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.postscriptFamilyBlues = [500]
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
## too many values
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.postscriptFamilyBlues = [
|
2022-12-13 11:26:36 +00:00
|
|
|
10,
|
|
|
|
20,
|
2011-09-14 21:13:27 +00:00
|
|
|
30,
|
2009-02-28 15:47:24 +00:00
|
|
|
40,
|
|
|
|
50,
|
|
|
|
60,
|
|
|
|
70,
|
|
|
|
80,
|
|
|
|
90,
|
|
|
|
100,
|
|
|
|
110,
|
|
|
|
120,
|
|
|
|
130,
|
|
|
|
140,
|
|
|
|
150,
|
|
|
|
160,
|
|
|
|
]
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# postscriptFamilyOtherBlues
|
|
|
|
## not a list
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.postscriptFamilyOtherBlues = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
## uneven value count
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.postscriptFamilyOtherBlues = [500]
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
## too many values
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.postscriptFamilyOtherBlues = [
|
|
|
|
10,
|
|
|
|
20,
|
|
|
|
30,
|
|
|
|
40,
|
|
|
|
50,
|
|
|
|
60,
|
|
|
|
70,
|
|
|
|
80,
|
|
|
|
90,
|
|
|
|
100,
|
|
|
|
110,
|
|
|
|
120,
|
|
|
|
130,
|
|
|
|
140,
|
|
|
|
150,
|
|
|
|
160,
|
|
|
|
]
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# postscriptStemSnapH
|
|
|
|
## not list
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.postscriptStemSnapH = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
## too many values
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.postscriptStemSnapH = [
|
|
|
|
10,
|
|
|
|
20,
|
2022-12-13 11:26:36 +00:00
|
|
|
30,
|
|
|
|
40,
|
|
|
|
50,
|
2011-09-14 21:13:27 +00:00
|
|
|
60,
|
2009-02-28 15:47:24 +00:00
|
|
|
70,
|
|
|
|
80,
|
2022-12-13 11:26:36 +00:00
|
|
|
90,
|
|
|
|
100,
|
|
|
|
110,
|
2011-09-14 21:13:27 +00:00
|
|
|
120,
|
2009-02-28 15:47:24 +00:00
|
|
|
130,
|
|
|
|
140,
|
2022-12-13 11:26:36 +00:00
|
|
|
150,
|
|
|
|
160,
|
|
|
|
]
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# postscriptStemSnapV
|
|
|
|
## not list
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.postscriptStemSnapV = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
## too many values
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.postscriptStemSnapV = [
|
2022-12-13 11:26:36 +00:00
|
|
|
10,
|
|
|
|
20,
|
|
|
|
30,
|
|
|
|
40,
|
|
|
|
50,
|
|
|
|
60,
|
|
|
|
70,
|
|
|
|
80,
|
|
|
|
90,
|
|
|
|
100,
|
|
|
|
110,
|
2009-02-28 15:47:24 +00:00
|
|
|
120,
|
|
|
|
130,
|
|
|
|
140,
|
2022-12-13 11:26:36 +00:00
|
|
|
150,
|
|
|
|
160,
|
|
|
|
]
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# postscriptBlueFuzz
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.postscriptBlueFuzz = "abc"
|
2011-09-14 21:13:27 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2009-02-28 15:47:24 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 11:23:44 +00:00
|
|
|
# postscriptBlueShift
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.postscriptBlueShift = "abc"
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# postscriptBlueScale
|
2011-09-16 11:23:44 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.postscriptBlueScale = "abc"
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 11:23:44 +00:00
|
|
|
# postscriptForceBold
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.postscriptForceBold = "abc"
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# postscriptDefaultWidthX
|
2011-09-16 11:23:44 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.postscriptDefaultWidthX = "abc"
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 11:23:44 +00:00
|
|
|
# postscriptNominalWidthX
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.postscriptNominalWidthX = "abc"
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# postscriptWeightName
|
2011-09-16 15:40:21 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
2009-02-28 15:47:24 +00:00
|
|
|
infoObject.postscriptWeightName = 123
|
2011-09-16 15:40:21 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
# postscriptDefaultCharacter
|
2011-09-16 15:40:21 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
2009-02-28 15:47:24 +00:00
|
|
|
infoObject.postscriptDefaultCharacter = 123
|
2011-09-16 15:40:21 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 11:23:44 +00:00
|
|
|
# postscriptWindowsCharacterSet
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.postscriptWindowsCharacterSet = -1
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 11:23:44 +00:00
|
|
|
# macintoshFONDFamilyID
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.macintoshFONDFamilyID = "abc"
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 11:23:44 +00:00
|
|
|
# macintoshFONDName
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.macintoshFONDName = 123
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-16 11:23:44 +00:00
|
|
|
def testWOFFWrite(self):
|
|
|
|
# woffMajorVersion
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.woffMajorVersion = 1.0
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 11:23:44 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.woffMajorVersion = "abc"
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 11:23:44 +00:00
|
|
|
# woffMinorVersion
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.woffMinorVersion = 1.0
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2016-06-13 13:17:36 -04:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 11:23:44 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.woffMinorVersion = "abc"
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2011-09-16 15:40:21 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 11:23:44 +00:00
|
|
|
# woffMetadataUniqueID
|
2022-12-13 11:26:36 +00:00
|
|
|
## none
|
2011-09-16 15:40:21 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
2011-09-16 11:23:44 +00:00
|
|
|
infoObject.woffMetadataUniqueID = None
|
2011-09-16 17:53:52 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2016-06-13 13:17:36 -04:00
|
|
|
writer.writeInfo(infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 11:23:44 +00:00
|
|
|
## not a dict
|
2011-09-16 16:37:09 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
2011-09-16 11:23:44 +00:00
|
|
|
infoObject.woffMetadataUniqueID = 1
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 11:23:44 +00:00
|
|
|
## unknown key
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.woffMetadataUniqueID = dict(id="foo", notTheRightKey=1)
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 11:23:44 +00:00
|
|
|
## no id
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.woffMetadataUniqueID = dict()
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2016-06-13 13:17:36 -04:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 11:23:44 +00:00
|
|
|
## not a string for id
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.woffMetadataUniqueID = dict(id=1)
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-18 12:16:25 +00:00
|
|
|
## empty string
|
2011-09-16 16:37:09 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
2011-09-16 11:23:44 +00:00
|
|
|
infoObject.woffMetadataUniqueID = dict(id="")
|
2011-09-16 17:53:52 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
writer.writeInfo(infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 11:23:44 +00:00
|
|
|
# woffMetadataVendor
|
|
|
|
## no name
|
2011-09-16 16:37:09 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
2011-09-16 11:23:44 +00:00
|
|
|
infoObject.woffMetadataVendor = dict(url="foo")
|
2011-09-16 17:53:52 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2011-09-16 16:37:09 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 11:23:44 +00:00
|
|
|
## name not a string
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.woffMetadataVendor = dict(name=1, url="foo")
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 11:23:44 +00:00
|
|
|
## name an empty string
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.woffMetadataVendor = dict(name="", url="foo")
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2016-06-13 13:17:36 -04:00
|
|
|
writer.writeInfo(infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 11:23:44 +00:00
|
|
|
## no URL
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.woffMetadataVendor = dict(name="foo")
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2011-09-16 17:53:52 +00:00
|
|
|
writer.writeInfo(infoObject)
|
2011-09-16 11:23:44 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 15:40:21 +00:00
|
|
|
## url not a string
|
2011-09-16 16:37:09 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
2011-09-16 11:23:44 +00:00
|
|
|
infoObject.woffMetadataVendor = dict(name="foo", url=1)
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 11:23:44 +00:00
|
|
|
## url empty string
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.woffMetadataVendor = dict(name="foo", url="")
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2016-06-13 13:17:36 -04:00
|
|
|
writer.writeInfo(infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 14:08:58 +00:00
|
|
|
## have dir
|
2011-09-16 16:37:09 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
2011-09-16 14:08:58 +00:00
|
|
|
infoObject.woffMetadataVendor = dict(name="foo", url="bar", dir="ltr")
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2011-09-16 17:53:52 +00:00
|
|
|
writer.writeInfo(infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 14:08:58 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.woffMetadataVendor = dict(name="foo", url="bar", dir="rtl")
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
writer.writeInfo(infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 14:08:58 +00:00
|
|
|
## dir not a string
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.woffMetadataVendor = dict(name="foo", url="bar", dir=1)
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 14:08:58 +00:00
|
|
|
## dir not ltr or rtl
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.woffMetadataVendor = dict(name="foo", url="bar", dir="utd")
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 14:08:58 +00:00
|
|
|
## have class
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.woffMetadataVendor = {"name": "foo", "url": "bar", "class": "hello"}
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
writer.writeInfo(infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 14:08:58 +00:00
|
|
|
## class not a string
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.woffMetadataVendor = {"name": "foo", "url": "bar", "class": 1}
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 14:08:58 +00:00
|
|
|
## class empty string
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.woffMetadataVendor = {"name": "foo", "url": "bar", "class": ""}
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
writer.writeInfo(infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 14:08:58 +00:00
|
|
|
# woffMetadataCredits
|
|
|
|
## no credits attribute
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.woffMetadataCredits = {}
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 14:08:58 +00:00
|
|
|
## unknown attribute
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.woffMetadataCredits = dict(
|
|
|
|
credits=[dict(name="foo")], notTheRightKey=1
|
|
|
|
)
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 14:08:58 +00:00
|
|
|
## not a list
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.woffMetadataCredits = dict(credits="abc")
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 14:08:58 +00:00
|
|
|
## no elements in credits
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.woffMetadataCredits = dict(credits=[])
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 14:08:58 +00:00
|
|
|
## credit not a dict
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.woffMetadataCredits = dict(credits=["abc"])
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 14:08:58 +00:00
|
|
|
## unknown key
|
|
|
|
infoObject = self.makeInfoObject()
|
2011-09-16 15:40:21 +00:00
|
|
|
infoObject.woffMetadataCredits = dict(
|
|
|
|
credits=[dict(name="foo", notTheRightKey=1)]
|
|
|
|
)
|
2011-09-16 14:08:58 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 14:08:58 +00:00
|
|
|
## no name
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.woffMetadataCredits = dict(credits=[dict(url="foo")])
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 15:40:21 +00:00
|
|
|
## name not a string
|
2011-09-16 14:08:58 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
2011-09-16 15:40:21 +00:00
|
|
|
infoObject.woffMetadataCredits = dict(credits=[dict(name=1)])
|
2016-06-13 13:19:40 -04:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2016-06-13 13:17:36 -04:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 15:40:21 +00:00
|
|
|
## url not a string
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.woffMetadataCredits = dict(credits=[dict(name="foo", url=1)])
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 11:23:44 +00:00
|
|
|
## role not a string
|
2011-09-16 17:53:52 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
2011-09-16 15:40:21 +00:00
|
|
|
infoObject.woffMetadataCredits = dict(credits=[dict(name="foo", role=1)])
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 15:40:21 +00:00
|
|
|
## dir not a string
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.woffMetadataCredits = dict(credits=[dict(name="foo", dir=1)])
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 15:40:21 +00:00
|
|
|
## dir not ltr or rtl
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.woffMetadataCredits = dict(credits=[dict(name="foo", dir="utd")])
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 15:40:21 +00:00
|
|
|
## class not a string
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.woffMetadataCredits = dict(credits=[{"name": "foo", "class": 1}])
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 15:40:21 +00:00
|
|
|
# woffMetadataDescription
|
|
|
|
## no url
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.woffMetadataDescription = dict(text=[dict(text="foo")])
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
writer.writeInfo(infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 15:40:21 +00:00
|
|
|
## url not a string
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.woffMetadataDescription = dict(text=[dict(text="foo")], url=1)
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 15:40:21 +00:00
|
|
|
## no text
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.woffMetadataDescription = dict(url="foo")
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 15:40:21 +00:00
|
|
|
## text not a list
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.woffMetadataDescription = dict(text="abc")
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 15:40:21 +00:00
|
|
|
## text item not a dict
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.woffMetadataDescription = dict(text=["abc"])
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 16:21:48 +00:00
|
|
|
## text item unknown key
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.woffMetadataDescription = dict(
|
|
|
|
text=[dict(text="foo", notTheRightKey=1)]
|
|
|
|
)
|
2011-09-16 17:53:52 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2016-06-13 13:17:36 -04:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 16:21:48 +00:00
|
|
|
## text item missing text
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.woffMetadataDescription = dict(text=[dict(language="foo")])
|
2011-09-16 17:53:52 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2011-09-16 16:21:48 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 16:21:48 +00:00
|
|
|
## text not a string
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.woffMetadataDescription = dict(text=[dict(text=1)])
|
2011-09-16 17:53:52 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2011-09-16 16:21:48 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 16:21:48 +00:00
|
|
|
## url not a string
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.woffMetadataDescription = dict(text=[dict(text="foo", url=1)])
|
2011-09-16 17:53:52 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2016-06-13 13:17:36 -04:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 16:21:48 +00:00
|
|
|
## language not a string
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.woffMetadataDescription = dict(text=[dict(text="foo", language=1)])
|
2011-09-16 17:53:52 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2011-09-16 16:21:48 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 16:21:48 +00:00
|
|
|
## dir not ltr or rtl
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.woffMetadataDescription = dict(text=[dict(text="foo", dir="utd")])
|
2011-09-16 17:53:52 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2011-09-16 16:21:48 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 16:21:48 +00:00
|
|
|
## class not a string
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.woffMetadataDescription = dict(text=[{"text": "foo", "class": 1}])
|
2011-09-16 17:53:52 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2011-09-16 16:21:48 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 17:53:52 +00:00
|
|
|
# woffMetadataLicense
|
2011-09-16 11:23:44 +00:00
|
|
|
## no url
|
2011-09-18 11:18:31 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
2011-09-16 16:21:48 +00:00
|
|
|
infoObject.woffMetadataLicense = dict(text=[dict(text="foo")])
|
2011-09-16 17:53:52 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
writer.writeInfo(infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 16:21:48 +00:00
|
|
|
## url not a string
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.woffMetadataLicense = dict(text=[dict(text="foo")], url=1)
|
2011-09-16 17:53:52 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 16:21:48 +00:00
|
|
|
## id not a string
|
2011-09-18 11:18:31 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
2011-09-16 16:21:48 +00:00
|
|
|
infoObject.woffMetadataLicense = dict(text=[dict(text="foo")], id=1)
|
2011-09-16 17:53:52 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2011-09-16 16:21:48 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 16:21:48 +00:00
|
|
|
## no text
|
|
|
|
infoObject = self.makeInfoObject()
|
2011-09-16 17:53:52 +00:00
|
|
|
infoObject.woffMetadataLicense = dict(url="foo")
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
writer.writeInfo(infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2009-02-28 15:47:24 +00:00
|
|
|
## text not a list
|
2011-09-18 11:18:31 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
2011-09-16 16:21:48 +00:00
|
|
|
infoObject.woffMetadataLicense = dict(text="abc")
|
2011-09-16 17:53:52 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2011-09-16 16:21:48 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 16:21:48 +00:00
|
|
|
## text item not a dict
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.woffMetadataLicense = dict(text=["abc"])
|
2011-09-16 17:53:52 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 16:21:48 +00:00
|
|
|
## text item unknown key
|
2011-09-18 11:18:31 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
2011-09-16 16:21:48 +00:00
|
|
|
infoObject.woffMetadataLicense = dict(text=[dict(text="foo", notTheRightKey=1)])
|
2011-09-16 17:53:52 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2011-09-16 16:21:48 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 16:21:48 +00:00
|
|
|
## text item missing text
|
|
|
|
infoObject = self.makeInfoObject()
|
2011-09-16 17:53:52 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2011-09-16 16:21:48 +00:00
|
|
|
infoObject.woffMetadataLicense = dict(text=[dict(language="foo")])
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 16:21:48 +00:00
|
|
|
## text not a string
|
|
|
|
infoObject = self.makeInfoObject()
|
2011-09-16 17:53:52 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2011-09-16 16:21:48 +00:00
|
|
|
infoObject.woffMetadataLicense = dict(text=[dict(text=1)])
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 16:21:48 +00:00
|
|
|
## url not a string
|
|
|
|
infoObject = self.makeInfoObject()
|
2011-09-16 17:53:52 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2011-09-16 16:21:48 +00:00
|
|
|
infoObject.woffMetadataLicense = dict(text=[dict(text="foo", url=1)])
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 16:34:32 +00:00
|
|
|
## language not a string
|
|
|
|
infoObject = self.makeInfoObject()
|
2011-09-16 17:53:52 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2011-09-16 16:34:32 +00:00
|
|
|
infoObject.woffMetadataLicense = dict(text=[dict(text="foo", language=1)])
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 16:34:32 +00:00
|
|
|
## dir not ltr or rtl
|
|
|
|
infoObject = self.makeInfoObject()
|
2011-09-16 17:53:52 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2011-09-16 16:34:32 +00:00
|
|
|
infoObject.woffMetadataLicense = dict(text=[dict(text="foo", dir="utd")])
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 16:34:32 +00:00
|
|
|
## class not a string
|
|
|
|
infoObject = self.makeInfoObject()
|
2011-09-16 17:53:52 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2011-09-16 16:34:32 +00:00
|
|
|
infoObject.woffMetadataLicense = dict(text=[{"text": "foo", "class": 1}])
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 16:34:32 +00:00
|
|
|
# woffMetadataCopyright
|
|
|
|
## unknown attribute
|
|
|
|
infoObject = self.makeInfoObject()
|
2011-09-16 17:53:52 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2011-09-16 16:34:32 +00:00
|
|
|
infoObject.woffMetadataCopyright = dict(
|
|
|
|
text=[dict(text="foo")], notTheRightKey=1
|
|
|
|
)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 16:34:32 +00:00
|
|
|
## no text
|
|
|
|
infoObject = self.makeInfoObject()
|
2011-09-16 17:53:52 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2011-09-16 16:34:32 +00:00
|
|
|
infoObject.woffMetadataCopyright = dict()
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 16:34:32 +00:00
|
|
|
## text not a list
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
infoObject.woffMetadataCopyright = dict(text="abc")
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 16:34:32 +00:00
|
|
|
## text item not a dict
|
|
|
|
infoObject = self.makeInfoObject()
|
2011-09-16 17:53:52 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2011-09-16 16:34:32 +00:00
|
|
|
infoObject.woffMetadataCopyright = dict(text=["abc"])
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 16:34:32 +00:00
|
|
|
## text item unknown key
|
|
|
|
infoObject = self.makeInfoObject()
|
2011-09-16 17:53:52 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2011-09-16 16:34:32 +00:00
|
|
|
infoObject.woffMetadataCopyright = dict(
|
|
|
|
text=[dict(text="foo", notTheRightKey=1)]
|
|
|
|
)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 16:34:32 +00:00
|
|
|
## text item missing text
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.woffMetadataCopyright = dict(text=[dict(language="foo")])
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 16:34:32 +00:00
|
|
|
## text not a string
|
|
|
|
infoObject = self.makeInfoObject()
|
2011-09-16 17:53:52 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2011-09-16 16:34:32 +00:00
|
|
|
infoObject.woffMetadataCopyright = dict(text=[dict(text=1)])
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 16:34:32 +00:00
|
|
|
## url not a string
|
|
|
|
infoObject = self.makeInfoObject()
|
2011-09-16 17:53:52 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2011-09-16 16:34:32 +00:00
|
|
|
infoObject.woffMetadataCopyright = dict(text=[dict(text="foo", url=1)])
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 16:37:09 +00:00
|
|
|
## language not a string
|
|
|
|
infoObject = self.makeInfoObject()
|
2011-09-16 17:53:52 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2011-09-16 16:37:09 +00:00
|
|
|
infoObject.woffMetadataCopyright = dict(text=[dict(text="foo", language=1)])
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 16:37:09 +00:00
|
|
|
## dir not ltr or rtl
|
|
|
|
infoObject = self.makeInfoObject()
|
2011-09-16 17:53:52 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2011-09-16 16:37:09 +00:00
|
|
|
infoObject.woffMetadataCopyright = dict(text=[dict(text="foo", dir="utd")])
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 16:37:09 +00:00
|
|
|
## class not a string
|
|
|
|
infoObject = self.makeInfoObject()
|
2011-09-16 17:53:52 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2011-09-16 16:37:09 +00:00
|
|
|
infoObject.woffMetadataCopyright = dict(text=[{"text": "foo", "class": 1}])
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 16:37:09 +00:00
|
|
|
# woffMetadataTrademark
|
|
|
|
## unknown attribute
|
|
|
|
infoObject = self.makeInfoObject()
|
2011-09-16 17:53:52 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2011-09-16 16:37:09 +00:00
|
|
|
infoObject.woffMetadataTrademark = dict(
|
|
|
|
text=[dict(text="foo")], notTheRightKey=1
|
|
|
|
)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 16:37:09 +00:00
|
|
|
## no text
|
|
|
|
infoObject = self.makeInfoObject()
|
2011-09-16 17:53:52 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2011-09-16 16:37:09 +00:00
|
|
|
infoObject.woffMetadataTrademark = dict()
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 16:37:09 +00:00
|
|
|
## text not a list
|
|
|
|
infoObject = self.makeInfoObject()
|
2011-09-16 17:53:52 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2011-09-16 16:37:09 +00:00
|
|
|
infoObject.woffMetadataTrademark = dict(text="abc")
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 16:37:09 +00:00
|
|
|
## text item not a dict
|
|
|
|
infoObject = self.makeInfoObject()
|
2011-09-16 17:53:52 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2011-09-16 16:37:09 +00:00
|
|
|
infoObject.woffMetadataTrademark = dict(text=["abc"])
|
2011-09-16 17:53:52 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 16:37:09 +00:00
|
|
|
## text item unknown key
|
2011-09-18 11:18:31 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
2011-09-16 17:53:52 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2011-09-16 16:37:09 +00:00
|
|
|
infoObject.woffMetadataTrademark = dict(
|
|
|
|
text=[dict(text="foo", notTheRightKey=1)]
|
2022-12-13 11:26:36 +00:00
|
|
|
)
|
2011-09-16 16:37:09 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 15:40:21 +00:00
|
|
|
## text item missing text
|
2011-09-18 11:18:31 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
2011-09-16 17:53:52 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2011-09-16 16:37:09 +00:00
|
|
|
infoObject.woffMetadataTrademark = dict(text=[dict(language="foo")])
|
2011-09-16 17:53:52 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 16:37:09 +00:00
|
|
|
## text not a string
|
|
|
|
infoObject = self.makeInfoObject()
|
2011-09-16 17:53:52 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2011-09-16 16:37:09 +00:00
|
|
|
infoObject.woffMetadataTrademark = dict(text=[dict(text=1)])
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 16:37:09 +00:00
|
|
|
## url not a string
|
|
|
|
infoObject = self.makeInfoObject()
|
2011-09-16 17:53:52 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2011-09-16 16:37:09 +00:00
|
|
|
infoObject.woffMetadataTrademark = dict(text=[dict(text="foo", url=1)])
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 16:37:09 +00:00
|
|
|
## language not a string
|
|
|
|
infoObject = self.makeInfoObject()
|
2011-09-16 17:53:52 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2011-09-16 16:37:09 +00:00
|
|
|
infoObject.woffMetadataTrademark = dict(text=[dict(text="foo", language=1)])
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 17:53:52 +00:00
|
|
|
## dir not ltr or rtl
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
infoObject.woffMetadataTrademark = dict(text=[dict(text="foo", dir="utd")])
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 17:53:52 +00:00
|
|
|
## class not a string
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
infoObject.woffMetadataTrademark = dict(text=[{"text": "foo", "class": 1}])
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 17:53:52 +00:00
|
|
|
# woffMetadataLicensee
|
|
|
|
## no name
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
infoObject.woffMetadataLicensee = dict()
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 17:53:52 +00:00
|
|
|
## unknown attribute
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
infoObject.woffMetadataLicensee = dict(name="foo", notTheRightKey=1)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 11:23:44 +00:00
|
|
|
## name not a string
|
2011-09-18 11:18:31 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
2011-09-16 17:53:52 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
infoObject.woffMetadataLicensee = dict(name=1)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 17:53:52 +00:00
|
|
|
## dir options
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.woffMetadataLicensee = dict(name="foo", dir="ltr")
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
writer.writeInfo(infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 17:53:52 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.woffMetadataLicensee = dict(name="foo", dir="rtl")
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
writer.writeInfo(infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 17:53:52 +00:00
|
|
|
## dir not ltr or rtl
|
2011-09-18 11:18:31 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
2011-09-16 17:53:52 +00:00
|
|
|
infoObject.woffMetadataLicensee = dict(name="foo", dir="utd")
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-16 17:53:52 +00:00
|
|
|
## have class
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.woffMetadataLicensee = {"name": "foo", "class": "hello"}
|
2011-09-18 11:18:31 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
writer.writeInfo(infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-18 11:18:31 +00:00
|
|
|
## class not a string
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.woffMetadataLicensee = {"name": "foo", "class": 1}
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-18 11:18:31 +00:00
|
|
|
def testGuidelinesWrite(self):
|
2022-12-13 11:26:36 +00:00
|
|
|
# x
|
2011-09-18 11:18:31 +00:00
|
|
|
## not an int or float
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.guidelines = [dict(x="1")]
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2022-12-13 11:26:36 +00:00
|
|
|
# y
|
2011-09-18 11:18:31 +00:00
|
|
|
## not an int or float
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.guidelines = [dict(y="1")]
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-18 11:18:31 +00:00
|
|
|
# angle
|
|
|
|
## < 0
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.guidelines = [dict(x=0, y=0, angle=-1)]
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-18 11:18:31 +00:00
|
|
|
## > 360
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.guidelines = [dict(x=0, y=0, angle=361)]
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2022-12-13 11:26:36 +00:00
|
|
|
# name
|
2011-09-18 11:18:31 +00:00
|
|
|
## not a string
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.guidelines = [dict(x=0, name=1)]
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2022-12-13 11:26:36 +00:00
|
|
|
# color
|
2011-09-16 15:40:21 +00:00
|
|
|
## not a string
|
2011-09-18 11:18:31 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.guidelines = [dict(x=0, color=1)]
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-28 15:29:10 +00:00
|
|
|
## not enough commas
|
2011-09-18 11:18:31 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.guidelines = [dict(x=0, color="1 0, 0, 0")]
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-18 11:18:31 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.guidelines = [dict(x=0, color="1 0 0, 0")]
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-18 11:18:31 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.guidelines = [dict(x=0, color="1 0 0 0")]
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-18 11:18:31 +00:00
|
|
|
## not enough parts
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.guidelines = [dict(x=0, color=", 0, 0, 0")]
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-18 11:18:31 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.guidelines = [dict(x=0, color="1, , 0, 0")]
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-18 11:18:31 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.guidelines = [dict(x=0, color="1, 0, , 0")]
|
2011-09-16 17:53:52 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-18 11:18:31 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.guidelines = [dict(x=0, color="1, 0, 0, ")]
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-18 11:18:31 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.guidelines = [dict(x=0, color=", , , ")]
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-18 11:18:31 +00:00
|
|
|
## not a number in all positions
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.guidelines = [dict(x=0, color="r, 1, 1, 1")]
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-18 11:18:31 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.guidelines = [dict(x=0, color="1, g, 1, 1")]
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-18 11:18:31 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.guidelines = [dict(x=0, color="1, 1, b, 1")]
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-18 11:18:31 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.guidelines = [dict(x=0, color="1, 1, 1, a")]
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-18 11:18:31 +00:00
|
|
|
## too many parts
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.guidelines = [dict(x=0, color="1, 0, 0, 0, 0")]
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-28 15:29:10 +00:00
|
|
|
## < 0 in each position
|
2011-09-18 11:18:31 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.guidelines = [dict(x=0, color="-1, 0, 0, 0")]
|
2011-09-16 17:53:52 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-18 11:18:31 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.guidelines = [dict(x=0, color="0, -1, 0, 0")]
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-18 11:18:31 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.guidelines = [dict(x=0, color="0, 0, -1, 0")]
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-18 11:18:31 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.guidelines = [dict(x=0, color="0, 0, 0, -1")]
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-18 11:18:31 +00:00
|
|
|
## > 1 in each position
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.guidelines = [dict(x=0, color="2, 0, 0, 0")]
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-18 11:18:31 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.guidelines = [dict(x=0, color="0, 2, 0, 0")]
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-18 11:18:31 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.guidelines = [dict(x=0, color="0, 0, 2, 0")]
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-18 11:18:31 +00:00
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.guidelines = [dict(x=0, color="0, 0, 0, 2")]
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-18 11:18:31 +00:00
|
|
|
# identifier
|
|
|
|
## duplicate
|
|
|
|
infoObject = self.makeInfoObject()
|
|
|
|
infoObject.guidelines = [
|
|
|
|
dict(x=0, identifier="guide1"),
|
|
|
|
dict(y=0, identifier="guide1"),
|
|
|
|
]
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-18 11:18:31 +00:00
|
|
|
## below min
|
|
|
|
infoObject = self.makeInfoObject()
|
2015-11-05 09:03:19 +00:00
|
|
|
infoObject.guidelines = [dict(x=0, identifier="\0x1F")]
|
2011-09-18 11:18:31 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-18 11:18:31 +00:00
|
|
|
## above max
|
|
|
|
infoObject = self.makeInfoObject()
|
2015-11-05 09:03:19 +00:00
|
|
|
infoObject.guidelines = [dict(x=0, identifier="\0x7F")]
|
2011-09-18 11:18:31 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
self.assertRaises(UFOLibError, writer.writeInfo, info=infoObject)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tearDownUFO()
|
|
|
|
|
|
|
|
|
2011-09-26 22:16:08 +00:00
|
|
|
# ------
|
|
|
|
# layers
|
|
|
|
# ------
|
|
|
|
|
|
|
|
|
|
|
|
class UFO3ReadLayersTestCase(unittest.TestCase):
|
|
|
|
def setUp(self):
|
|
|
|
self.tempDir = tempfile.mktemp()
|
|
|
|
os.mkdir(self.tempDir)
|
|
|
|
self.ufoPath = os.path.join(self.tempDir, "test.ufo")
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-26 22:16:08 +00:00
|
|
|
def tearDown(self):
|
|
|
|
shutil.rmtree(self.tempDir)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-26 22:16:08 +00:00
|
|
|
def makeUFO(self, metaInfo=None, layerContents=None):
|
|
|
|
self.clearUFO()
|
|
|
|
if not os.path.exists(self.ufoPath):
|
|
|
|
os.mkdir(self.ufoPath)
|
|
|
|
# metainfo.plist
|
|
|
|
if metaInfo is None:
|
|
|
|
metaInfo = dict(creator="test", formatVersion=3)
|
|
|
|
path = os.path.join(self.ufoPath, "metainfo.plist")
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "wb") as f:
|
2018-07-11 12:30:11 +01:00
|
|
|
plistlib.dump(metaInfo, f)
|
2011-09-26 22:16:08 +00:00
|
|
|
# layers
|
|
|
|
if layerContents is None:
|
|
|
|
layerContents = [
|
2011-09-27 16:18:42 +00:00
|
|
|
("public.default", "glyphs"),
|
2011-09-27 15:28:42 +00:00
|
|
|
("layer 1", "glyphs.layer 1"),
|
|
|
|
("layer 2", "glyphs.layer 2"),
|
2011-09-26 22:16:08 +00:00
|
|
|
]
|
|
|
|
if layerContents:
|
|
|
|
path = os.path.join(self.ufoPath, "layercontents.plist")
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "wb") as f:
|
2018-07-11 12:30:11 +01:00
|
|
|
plistlib.dump(layerContents, f)
|
2011-09-26 22:16:08 +00:00
|
|
|
else:
|
|
|
|
layerContents = [("", "glyphs")]
|
|
|
|
for name, directory in layerContents:
|
|
|
|
glyphsPath = os.path.join(self.ufoPath, directory)
|
|
|
|
os.mkdir(glyphsPath)
|
|
|
|
contents = dict(a="a.glif")
|
|
|
|
path = os.path.join(glyphsPath, "contents.plist")
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "wb") as f:
|
2018-07-11 12:30:11 +01:00
|
|
|
plistlib.dump(contents, f)
|
2011-09-26 22:16:08 +00:00
|
|
|
path = os.path.join(glyphsPath, "a.glif")
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "w") as f:
|
2015-11-02 14:10:06 +00:00
|
|
|
f.write(" ")
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-26 22:16:08 +00:00
|
|
|
def clearUFO(self):
|
|
|
|
if os.path.exists(self.ufoPath):
|
|
|
|
shutil.rmtree(self.ufoPath)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-26 22:16:08 +00:00
|
|
|
# valid
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-26 22:16:08 +00:00
|
|
|
def testValidRead(self):
|
|
|
|
# UFO 1
|
|
|
|
self.makeUFO(
|
|
|
|
metaInfo=dict(creator="test", formatVersion=1), layerContents=dict()
|
|
|
|
)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.ufoPath, validate=True)
|
2011-09-26 22:16:08 +00:00
|
|
|
reader.getGlyphSet()
|
|
|
|
# UFO 2
|
|
|
|
self.makeUFO(
|
|
|
|
metaInfo=dict(creator="test", formatVersion=2), layerContents=dict()
|
|
|
|
)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.ufoPath, validate=True)
|
2011-09-26 22:16:08 +00:00
|
|
|
reader.getGlyphSet()
|
|
|
|
# UFO 3
|
|
|
|
self.makeUFO()
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.ufoPath, validate=True)
|
2011-09-26 22:16:08 +00:00
|
|
|
reader.getGlyphSet()
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-26 22:16:08 +00:00
|
|
|
# missing layer contents
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-26 22:16:08 +00:00
|
|
|
def testMissingLayerContents(self):
|
|
|
|
self.makeUFO()
|
|
|
|
path = os.path.join(self.ufoPath, "layercontents.plist")
|
|
|
|
os.remove(path)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.ufoPath, validate=True)
|
2011-09-26 22:16:08 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.getGlyphSet)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-26 22:16:08 +00:00
|
|
|
# layer contents invalid format
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-26 22:16:08 +00:00
|
|
|
def testInvalidLayerContentsFormat(self):
|
|
|
|
# bogus
|
|
|
|
self.makeUFO()
|
|
|
|
path = os.path.join(self.ufoPath, "layercontents.plist")
|
|
|
|
os.remove(path)
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "w") as f:
|
2015-11-02 14:10:06 +00:00
|
|
|
f.write("test")
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.ufoPath, validate=True)
|
2011-09-26 22:16:08 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.getGlyphSet)
|
|
|
|
# dict
|
|
|
|
self.makeUFO()
|
|
|
|
path = os.path.join(self.ufoPath, "layercontents.plist")
|
|
|
|
os.remove(path)
|
|
|
|
layerContents = {
|
2011-09-27 16:18:42 +00:00
|
|
|
"public.default": "glyphs",
|
2011-09-27 15:28:42 +00:00
|
|
|
"layer 1": "glyphs.layer 1",
|
|
|
|
"layer 2": "glyphs.layer 2",
|
2011-09-26 22:16:08 +00:00
|
|
|
}
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "wb") as f:
|
2018-07-11 12:30:11 +01:00
|
|
|
plistlib.dump(layerContents, f)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.ufoPath, validate=True)
|
2011-09-26 22:16:08 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.getGlyphSet)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-26 22:16:08 +00:00
|
|
|
# layer contents invalid name format
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-26 22:16:08 +00:00
|
|
|
def testInvalidLayerContentsNameFormat(self):
|
|
|
|
self.makeUFO()
|
|
|
|
path = os.path.join(self.ufoPath, "layercontents.plist")
|
|
|
|
os.remove(path)
|
|
|
|
layerContents = [
|
|
|
|
(1, "glyphs"),
|
2011-09-27 15:28:42 +00:00
|
|
|
("layer 1", "glyphs.layer 1"),
|
|
|
|
("layer 2", "glyphs.layer 2"),
|
2011-09-26 22:16:08 +00:00
|
|
|
]
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "wb") as f:
|
2018-07-11 12:30:11 +01:00
|
|
|
plistlib.dump(layerContents, f)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.ufoPath, validate=True)
|
2011-09-26 22:16:08 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.getGlyphSet)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-26 22:16:08 +00:00
|
|
|
# layer contents invalid directory format
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-26 22:16:08 +00:00
|
|
|
def testInvalidLayerContentsDirectoryFormat(self):
|
|
|
|
self.makeUFO()
|
|
|
|
path = os.path.join(self.ufoPath, "layercontents.plist")
|
|
|
|
os.remove(path)
|
|
|
|
layerContents = [
|
|
|
|
("public.foregound", "glyphs"),
|
|
|
|
("layer 1", 1),
|
2011-09-27 15:28:42 +00:00
|
|
|
("layer 2", "glyphs.layer 2"),
|
2011-09-26 22:16:08 +00:00
|
|
|
]
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "wb") as f:
|
2018-07-11 12:30:11 +01:00
|
|
|
plistlib.dump(layerContents, f)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.ufoPath, validate=True)
|
2011-09-26 22:16:08 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.getGlyphSet)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-26 22:16:08 +00:00
|
|
|
# directory listed in contents not on disk
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-26 22:16:08 +00:00
|
|
|
def testLayerContentsHasMissingDirectory(self):
|
|
|
|
self.makeUFO()
|
|
|
|
path = os.path.join(self.ufoPath, "layercontents.plist")
|
|
|
|
os.remove(path)
|
|
|
|
layerContents = [
|
|
|
|
("public.foregound", "glyphs"),
|
|
|
|
("layer 1", "glyphs.doesnotexist"),
|
2011-09-27 15:28:42 +00:00
|
|
|
("layer 2", "glyphs.layer 2"),
|
2011-09-26 22:16:08 +00:00
|
|
|
]
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "wb") as f:
|
2018-07-11 12:30:11 +01:00
|
|
|
plistlib.dump(layerContents, f)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.ufoPath, validate=True)
|
2011-09-26 22:16:08 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.getGlyphSet)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-26 22:16:08 +00:00
|
|
|
# # directory on disk not listed in contents
|
|
|
|
# XXX should this raise an error?
|
|
|
|
#
|
|
|
|
# def testLayerContentsHasMissingDirectory(self):
|
|
|
|
# self.makeUFO()
|
|
|
|
# path = os.path.join(self.ufoPath, "layercontents.plist")
|
|
|
|
# os.remove(path)
|
|
|
|
# layerContents = [
|
|
|
|
# ("public.foregound", "glyphs"),
|
2011-09-27 15:28:42 +00:00
|
|
|
# ("layer 1", "glyphs.layer 2")
|
2011-09-26 22:16:08 +00:00
|
|
|
# ]
|
2015-11-04 07:36:50 +00:00
|
|
|
# with open(path, "wb") as f:
|
2018-07-11 12:30:11 +01:00
|
|
|
# plistlib.dump(layerContents, f)
|
2018-06-11 15:03:54 -05:00
|
|
|
# reader = UFOReader(self.ufoPath, validate=True)
|
2015-11-04 07:36:50 +00:00
|
|
|
# with self.assertRaises(UFOLibError):
|
|
|
|
# reader.getGlyphSet()
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-26 22:16:08 +00:00
|
|
|
# no default layer on disk
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-26 22:16:08 +00:00
|
|
|
def testMissingDefaultLayer(self):
|
|
|
|
self.makeUFO()
|
|
|
|
path = os.path.join(self.ufoPath, "layercontents.plist")
|
|
|
|
os.remove(path)
|
2011-09-27 15:28:42 +00:00
|
|
|
layerContents = [("layer 1", "glyphs.layer 1"), ("layer 2", "glyphs.layer 2")]
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "wb") as f:
|
2018-07-11 12:30:11 +01:00
|
|
|
plistlib.dump(layerContents, f)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.ufoPath, validate=True)
|
2011-09-26 22:16:08 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.getGlyphSet)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-26 22:16:08 +00:00
|
|
|
# duplicate layer name
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-26 22:16:08 +00:00
|
|
|
def testDuplicateLayerName(self):
|
|
|
|
self.makeUFO()
|
|
|
|
path = os.path.join(self.ufoPath, "layercontents.plist")
|
|
|
|
os.remove(path)
|
|
|
|
layerContents = [
|
|
|
|
("public.foregound", "glyphs"),
|
2011-09-27 15:28:42 +00:00
|
|
|
("layer 1", "glyphs.layer 1"),
|
|
|
|
("layer 1", "glyphs.layer 2"),
|
2011-09-26 22:16:08 +00:00
|
|
|
]
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "wb") as f:
|
2018-07-11 12:30:11 +01:00
|
|
|
plistlib.dump(layerContents, f)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.ufoPath, validate=True)
|
2011-09-26 22:16:08 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.getGlyphSet)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-26 22:16:08 +00:00
|
|
|
# directory referenced by two layer names
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-26 22:16:08 +00:00
|
|
|
def testDuplicateLayerDirectory(self):
|
|
|
|
self.makeUFO()
|
|
|
|
path = os.path.join(self.ufoPath, "layercontents.plist")
|
|
|
|
os.remove(path)
|
|
|
|
layerContents = [
|
|
|
|
("public.foregound", "glyphs"),
|
2011-09-27 15:28:42 +00:00
|
|
|
("layer 1", "glyphs.layer 1"),
|
|
|
|
("layer 2", "glyphs.layer 1"),
|
2011-09-26 22:16:08 +00:00
|
|
|
]
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "wb") as f:
|
2018-07-11 12:30:11 +01:00
|
|
|
plistlib.dump(layerContents, f)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.ufoPath, validate=True)
|
2011-09-26 22:16:08 +00:00
|
|
|
self.assertRaises(UFOLibError, reader.getGlyphSet)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-27 11:42:18 +00:00
|
|
|
# default without a name
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-27 11:42:18 +00:00
|
|
|
def testDefaultLayerNoName(self):
|
|
|
|
# get the glyph set
|
|
|
|
self.makeUFO()
|
|
|
|
path = os.path.join(self.ufoPath, "layercontents.plist")
|
|
|
|
os.remove(path)
|
|
|
|
layerContents = [
|
|
|
|
("public.foregound", "glyphs"),
|
2011-09-27 15:28:42 +00:00
|
|
|
("layer 1", "glyphs.layer 1"),
|
|
|
|
("layer 2", "glyphs.layer 2"),
|
2011-09-27 11:42:18 +00:00
|
|
|
]
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "wb") as f:
|
2018-07-11 12:30:11 +01:00
|
|
|
plistlib.dump(layerContents, f)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.ufoPath, validate=True)
|
2011-09-27 11:42:18 +00:00
|
|
|
reader.getGlyphSet()
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-26 22:16:08 +00:00
|
|
|
# default with a name
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-27 11:42:18 +00:00
|
|
|
def testDefaultLayerName(self):
|
|
|
|
# get the name
|
2011-09-26 22:16:08 +00:00
|
|
|
self.makeUFO()
|
|
|
|
path = os.path.join(self.ufoPath, "layercontents.plist")
|
|
|
|
os.remove(path)
|
|
|
|
layerContents = [
|
|
|
|
("custom name", "glyphs"),
|
2011-09-27 15:28:42 +00:00
|
|
|
("layer 1", "glyphs.layer 1"),
|
|
|
|
("layer 2", "glyphs.layer 2"),
|
2011-09-26 22:16:08 +00:00
|
|
|
]
|
2011-09-27 11:42:18 +00:00
|
|
|
expected = layerContents[0][0]
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "wb") as f:
|
2018-07-11 12:30:11 +01:00
|
|
|
plistlib.dump(layerContents, f)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.ufoPath, validate=True)
|
2011-09-27 11:42:18 +00:00
|
|
|
result = reader.getDefaultLayerName()
|
|
|
|
self.assertEqual(expected, result)
|
|
|
|
# get the glyph set
|
|
|
|
self.makeUFO()
|
|
|
|
path = os.path.join(self.ufoPath, "layercontents.plist")
|
|
|
|
os.remove(path)
|
|
|
|
layerContents = [
|
|
|
|
("custom name", "glyphs"),
|
2011-09-27 15:28:42 +00:00
|
|
|
("layer 1", "glyphs.layer 1"),
|
|
|
|
("layer 2", "glyphs.layer 2"),
|
2011-09-27 11:42:18 +00:00
|
|
|
]
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "wb") as f:
|
2018-07-11 12:30:11 +01:00
|
|
|
plistlib.dump(layerContents, f)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.ufoPath, validate=True)
|
2011-09-27 11:42:18 +00:00
|
|
|
reader.getGlyphSet(expected)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-27 11:42:18 +00:00
|
|
|
# layer order
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-27 11:42:18 +00:00
|
|
|
def testLayerOrder(self):
|
|
|
|
self.makeUFO()
|
|
|
|
path = os.path.join(self.ufoPath, "layercontents.plist")
|
|
|
|
os.remove(path)
|
|
|
|
layerContents = [
|
|
|
|
("public.foregound", "glyphs"),
|
2011-09-27 15:28:42 +00:00
|
|
|
("layer 1", "glyphs.layer 1"),
|
|
|
|
("layer 2", "glyphs.layer 2"),
|
2011-09-27 11:42:18 +00:00
|
|
|
]
|
|
|
|
expected = [name for (name, directory) in layerContents]
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "wb") as f:
|
2018-07-11 12:30:11 +01:00
|
|
|
plistlib.dump(layerContents, f)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.ufoPath, validate=True)
|
2011-09-27 11:42:18 +00:00
|
|
|
result = reader.getLayerNames()
|
|
|
|
self.assertEqual(expected, result)
|
|
|
|
self.makeUFO()
|
|
|
|
path = os.path.join(self.ufoPath, "layercontents.plist")
|
|
|
|
os.remove(path)
|
|
|
|
layerContents = [
|
2011-09-27 15:28:42 +00:00
|
|
|
("layer 1", "glyphs.layer 1"),
|
2011-09-27 11:42:18 +00:00
|
|
|
("public.foregound", "glyphs"),
|
2011-09-27 15:28:42 +00:00
|
|
|
("layer 2", "glyphs.layer 2"),
|
2011-09-27 11:42:18 +00:00
|
|
|
]
|
|
|
|
expected = [name for (name, directory) in layerContents]
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "wb") as f:
|
2018-07-11 12:30:11 +01:00
|
|
|
plistlib.dump(layerContents, f)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.ufoPath, validate=True)
|
2011-09-27 11:42:18 +00:00
|
|
|
result = reader.getLayerNames()
|
|
|
|
self.assertEqual(expected, result)
|
|
|
|
self.makeUFO()
|
|
|
|
path = os.path.join(self.ufoPath, "layercontents.plist")
|
|
|
|
os.remove(path)
|
|
|
|
layerContents = [
|
2011-09-27 15:28:42 +00:00
|
|
|
("layer 2", "glyphs.layer 2"),
|
|
|
|
("layer 1", "glyphs.layer 1"),
|
2011-09-27 11:42:18 +00:00
|
|
|
("public.foregound", "glyphs"),
|
|
|
|
]
|
|
|
|
expected = [name for (name, directory) in layerContents]
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "wb") as f:
|
2018-07-11 12:30:11 +01:00
|
|
|
plistlib.dump(layerContents, f)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.ufoPath, validate=True)
|
2011-09-27 11:42:18 +00:00
|
|
|
result = reader.getLayerNames()
|
|
|
|
self.assertEqual(expected, result)
|
|
|
|
|
2011-09-19 01:40:21 +00:00
|
|
|
|
2011-09-27 15:28:42 +00:00
|
|
|
class UFO3WriteLayersTestCase(unittest.TestCase):
|
2011-09-12 17:49:34 +00:00
|
|
|
def setUp(self):
|
2011-09-19 01:40:21 +00:00
|
|
|
self.tempDir = tempfile.mktemp()
|
|
|
|
os.mkdir(self.tempDir)
|
2011-09-28 15:29:10 +00:00
|
|
|
self.ufoPath = os.path.join(self.tempDir, "test.ufo")
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-12 17:49:34 +00:00
|
|
|
def tearDown(self):
|
2011-09-19 01:40:21 +00:00
|
|
|
shutil.rmtree(self.tempDir)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-27 15:28:42 +00:00
|
|
|
def makeUFO(self, metaInfo=None, layerContents=None):
|
|
|
|
self.clearUFO()
|
2011-09-28 15:29:10 +00:00
|
|
|
if not os.path.exists(self.ufoPath):
|
|
|
|
os.mkdir(self.ufoPath)
|
|
|
|
# metainfo.plist
|
2011-09-27 15:28:42 +00:00
|
|
|
if metaInfo is None:
|
|
|
|
metaInfo = dict(creator="test", formatVersion=3)
|
2011-09-28 15:29:10 +00:00
|
|
|
path = os.path.join(self.ufoPath, "metainfo.plist")
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "wb") as f:
|
2018-07-11 12:30:11 +01:00
|
|
|
plistlib.dump(metaInfo, f)
|
2022-12-13 11:26:36 +00:00
|
|
|
# layers
|
2011-09-27 15:28:42 +00:00
|
|
|
if layerContents is None:
|
|
|
|
layerContents = [
|
2011-09-27 16:18:42 +00:00
|
|
|
("public.default", "glyphs"),
|
2011-09-27 15:28:42 +00:00
|
|
|
("layer 1", "glyphs.layer 1"),
|
|
|
|
("layer 2", "glyphs.layer 2"),
|
2022-12-13 11:26:36 +00:00
|
|
|
]
|
2011-09-27 15:28:42 +00:00
|
|
|
if layerContents:
|
|
|
|
path = os.path.join(self.ufoPath, "layercontents.plist")
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "wb") as f:
|
2018-07-11 12:30:11 +01:00
|
|
|
plistlib.dump(layerContents, f)
|
2022-12-13 11:26:36 +00:00
|
|
|
else:
|
2011-09-27 15:28:42 +00:00
|
|
|
layerContents = [("", "glyphs")]
|
|
|
|
for name, directory in layerContents:
|
|
|
|
glyphsPath = os.path.join(self.ufoPath, directory)
|
2011-09-28 15:29:10 +00:00
|
|
|
os.mkdir(glyphsPath)
|
|
|
|
contents = dict(a="a.glif")
|
|
|
|
path = os.path.join(glyphsPath, "contents.plist")
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "wb") as f:
|
2018-07-11 12:30:11 +01:00
|
|
|
plistlib.dump(contents, f)
|
2011-09-28 15:29:10 +00:00
|
|
|
path = os.path.join(glyphsPath, "a.glif")
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "w") as f:
|
2015-11-02 14:10:06 +00:00
|
|
|
f.write(" ")
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-28 15:29:10 +00:00
|
|
|
def clearUFO(self):
|
|
|
|
if os.path.exists(self.ufoPath):
|
|
|
|
shutil.rmtree(self.ufoPath)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-27 15:28:42 +00:00
|
|
|
# __init__: missing layer contents
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-27 15:28:42 +00:00
|
|
|
def testMissingLayerContents(self):
|
2011-10-06 17:50:53 +00:00
|
|
|
self.makeUFO()
|
|
|
|
path = os.path.join(self.ufoPath, "layercontents.plist")
|
2011-09-27 15:28:42 +00:00
|
|
|
os.remove(path)
|
|
|
|
self.assertRaises(UFOLibError, UFOWriter, self.ufoPath)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-27 15:28:42 +00:00
|
|
|
# __init__: layer contents invalid format
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-27 15:28:42 +00:00
|
|
|
def testInvalidLayerContentsFormat(self):
|
2022-12-13 11:26:36 +00:00
|
|
|
# bogus
|
2011-09-27 15:28:42 +00:00
|
|
|
self.makeUFO()
|
2011-10-06 17:50:53 +00:00
|
|
|
path = os.path.join(self.ufoPath, "layercontents.plist")
|
2011-09-27 15:28:42 +00:00
|
|
|
os.remove(path)
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "w") as f:
|
2015-11-02 14:10:06 +00:00
|
|
|
f.write("test")
|
2011-09-27 15:28:42 +00:00
|
|
|
self.assertRaises(UFOLibError, UFOWriter, self.ufoPath)
|
2022-12-13 11:26:36 +00:00
|
|
|
# dict
|
2011-09-27 15:28:42 +00:00
|
|
|
self.makeUFO()
|
2011-10-06 17:50:53 +00:00
|
|
|
path = os.path.join(self.ufoPath, "layercontents.plist")
|
2011-09-27 15:28:42 +00:00
|
|
|
os.remove(path)
|
|
|
|
layerContents = {
|
2011-09-27 16:18:42 +00:00
|
|
|
"public.default": "glyphs",
|
2011-09-27 15:28:42 +00:00
|
|
|
"layer 1": "glyphs.layer 1",
|
|
|
|
"layer 2": "glyphs.layer 2",
|
2022-12-13 11:26:36 +00:00
|
|
|
}
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "wb") as f:
|
2018-07-11 12:30:11 +01:00
|
|
|
plistlib.dump(layerContents, f)
|
2011-09-27 15:28:42 +00:00
|
|
|
self.assertRaises(UFOLibError, UFOWriter, self.ufoPath)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-27 15:28:42 +00:00
|
|
|
# __init__: layer contents invalid name format
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-27 15:28:42 +00:00
|
|
|
def testInvalidLayerContentsNameFormat(self):
|
|
|
|
self.makeUFO()
|
|
|
|
path = os.path.join(self.ufoPath, "layercontents.plist")
|
|
|
|
os.remove(path)
|
|
|
|
layerContents = [
|
|
|
|
(1, "glyphs"),
|
|
|
|
("layer 1", "glyphs.layer 1"),
|
|
|
|
("layer 2", "glyphs.layer 2"),
|
2022-12-13 11:26:36 +00:00
|
|
|
]
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "wb") as f:
|
2018-07-11 12:30:11 +01:00
|
|
|
plistlib.dump(layerContents, f)
|
2011-09-27 15:28:42 +00:00
|
|
|
self.assertRaises(UFOLibError, UFOWriter, self.ufoPath)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-27 15:28:42 +00:00
|
|
|
# __init__: layer contents invalid directory format
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-27 15:28:42 +00:00
|
|
|
def testInvalidLayerContentsDirectoryFormat(self):
|
|
|
|
self.makeUFO()
|
|
|
|
path = os.path.join(self.ufoPath, "layercontents.plist")
|
|
|
|
os.remove(path)
|
|
|
|
layerContents = [
|
|
|
|
("public.foregound", "glyphs"),
|
|
|
|
("layer 1", 1),
|
|
|
|
("layer 2", "glyphs.layer 2"),
|
2022-12-13 11:26:36 +00:00
|
|
|
]
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "wb") as f:
|
2018-07-11 12:30:11 +01:00
|
|
|
plistlib.dump(layerContents, f)
|
2011-09-27 15:28:42 +00:00
|
|
|
self.assertRaises(UFOLibError, UFOWriter, self.ufoPath)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-27 15:28:42 +00:00
|
|
|
# __init__: directory listed in contents not on disk
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-27 15:28:42 +00:00
|
|
|
def testLayerContentsHasMissingDirectory(self):
|
|
|
|
self.makeUFO()
|
|
|
|
path = os.path.join(self.ufoPath, "layercontents.plist")
|
|
|
|
os.remove(path)
|
|
|
|
layerContents = [
|
|
|
|
("public.foregound", "glyphs"),
|
|
|
|
("layer 1", "glyphs.doesnotexist"),
|
|
|
|
("layer 2", "glyphs.layer 2"),
|
2022-12-13 11:26:36 +00:00
|
|
|
]
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "wb") as f:
|
2018-07-11 12:30:11 +01:00
|
|
|
plistlib.dump(layerContents, f)
|
2011-09-27 15:28:42 +00:00
|
|
|
self.assertRaises(UFOLibError, UFOWriter, self.ufoPath)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-27 15:28:42 +00:00
|
|
|
# __init__: no default layer on disk
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-27 15:28:42 +00:00
|
|
|
def testMissingDefaultLayer(self):
|
|
|
|
self.makeUFO()
|
|
|
|
path = os.path.join(self.ufoPath, "layercontents.plist")
|
2011-09-28 15:29:10 +00:00
|
|
|
os.remove(path)
|
2011-09-27 15:28:42 +00:00
|
|
|
layerContents = [("layer 1", "glyphs.layer 1"), ("layer 2", "glyphs.layer 2")]
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "wb") as f:
|
2018-07-11 12:30:11 +01:00
|
|
|
plistlib.dump(layerContents, f)
|
2011-09-27 15:28:42 +00:00
|
|
|
self.assertRaises(UFOLibError, UFOWriter, self.ufoPath)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-27 15:28:42 +00:00
|
|
|
# __init__: duplicate layer name
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-27 15:28:42 +00:00
|
|
|
def testDuplicateLayerName(self):
|
|
|
|
self.makeUFO()
|
2018-07-15 21:32:13 +01:00
|
|
|
path = os.path.join(self.ufoPath, "layercontents.plist")
|
2011-09-28 15:29:10 +00:00
|
|
|
os.remove(path)
|
2011-09-27 15:28:42 +00:00
|
|
|
layerContents = [
|
|
|
|
("public.foregound", "glyphs"),
|
|
|
|
("layer 1", "glyphs.layer 1"),
|
|
|
|
("layer 1", "glyphs.layer 2"),
|
2022-12-13 11:26:36 +00:00
|
|
|
]
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "wb") as f:
|
2018-07-11 12:30:11 +01:00
|
|
|
plistlib.dump(layerContents, f)
|
2011-09-27 15:28:42 +00:00
|
|
|
self.assertRaises(UFOLibError, UFOWriter, self.ufoPath)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-27 15:28:42 +00:00
|
|
|
# __init__: directory referenced by two layer names
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-27 15:28:42 +00:00
|
|
|
def testDuplicateLayerDirectory(self):
|
|
|
|
self.makeUFO()
|
2018-07-15 21:32:13 +01:00
|
|
|
path = os.path.join(self.ufoPath, "layercontents.plist")
|
2011-09-28 15:29:10 +00:00
|
|
|
os.remove(path)
|
2011-09-27 15:28:42 +00:00
|
|
|
layerContents = [
|
|
|
|
("public.foregound", "glyphs"),
|
|
|
|
("layer 1", "glyphs.layer 1"),
|
|
|
|
("layer 2", "glyphs.layer 1"),
|
2022-12-13 11:26:36 +00:00
|
|
|
]
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "wb") as f:
|
2018-07-11 12:30:11 +01:00
|
|
|
plistlib.dump(layerContents, f)
|
2011-09-27 15:28:42 +00:00
|
|
|
self.assertRaises(UFOLibError, UFOWriter, self.ufoPath)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-27 15:28:42 +00:00
|
|
|
# __init__: default without a name
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-27 15:28:42 +00:00
|
|
|
def testDefaultLayerNoName(self):
|
|
|
|
# get the glyph set
|
|
|
|
self.makeUFO()
|
2018-07-15 21:32:13 +01:00
|
|
|
path = os.path.join(self.ufoPath, "layercontents.plist")
|
2011-09-28 15:29:10 +00:00
|
|
|
os.remove(path)
|
2011-09-27 15:28:42 +00:00
|
|
|
layerContents = [
|
|
|
|
("public.foregound", "glyphs"),
|
|
|
|
("layer 1", "glyphs.layer 1"),
|
|
|
|
("layer 2", "glyphs.layer 2"),
|
2022-12-13 11:26:36 +00:00
|
|
|
]
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "wb") as f:
|
2018-07-11 12:30:11 +01:00
|
|
|
plistlib.dump(layerContents, f)
|
2018-07-15 21:32:13 +01:00
|
|
|
writer = UFOWriter(self.ufoPath)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-27 15:28:42 +00:00
|
|
|
# __init__: default with a name
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-27 15:28:42 +00:00
|
|
|
def testDefaultLayerName(self):
|
|
|
|
self.makeUFO()
|
2018-07-15 21:32:13 +01:00
|
|
|
path = os.path.join(self.ufoPath, "layercontents.plist")
|
2011-09-28 15:29:10 +00:00
|
|
|
os.remove(path)
|
2011-09-27 15:28:42 +00:00
|
|
|
layerContents = [
|
|
|
|
("custom name", "glyphs"),
|
|
|
|
("layer 1", "glyphs.layer 1"),
|
|
|
|
("layer 2", "glyphs.layer 2"),
|
2022-12-13 11:26:36 +00:00
|
|
|
]
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "wb") as f:
|
2018-07-11 12:30:11 +01:00
|
|
|
plistlib.dump(layerContents, f)
|
2018-07-15 21:32:13 +01:00
|
|
|
writer = UFOWriter(self.ufoPath)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-27 15:28:42 +00:00
|
|
|
# __init__: up convert 1 > 3
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-27 15:28:42 +00:00
|
|
|
def testUpConvert1To3(self):
|
2018-07-15 21:32:13 +01:00
|
|
|
self.makeUFO(
|
2011-09-27 15:28:42 +00:00
|
|
|
metaInfo=dict(creator="test", formatVersion=1), layerContents=dict()
|
2022-12-13 11:26:36 +00:00
|
|
|
)
|
2018-07-15 21:32:13 +01:00
|
|
|
writer = UFOWriter(self.ufoPath)
|
2019-09-14 21:55:46 +01:00
|
|
|
writer.writeLayerContents(["public.default"])
|
2018-07-15 21:32:13 +01:00
|
|
|
path = os.path.join(self.ufoPath, "layercontents.plist")
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "rb") as f:
|
2018-07-15 21:32:13 +01:00
|
|
|
result = plistlib.load(f)
|
2011-09-27 16:18:42 +00:00
|
|
|
expected = [["public.default", "glyphs"]]
|
2018-07-15 21:32:13 +01:00
|
|
|
self.assertEqual(expected, result)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-27 15:28:42 +00:00
|
|
|
# __init__: up convert 2 > 3
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-30 20:41:24 +00:00
|
|
|
def testUpConvert2To3(self):
|
2018-07-15 21:32:13 +01:00
|
|
|
self.makeUFO(
|
2011-09-27 15:28:42 +00:00
|
|
|
metaInfo=dict(creator="test", formatVersion=2), layerContents=dict()
|
2022-12-13 11:26:36 +00:00
|
|
|
)
|
2018-07-15 21:32:13 +01:00
|
|
|
writer = UFOWriter(self.ufoPath)
|
2019-09-14 21:55:46 +01:00
|
|
|
writer.writeLayerContents(["public.default"])
|
2018-07-15 21:32:13 +01:00
|
|
|
path = os.path.join(self.ufoPath, "layercontents.plist")
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "rb") as f:
|
2018-07-15 21:32:13 +01:00
|
|
|
result = plistlib.load(f)
|
2011-09-27 16:18:42 +00:00
|
|
|
expected = [["public.default", "glyphs"]]
|
2018-07-15 21:32:13 +01:00
|
|
|
self.assertEqual(expected, result)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-27 15:28:42 +00:00
|
|
|
# __init__: down convert 3 > 1
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-27 15:28:42 +00:00
|
|
|
def testDownConvert3To1(self):
|
|
|
|
self.makeUFO()
|
2011-10-06 13:30:11 +00:00
|
|
|
self.assertRaises(UFOLibError, UFOWriter, self.ufoPath, formatVersion=1)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-27 15:28:42 +00:00
|
|
|
# __init__: down convert 3 > 2
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-10-06 13:30:11 +00:00
|
|
|
def testDownConvert3To2(self):
|
2011-09-27 15:28:42 +00:00
|
|
|
self.makeUFO()
|
2011-10-06 13:30:11 +00:00
|
|
|
self.assertRaises(UFOLibError, UFOWriter, self.ufoPath, formatVersion=2)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-27 15:28:42 +00:00
|
|
|
# get glyph sets
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2020-11-23 13:57:32 +00:00
|
|
|
def testGetGlyphSets(self):
|
2011-09-27 15:28:42 +00:00
|
|
|
self.makeUFO()
|
|
|
|
# hack contents.plist
|
|
|
|
path = os.path.join(self.ufoPath, "glyphs.layer 1", "contents.plist")
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "wb") as f:
|
2018-07-11 12:30:11 +01:00
|
|
|
plistlib.dump(dict(b="a.glif"), f)
|
2011-09-27 15:28:42 +00:00
|
|
|
path = os.path.join(self.ufoPath, "glyphs.layer 2", "contents.plist")
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "wb") as f:
|
2018-07-11 12:30:11 +01:00
|
|
|
plistlib.dump(dict(c="a.glif"), f)
|
2011-09-27 15:28:42 +00:00
|
|
|
# now test
|
2018-07-15 21:32:13 +01:00
|
|
|
writer = UFOWriter(self.ufoPath)
|
2011-09-27 15:28:42 +00:00
|
|
|
# default
|
|
|
|
expected = ["a"]
|
|
|
|
result = list(writer.getGlyphSet().keys())
|
2018-07-15 21:32:13 +01:00
|
|
|
self.assertEqual(expected, result)
|
2011-09-27 15:28:42 +00:00
|
|
|
# layer 1
|
|
|
|
expected = ["b"]
|
2011-10-05 19:53:22 +00:00
|
|
|
result = list(writer.getGlyphSet("layer 1", defaultLayer=False).keys())
|
2018-07-15 21:32:13 +01:00
|
|
|
self.assertEqual(expected, result)
|
2011-09-27 15:28:42 +00:00
|
|
|
# layer 2
|
|
|
|
expected = ["c"]
|
2011-10-05 19:53:22 +00:00
|
|
|
result = list(writer.getGlyphSet("layer 2", defaultLayer=False).keys())
|
2018-07-15 21:32:13 +01:00
|
|
|
self.assertEqual(expected, result)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2020-11-23 13:57:32 +00:00
|
|
|
def testGetGlyphSetNoContents(self):
|
2011-09-28 15:29:10 +00:00
|
|
|
self.makeUFO()
|
2020-11-23 13:57:32 +00:00
|
|
|
os.remove(os.path.join(self.ufoPath, "glyphs.layer 1", "contents.plist"))
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.ufoPath, validate=True)
|
2020-11-23 13:57:32 +00:00
|
|
|
with self.assertRaises(GlifLibError):
|
2020-11-23 14:32:45 +00:00
|
|
|
reader.getGlyphSet("layer 1")
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2020-11-23 13:57:32 +00:00
|
|
|
writer = UFOWriter(self.ufoPath, validate=True)
|
|
|
|
with self.assertRaises(GlifLibError):
|
|
|
|
writer.getGlyphSet("layer 1", defaultLayer=False, expectContentsFile=True)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2020-11-23 13:57:32 +00:00
|
|
|
# There's a separate code path for < v3 UFOs.
|
|
|
|
with open(os.path.join(self.ufoPath, "metainfo.plist"), "wb") as f:
|
|
|
|
plistlib.dump(dict(creator="test", formatVersion=2), f)
|
|
|
|
os.remove(os.path.join(self.ufoPath, "glyphs", "contents.plist"))
|
|
|
|
writer = UFOWriter(self.ufoPath, validate=True, formatVersion=2)
|
|
|
|
with self.assertRaises(GlifLibError):
|
|
|
|
writer.getGlyphSet(expectContentsFile=True)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-27 15:28:42 +00:00
|
|
|
# make a new font with two layers
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-27 15:28:42 +00:00
|
|
|
def testNewFontOneLayer(self):
|
2011-09-28 15:29:10 +00:00
|
|
|
self.clearUFO()
|
2018-07-15 21:32:13 +01:00
|
|
|
writer = UFOWriter(self.ufoPath)
|
2011-09-28 16:17:53 +00:00
|
|
|
writer.getGlyphSet()
|
2019-09-14 21:55:46 +01:00
|
|
|
writer.writeLayerContents(["public.default"])
|
2011-10-19 02:18:56 +00:00
|
|
|
# directory
|
2011-09-28 15:29:10 +00:00
|
|
|
path = os.path.join(self.ufoPath, "glyphs")
|
2011-09-27 15:28:42 +00:00
|
|
|
exists = os.path.exists(path)
|
|
|
|
self.assertEqual(True, exists)
|
|
|
|
# layer contents
|
2011-09-28 15:29:10 +00:00
|
|
|
path = os.path.join(self.ufoPath, "layercontents.plist")
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "rb") as f:
|
2018-07-15 21:32:13 +01:00
|
|
|
result = plistlib.load(f)
|
2011-09-27 16:18:42 +00:00
|
|
|
expected = [["public.default", "glyphs"]]
|
2018-07-15 21:32:13 +01:00
|
|
|
self.assertEqual(expected, result)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-27 15:28:42 +00:00
|
|
|
def testNewFontThreeLayers(self):
|
2011-09-28 15:29:10 +00:00
|
|
|
self.clearUFO()
|
2018-07-15 21:32:13 +01:00
|
|
|
writer = UFOWriter(self.ufoPath)
|
2011-10-05 19:53:22 +00:00
|
|
|
writer.getGlyphSet("layer 1", defaultLayer=False)
|
2011-09-28 16:17:53 +00:00
|
|
|
writer.getGlyphSet()
|
2011-10-05 19:53:22 +00:00
|
|
|
writer.getGlyphSet("layer 2", defaultLayer=False)
|
2019-09-14 21:55:46 +01:00
|
|
|
writer.writeLayerContents(["layer 1", "public.default", "layer 2"])
|
2011-09-27 15:28:42 +00:00
|
|
|
# directories
|
2011-09-28 15:29:10 +00:00
|
|
|
path = os.path.join(self.ufoPath, "glyphs")
|
2011-09-27 15:28:42 +00:00
|
|
|
exists = os.path.exists(path)
|
|
|
|
self.assertEqual(True, exists)
|
|
|
|
path = os.path.join(self.ufoPath, "glyphs.layer 1")
|
|
|
|
exists = os.path.exists(path)
|
|
|
|
self.assertEqual(True, exists)
|
|
|
|
path = os.path.join(self.ufoPath, "glyphs.layer 2")
|
|
|
|
exists = os.path.exists(path)
|
|
|
|
self.assertEqual(True, exists)
|
|
|
|
# layer contents
|
2011-09-28 15:29:10 +00:00
|
|
|
path = os.path.join(self.ufoPath, "layercontents.plist")
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "rb") as f:
|
2018-07-15 21:32:13 +01:00
|
|
|
result = plistlib.load(f)
|
2011-09-12 17:49:34 +00:00
|
|
|
expected = [
|
2018-07-15 21:32:13 +01:00
|
|
|
["layer 1", "glyphs.layer 1"],
|
|
|
|
["public.default", "glyphs"],
|
|
|
|
["layer 2", "glyphs.layer 2"],
|
2022-12-13 11:26:36 +00:00
|
|
|
]
|
2018-07-15 21:32:13 +01:00
|
|
|
self.assertEqual(expected, result)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-27 15:28:42 +00:00
|
|
|
# add a layer to an existing font
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-30 20:41:24 +00:00
|
|
|
def testAddLayerToExistingFont(self):
|
2011-09-28 15:29:10 +00:00
|
|
|
self.makeUFO()
|
2018-07-15 21:32:13 +01:00
|
|
|
writer = UFOWriter(self.ufoPath)
|
2011-10-05 19:53:22 +00:00
|
|
|
writer.getGlyphSet("layer 3", defaultLayer=False)
|
2011-09-30 20:41:24 +00:00
|
|
|
writer.writeLayerContents(["public.default", "layer 1", "layer 2", "layer 3"])
|
2011-09-27 15:28:42 +00:00
|
|
|
# directories
|
2011-09-28 15:29:10 +00:00
|
|
|
path = os.path.join(self.ufoPath, "glyphs")
|
2011-09-27 15:28:42 +00:00
|
|
|
exists = os.path.exists(path)
|
|
|
|
self.assertEqual(True, exists)
|
|
|
|
path = os.path.join(self.ufoPath, "glyphs.layer 1")
|
|
|
|
exists = os.path.exists(path)
|
|
|
|
self.assertEqual(True, exists)
|
|
|
|
path = os.path.join(self.ufoPath, "glyphs.layer 2")
|
|
|
|
exists = os.path.exists(path)
|
|
|
|
self.assertEqual(True, exists)
|
|
|
|
path = os.path.join(self.ufoPath, "glyphs.layer 3")
|
|
|
|
exists = os.path.exists(path)
|
|
|
|
self.assertEqual(True, exists)
|
|
|
|
# layer contents
|
2011-09-28 15:29:10 +00:00
|
|
|
path = os.path.join(self.ufoPath, "layercontents.plist")
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "rb") as f:
|
2018-07-15 21:32:13 +01:00
|
|
|
result = plistlib.load(f)
|
2011-09-12 17:49:34 +00:00
|
|
|
expected = [
|
2018-07-15 21:32:13 +01:00
|
|
|
["public.default", "glyphs"],
|
|
|
|
["layer 1", "glyphs.layer 1"],
|
|
|
|
["layer 2", "glyphs.layer 2"],
|
2011-09-30 20:41:24 +00:00
|
|
|
["layer 3", "glyphs.layer 3"],
|
2022-12-13 11:26:36 +00:00
|
|
|
]
|
2018-07-15 21:32:13 +01:00
|
|
|
self.assertEqual(expected, result)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-27 15:28:42 +00:00
|
|
|
# rename valid name
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-27 15:28:42 +00:00
|
|
|
def testRenameLayer(self):
|
2011-09-28 15:29:10 +00:00
|
|
|
self.makeUFO()
|
2011-09-28 16:17:53 +00:00
|
|
|
writer = UFOWriter(self.ufoPath)
|
2015-11-05 09:03:19 +00:00
|
|
|
writer.renameGlyphSet("layer 1", "layer 3")
|
2011-09-30 20:41:24 +00:00
|
|
|
writer.writeLayerContents(["public.default", "layer 3", "layer 2"])
|
2011-09-27 15:28:42 +00:00
|
|
|
# directories
|
2011-09-28 15:29:10 +00:00
|
|
|
path = os.path.join(self.ufoPath, "glyphs")
|
2011-09-27 15:28:42 +00:00
|
|
|
exists = os.path.exists(path)
|
|
|
|
self.assertEqual(True, exists)
|
|
|
|
path = os.path.join(self.ufoPath, "glyphs.layer 1")
|
|
|
|
exists = os.path.exists(path)
|
|
|
|
self.assertEqual(False, exists)
|
|
|
|
path = os.path.join(self.ufoPath, "glyphs.layer 2")
|
|
|
|
exists = os.path.exists(path)
|
|
|
|
self.assertEqual(True, exists)
|
|
|
|
path = os.path.join(self.ufoPath, "glyphs.layer 3")
|
|
|
|
exists = os.path.exists(path)
|
|
|
|
self.assertEqual(True, exists)
|
|
|
|
# layer contents
|
2011-09-28 15:29:10 +00:00
|
|
|
path = os.path.join(self.ufoPath, "layercontents.plist")
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "rb") as f:
|
2018-07-11 12:30:11 +01:00
|
|
|
result = plistlib.load(f)
|
2011-09-12 17:49:34 +00:00
|
|
|
expected = [
|
2018-07-15 21:32:13 +01:00
|
|
|
["public.default", "glyphs"],
|
2011-09-30 20:41:24 +00:00
|
|
|
["layer 3", "glyphs.layer 3"],
|
2018-07-15 21:32:13 +01:00
|
|
|
["layer 2", "glyphs.layer 2"],
|
2022-12-13 11:26:36 +00:00
|
|
|
]
|
2011-09-28 16:17:53 +00:00
|
|
|
self.assertEqual(expected, result)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-10-06 17:50:53 +00:00
|
|
|
def testRenameLayerDefault(self):
|
2011-09-28 15:29:10 +00:00
|
|
|
self.makeUFO()
|
2011-09-28 16:17:53 +00:00
|
|
|
writer = UFOWriter(self.ufoPath)
|
2015-11-05 09:03:19 +00:00
|
|
|
writer.renameGlyphSet("public.default", "layer xxx")
|
|
|
|
writer.renameGlyphSet("layer 1", "layer 1", defaultLayer=True)
|
2011-10-06 17:50:53 +00:00
|
|
|
writer.writeLayerContents(["layer xxx", "layer 1", "layer 2"])
|
2011-09-28 15:29:10 +00:00
|
|
|
path = os.path.join(self.ufoPath, "glyphs")
|
2011-09-27 15:28:42 +00:00
|
|
|
exists = os.path.exists(path)
|
|
|
|
self.assertEqual(True, exists)
|
|
|
|
path = os.path.join(self.ufoPath, "glyphs.layer 1")
|
|
|
|
exists = os.path.exists(path)
|
|
|
|
self.assertEqual(False, exists)
|
|
|
|
path = os.path.join(self.ufoPath, "glyphs.layer 2")
|
|
|
|
exists = os.path.exists(path)
|
|
|
|
self.assertEqual(True, exists)
|
2011-10-06 17:50:53 +00:00
|
|
|
path = os.path.join(self.ufoPath, "glyphs.layer xxx")
|
2011-09-27 15:28:42 +00:00
|
|
|
exists = os.path.exists(path)
|
|
|
|
self.assertEqual(True, exists)
|
|
|
|
# layer contents
|
2011-09-28 15:29:10 +00:00
|
|
|
path = os.path.join(self.ufoPath, "layercontents.plist")
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "rb") as f:
|
2018-07-11 12:30:11 +01:00
|
|
|
result = plistlib.load(f)
|
2011-09-12 17:49:34 +00:00
|
|
|
expected = [
|
2018-07-15 21:32:13 +01:00
|
|
|
["layer xxx", "glyphs.layer xxx"],
|
2011-09-30 20:41:24 +00:00
|
|
|
["layer 1", "glyphs"],
|
2018-07-15 21:32:13 +01:00
|
|
|
["layer 2", "glyphs.layer 2"],
|
2022-12-13 11:26:36 +00:00
|
|
|
]
|
2011-09-28 16:17:53 +00:00
|
|
|
self.assertEqual(expected, result)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-27 15:28:42 +00:00
|
|
|
# rename duplicate name
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-27 15:28:42 +00:00
|
|
|
def testRenameLayerDuplicateName(self):
|
2011-09-28 15:29:10 +00:00
|
|
|
self.makeUFO()
|
2011-09-28 16:17:53 +00:00
|
|
|
writer = UFOWriter(self.ufoPath)
|
2015-11-05 09:03:19 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.renameGlyphSet, "layer 1", "layer 2")
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-27 15:28:42 +00:00
|
|
|
# rename unknown layer
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2018-06-11 15:03:54 -05:00
|
|
|
def testRenameLayerUnknownName(self):
|
2011-09-28 15:29:10 +00:00
|
|
|
self.makeUFO()
|
2011-09-28 16:17:53 +00:00
|
|
|
writer = UFOWriter(self.ufoPath)
|
2011-09-28 15:29:10 +00:00
|
|
|
self.assertRaises(
|
2015-11-05 09:03:19 +00:00
|
|
|
UFOLibError, writer.renameGlyphSet, "does not exist", "layer 2"
|
2022-12-13 11:26:36 +00:00
|
|
|
)
|
|
|
|
|
2011-09-27 15:28:42 +00:00
|
|
|
# remove valid layer
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-27 15:28:42 +00:00
|
|
|
def testRemoveLayer(self):
|
2011-09-28 15:29:10 +00:00
|
|
|
self.makeUFO()
|
2011-09-28 16:17:53 +00:00
|
|
|
writer = UFOWriter(self.ufoPath)
|
2011-09-27 15:28:42 +00:00
|
|
|
writer.deleteGlyphSet("layer 1")
|
2019-09-14 21:55:46 +01:00
|
|
|
writer.writeLayerContents(["public.default", "layer 2"])
|
2011-09-27 15:28:42 +00:00
|
|
|
# directories
|
2011-09-28 15:29:10 +00:00
|
|
|
path = os.path.join(self.ufoPath, "glyphs")
|
2011-09-27 15:28:42 +00:00
|
|
|
exists = os.path.exists(path)
|
|
|
|
self.assertEqual(True, exists)
|
|
|
|
path = os.path.join(self.ufoPath, "glyphs.layer 1")
|
|
|
|
exists = os.path.exists(path)
|
|
|
|
self.assertEqual(False, exists)
|
|
|
|
path = os.path.join(self.ufoPath, "glyphs.layer 2")
|
|
|
|
exists = os.path.exists(path)
|
|
|
|
self.assertEqual(True, exists)
|
|
|
|
# layer contents
|
2011-09-28 15:29:10 +00:00
|
|
|
path = os.path.join(self.ufoPath, "layercontents.plist")
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "rb") as f:
|
2018-07-11 12:30:11 +01:00
|
|
|
result = plistlib.load(f)
|
2011-09-27 16:18:42 +00:00
|
|
|
expected = [["public.default", "glyphs"], ["layer 2", "glyphs.layer 2"]]
|
2011-09-28 16:17:53 +00:00
|
|
|
self.assertEqual(expected, result)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-27 15:28:42 +00:00
|
|
|
# remove default layer
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-27 15:28:42 +00:00
|
|
|
def testRemoveDefaultLayer(self):
|
2011-09-28 15:29:10 +00:00
|
|
|
self.makeUFO()
|
2011-09-28 16:17:53 +00:00
|
|
|
writer = UFOWriter(self.ufoPath)
|
2011-09-27 16:18:42 +00:00
|
|
|
writer.deleteGlyphSet("public.default")
|
2019-09-14 21:55:46 +01:00
|
|
|
writer.writeLayerContents(["layer 1", "layer 2"])
|
2011-09-27 15:28:42 +00:00
|
|
|
# directories
|
2011-09-28 15:29:10 +00:00
|
|
|
path = os.path.join(self.ufoPath, "glyphs")
|
2019-09-14 21:56:19 +01:00
|
|
|
self.assertEqual(False, os.path.exists(path))
|
2011-09-27 15:28:42 +00:00
|
|
|
path = os.path.join(self.ufoPath, "glyphs.layer 1")
|
2019-09-14 21:56:19 +01:00
|
|
|
self.assertEqual(True, os.path.exists(path))
|
2011-09-27 15:28:42 +00:00
|
|
|
path = os.path.join(self.ufoPath, "glyphs.layer 2")
|
2019-09-14 21:56:19 +01:00
|
|
|
self.assertEqual(True, os.path.exists(path))
|
2011-09-27 15:28:42 +00:00
|
|
|
# layer contents
|
2011-09-28 15:29:10 +00:00
|
|
|
path = os.path.join(self.ufoPath, "layercontents.plist")
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "rb") as f:
|
2018-07-11 12:30:11 +01:00
|
|
|
result = plistlib.load(f)
|
2011-09-27 15:28:42 +00:00
|
|
|
expected = [["layer 1", "glyphs.layer 1"], ["layer 2", "glyphs.layer 2"]]
|
2011-09-28 16:17:53 +00:00
|
|
|
self.assertEqual(expected, result)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-27 15:28:42 +00:00
|
|
|
# remove unknown layer
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2019-09-14 21:56:19 +01:00
|
|
|
def testRemoveDefaultLayer2(self):
|
2011-09-28 15:29:10 +00:00
|
|
|
self.makeUFO()
|
2011-09-28 16:17:53 +00:00
|
|
|
writer = UFOWriter(self.ufoPath)
|
2011-09-27 15:28:42 +00:00
|
|
|
self.assertRaises(UFOLibError, writer.deleteGlyphSet, "does not exist")
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2018-07-15 21:32:13 +01:00
|
|
|
def testWriteAsciiLayerOrder(self):
|
|
|
|
self.makeUFO(
|
|
|
|
layerContents=[
|
|
|
|
["public.default", "glyphs"],
|
|
|
|
["layer 1", "glyphs.layer 1"],
|
|
|
|
["layer 2", "glyphs.layer 2"],
|
2022-12-13 11:26:36 +00:00
|
|
|
]
|
|
|
|
)
|
2011-09-28 16:17:53 +00:00
|
|
|
writer = UFOWriter(self.ufoPath)
|
2019-09-14 21:55:46 +01:00
|
|
|
writer.writeLayerContents(["public.default", "layer 2", "layer 1"])
|
2011-09-28 15:29:10 +00:00
|
|
|
path = os.path.join(self.ufoPath, "layercontents.plist")
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "rb") as f:
|
2018-07-11 12:30:11 +01:00
|
|
|
result = plistlib.load(f)
|
2011-09-12 17:49:34 +00:00
|
|
|
expected = [
|
2018-07-15 21:32:13 +01:00
|
|
|
["public.default", "glyphs"],
|
|
|
|
["layer 2", "glyphs.layer 2"],
|
|
|
|
["layer 1", "glyphs.layer 1"],
|
2022-12-13 11:26:36 +00:00
|
|
|
]
|
2011-09-28 16:17:53 +00:00
|
|
|
self.assertEqual(expected, result)
|
2019-09-14 21:55:46 +01:00
|
|
|
for layerName, _ in result:
|
2019-09-09 22:24:59 +01:00
|
|
|
assert isinstance(layerName, str)
|
2011-09-27 15:28:42 +00:00
|
|
|
|
|
|
|
|
2011-09-19 01:40:21 +00:00
|
|
|
# -----
|
|
|
|
# /data
|
|
|
|
# -----
|
2011-09-18 11:18:31 +00:00
|
|
|
|
2009-02-28 15:47:24 +00:00
|
|
|
|
2011-09-12 17:49:34 +00:00
|
|
|
class UFO3ReadDataTestCase(unittest.TestCase):
|
|
|
|
def getFontPath(self):
|
2016-10-17 19:37:52 +01:00
|
|
|
testdata = os.path.join(os.path.dirname(__file__), "testdata")
|
|
|
|
return os.path.join(testdata, "UFO3-Read Data.ufo")
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-12 17:49:34 +00:00
|
|
|
def testUFOReaderDataDirectoryListing(self):
|
|
|
|
reader = UFOReader(self.getFontPath())
|
|
|
|
found = reader.getDataDirectoryListing()
|
|
|
|
expected = [
|
2017-07-21 16:40:28 +01:00
|
|
|
"org.unifiedfontobject.directory/bar/lol.txt",
|
|
|
|
"org.unifiedfontobject.directory/foo.txt",
|
2011-12-06 18:47:56 +00:00
|
|
|
"org.unifiedfontobject.file.txt",
|
2011-09-12 17:49:34 +00:00
|
|
|
]
|
2015-11-08 11:49:06 +01:00
|
|
|
self.assertEqual(set(found), set(expected))
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-12 17:49:34 +00:00
|
|
|
def testUFOReaderBytesFromPath(self):
|
|
|
|
reader = UFOReader(self.getFontPath())
|
|
|
|
found = reader.readBytesFromPath("data/org.unifiedfontobject.file.txt")
|
2015-11-02 14:10:06 +00:00
|
|
|
expected = b"file.txt"
|
2011-09-12 17:49:34 +00:00
|
|
|
self.assertEqual(found, expected)
|
|
|
|
found = reader.readBytesFromPath(
|
|
|
|
"data/org.unifiedfontobject.directory/bar/lol.txt"
|
|
|
|
)
|
2015-11-02 14:10:06 +00:00
|
|
|
expected = b"lol.txt"
|
2011-09-12 17:49:34 +00:00
|
|
|
self.assertEqual(found, expected)
|
|
|
|
found = reader.readBytesFromPath("data/org.unifiedfontobject.doesNotExist")
|
|
|
|
expected = None
|
|
|
|
self.assertEqual(found, expected)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-12 17:49:34 +00:00
|
|
|
def testUFOReaderReadFileFromPath(self):
|
|
|
|
reader = UFOReader(self.getFontPath())
|
|
|
|
fileObject = reader.getReadFileForPath("data/org.unifiedfontobject.file.txt")
|
|
|
|
self.assertNotEqual(fileObject, None)
|
|
|
|
hasRead = hasattr(fileObject, "read")
|
|
|
|
self.assertEqual(hasRead, True)
|
|
|
|
fileObject.close()
|
|
|
|
fileObject = reader.getReadFileForPath(
|
|
|
|
"data/org.unifiedfontobject.doesNotExist"
|
|
|
|
)
|
|
|
|
self.assertEqual(fileObject, None)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2020-05-22 09:55:16 +01:00
|
|
|
def testUFOReaderKernGroupDuplicatesRemoved(self):
|
2020-05-22 09:53:40 +01:00
|
|
|
# Non-kerning group duplicates are kept
|
|
|
|
# Kerning group duplicates are removed
|
|
|
|
expected_groups = {
|
|
|
|
"group1": ["A"],
|
2020-05-22 10:41:10 +01:00
|
|
|
"group2": ["B", "C", "B"],
|
2020-05-22 09:53:40 +01:00
|
|
|
"public.kern1.A": ["A"],
|
2020-05-22 10:41:10 +01:00
|
|
|
"public.kern2.B": ["B", "A", "C"],
|
2020-05-22 09:53:40 +01:00
|
|
|
}
|
|
|
|
reader = UFOReader(self.getFontPath())
|
|
|
|
groups = reader.readGroups()
|
|
|
|
self.assertEqual(expected_groups, groups)
|
|
|
|
|
2011-09-12 20:36:40 +00:00
|
|
|
|
2011-09-12 17:49:34 +00:00
|
|
|
class UFO3WriteDataTestCase(unittest.TestCase):
|
2011-09-28 16:17:53 +00:00
|
|
|
def setUp(self):
|
|
|
|
self.tempDir = tempfile.mktemp()
|
|
|
|
os.mkdir(self.tempDir)
|
2011-09-19 01:40:21 +00:00
|
|
|
self.dstDir = os.path.join(self.tempDir, "test.ufo")
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-28 16:17:53 +00:00
|
|
|
def tearDown(self):
|
|
|
|
shutil.rmtree(self.tempDir)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-19 01:40:21 +00:00
|
|
|
def tearDownUFO(self):
|
2015-11-02 14:10:06 +00:00
|
|
|
if os.path.exists(self.dstDir):
|
|
|
|
shutil.rmtree(self.dstDir)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-12 17:49:34 +00:00
|
|
|
def testUFOWriterWriteBytesToPath(self):
|
|
|
|
# basic file
|
|
|
|
path = "data/org.unifiedfontobject.writebytesbasicfile.txt"
|
2015-11-02 14:10:06 +00:00
|
|
|
testBytes = b"test"
|
2011-10-19 02:18:56 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2015-11-02 14:10:06 +00:00
|
|
|
writer.writeBytesToPath(path, testBytes)
|
2011-09-12 17:49:34 +00:00
|
|
|
path = os.path.join(self.dstDir, path)
|
2011-10-19 02:18:56 +00:00
|
|
|
self.assertEqual(os.path.exists(path), True)
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "rb") as f:
|
2015-11-02 14:10:06 +00:00
|
|
|
written = f.read()
|
|
|
|
self.assertEqual(testBytes, written)
|
2011-10-19 02:18:56 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-12 17:49:34 +00:00
|
|
|
# basic file with unicode text
|
|
|
|
path = "data/org.unifiedfontobject.writebytesbasicunicodefile.txt"
|
2015-11-02 14:10:06 +00:00
|
|
|
text = b"t\xeb\xdft"
|
2011-10-19 02:18:56 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2015-11-02 14:10:06 +00:00
|
|
|
writer.writeBytesToPath(path, text)
|
2011-09-12 17:49:34 +00:00
|
|
|
path = os.path.join(self.dstDir, path)
|
2011-10-19 02:18:56 +00:00
|
|
|
self.assertEqual(os.path.exists(path), True)
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "rb") as f:
|
2015-11-02 14:10:06 +00:00
|
|
|
written = f.read()
|
|
|
|
self.assertEqual(text, written)
|
2011-10-19 02:18:56 +00:00
|
|
|
self.tearDownUFO()
|
2011-09-12 17:49:34 +00:00
|
|
|
# basic directory
|
|
|
|
path = "data/org.unifiedfontobject.writebytesdirectory/level1/level2/file.txt"
|
2015-11-02 14:10:06 +00:00
|
|
|
testBytes = b"test"
|
2011-10-19 02:18:56 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2015-11-02 14:10:06 +00:00
|
|
|
writer.writeBytesToPath(path, testBytes)
|
2011-09-12 17:49:34 +00:00
|
|
|
path = os.path.join(self.dstDir, path)
|
2011-10-19 02:18:56 +00:00
|
|
|
self.assertEqual(os.path.exists(path), True)
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "rb") as f:
|
2015-11-02 14:10:06 +00:00
|
|
|
written = f.read()
|
|
|
|
self.assertEqual(testBytes, written)
|
2011-10-19 02:18:56 +00:00
|
|
|
self.tearDownUFO()
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-12 17:49:34 +00:00
|
|
|
def testUFOWriterWriteFileToPath(self):
|
|
|
|
# basic file
|
|
|
|
path = "data/org.unifiedfontobject.getwritefile.txt"
|
2011-10-19 02:18:56 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2011-09-12 17:49:34 +00:00
|
|
|
fileObject = writer.getFileObjectForPath(path)
|
|
|
|
self.assertNotEqual(fileObject, None)
|
|
|
|
hasRead = hasattr(fileObject, "read")
|
|
|
|
self.assertEqual(hasRead, True)
|
|
|
|
fileObject.close()
|
2011-10-19 02:18:56 +00:00
|
|
|
self.tearDownUFO()
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-12 17:49:34 +00:00
|
|
|
def testUFOWriterRemoveFile(self):
|
|
|
|
path1 = "data/org.unifiedfontobject.removefile/level1/level2/file1.txt"
|
|
|
|
path2 = "data/org.unifiedfontobject.removefile/level1/level2/file2.txt"
|
|
|
|
path3 = "data/org.unifiedfontobject.removefile/level1/file3.txt"
|
2011-10-19 02:18:56 +00:00
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
2015-11-02 14:10:06 +00:00
|
|
|
writer.writeBytesToPath(path1, b"test")
|
|
|
|
writer.writeBytesToPath(path2, b"test")
|
|
|
|
writer.writeBytesToPath(path3, b"test")
|
2011-09-12 17:49:34 +00:00
|
|
|
self.assertEqual(os.path.exists(os.path.join(self.dstDir, path1)), True)
|
|
|
|
self.assertEqual(os.path.exists(os.path.join(self.dstDir, path2)), True)
|
|
|
|
self.assertEqual(os.path.exists(os.path.join(self.dstDir, path3)), True)
|
|
|
|
writer.removeFileForPath(path1)
|
|
|
|
self.assertEqual(os.path.exists(os.path.join(self.dstDir, path1)), False)
|
2011-09-28 16:17:53 +00:00
|
|
|
self.assertEqual(
|
2011-09-12 17:49:34 +00:00
|
|
|
os.path.exists(os.path.dirname(os.path.join(self.dstDir, path1))), True
|
2022-12-13 11:26:36 +00:00
|
|
|
)
|
2011-09-12 17:49:34 +00:00
|
|
|
self.assertEqual(os.path.exists(os.path.join(self.dstDir, path2)), True)
|
|
|
|
self.assertEqual(os.path.exists(os.path.join(self.dstDir, path3)), True)
|
|
|
|
writer.removeFileForPath(path2)
|
2011-09-28 16:17:53 +00:00
|
|
|
self.assertEqual(
|
2011-09-12 17:49:34 +00:00
|
|
|
os.path.exists(os.path.dirname(os.path.join(self.dstDir, path1))), False
|
2022-12-13 11:26:36 +00:00
|
|
|
)
|
2011-09-12 17:49:34 +00:00
|
|
|
self.assertEqual(os.path.exists(os.path.join(self.dstDir, path2)), False)
|
|
|
|
self.assertEqual(os.path.exists(os.path.join(self.dstDir, path3)), True)
|
|
|
|
writer.removeFileForPath(path3)
|
|
|
|
self.assertEqual(os.path.exists(os.path.join(self.dstDir, path3)), False)
|
2011-09-28 16:17:53 +00:00
|
|
|
self.assertEqual(
|
2011-09-12 17:49:34 +00:00
|
|
|
os.path.exists(os.path.dirname(os.path.join(self.dstDir, path2))), False
|
2022-12-13 11:26:36 +00:00
|
|
|
)
|
2011-09-28 16:17:53 +00:00
|
|
|
self.assertEqual(
|
|
|
|
os.path.exists(
|
2011-09-12 17:49:34 +00:00
|
|
|
os.path.join(self.dstDir, "data/org.unifiedfontobject.removefile")
|
2022-12-13 11:26:36 +00:00
|
|
|
),
|
|
|
|
False,
|
|
|
|
)
|
2011-09-28 16:17:53 +00:00
|
|
|
self.assertRaises(
|
2011-10-06 13:30:11 +00:00
|
|
|
UFOLibError,
|
2011-09-12 17:49:34 +00:00
|
|
|
writer.removeFileForPath,
|
|
|
|
path="data/org.unifiedfontobject.doesNotExist.txt",
|
2022-12-13 11:26:36 +00:00
|
|
|
)
|
2011-10-19 02:18:56 +00:00
|
|
|
self.tearDownUFO()
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-10-19 02:18:56 +00:00
|
|
|
def testUFOWriterCopy(self):
|
|
|
|
sourceDir = self.dstDir.replace(".ufo", "") + "-copy source" + ".ufo"
|
|
|
|
dataPath = "data/org.unifiedfontobject.copy/level1/level2/file1.txt"
|
|
|
|
writer = UFOWriter(sourceDir, formatVersion=3)
|
2015-11-02 14:10:06 +00:00
|
|
|
writer.writeBytesToPath(dataPath, b"test")
|
2011-10-19 02:18:56 +00:00
|
|
|
# copy a file
|
|
|
|
reader = UFOReader(sourceDir)
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
writer.copyFromReader(reader, dataPath, dataPath)
|
|
|
|
path = os.path.join(self.dstDir, dataPath)
|
|
|
|
self.assertEqual(os.path.exists(path), True)
|
|
|
|
self.tearDownUFO()
|
|
|
|
# copy a directory
|
|
|
|
reader = UFOReader(sourceDir)
|
|
|
|
writer = UFOWriter(self.dstDir, formatVersion=3)
|
|
|
|
p = "data/org.unifiedfontobject.copy"
|
|
|
|
writer.copyFromReader(reader, p, p)
|
|
|
|
path = os.path.join(self.dstDir, dataPath)
|
|
|
|
self.assertEqual(os.path.exists(path), True)
|
|
|
|
self.tearDownUFO()
|
2011-09-12 17:49:34 +00:00
|
|
|
|
2011-09-12 20:36:40 +00:00
|
|
|
|
2011-09-28 15:29:10 +00:00
|
|
|
# ---------------
|
|
|
|
# layerinfo.plist
|
|
|
|
# ---------------
|
|
|
|
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2019-09-09 21:39:22 +01:00
|
|
|
class TestLayerInfoObject:
|
2011-09-28 15:29:10 +00:00
|
|
|
color = guidelines = lib = None
|
|
|
|
|
|
|
|
|
|
|
|
class UFO3ReadLayerInfoTestCase(unittest.TestCase):
|
|
|
|
def setUp(self):
|
|
|
|
self.tempDir = tempfile.mktemp()
|
|
|
|
os.mkdir(self.tempDir)
|
|
|
|
self.ufoPath = os.path.join(self.tempDir, "test.ufo")
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-28 15:29:10 +00:00
|
|
|
def tearDown(self):
|
|
|
|
shutil.rmtree(self.tempDir)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-28 15:29:10 +00:00
|
|
|
def makeUFO(self, formatVersion=3, layerInfo=None):
|
|
|
|
self.clearUFO()
|
|
|
|
if not os.path.exists(self.ufoPath):
|
|
|
|
os.mkdir(self.ufoPath)
|
|
|
|
# metainfo.plist
|
|
|
|
metaInfo = dict(creator="test", formatVersion=formatVersion)
|
|
|
|
path = os.path.join(self.ufoPath, "metainfo.plist")
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "wb") as f:
|
2018-07-11 12:30:11 +01:00
|
|
|
plistlib.dump(metaInfo, f)
|
2011-09-28 15:29:10 +00:00
|
|
|
# layercontents.plist
|
|
|
|
layerContents = [("public.default", "glyphs")]
|
|
|
|
path = os.path.join(self.ufoPath, "layercontents.plist")
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "wb") as f:
|
2018-07-11 12:30:11 +01:00
|
|
|
plistlib.dump(layerContents, f)
|
2011-09-28 15:29:10 +00:00
|
|
|
# glyphs
|
|
|
|
glyphsPath = os.path.join(self.ufoPath, "glyphs")
|
|
|
|
os.mkdir(glyphsPath)
|
|
|
|
contents = dict(a="a.glif")
|
|
|
|
path = os.path.join(glyphsPath, "contents.plist")
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "wb") as f:
|
2018-07-11 12:30:11 +01:00
|
|
|
plistlib.dump(contents, f)
|
2011-09-28 15:29:10 +00:00
|
|
|
path = os.path.join(glyphsPath, "a.glif")
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "w") as f:
|
2015-11-02 14:10:06 +00:00
|
|
|
f.write(" ")
|
2011-09-28 15:29:10 +00:00
|
|
|
# layerinfo.plist
|
|
|
|
if layerInfo is None:
|
|
|
|
layerInfo = dict(color="0,0,0,1", lib={"foo": "bar"})
|
|
|
|
path = os.path.join(glyphsPath, "layerinfo.plist")
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "wb") as f:
|
2018-07-11 12:30:11 +01:00
|
|
|
plistlib.dump(layerInfo, f)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-28 15:29:10 +00:00
|
|
|
def clearUFO(self):
|
|
|
|
if os.path.exists(self.ufoPath):
|
|
|
|
shutil.rmtree(self.ufoPath)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-28 15:29:10 +00:00
|
|
|
def testValidLayerInfo(self):
|
|
|
|
self.makeUFO()
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.ufoPath, validate=True)
|
2011-09-28 15:29:10 +00:00
|
|
|
glyphSet = reader.getGlyphSet()
|
|
|
|
info = TestLayerInfoObject()
|
|
|
|
glyphSet.readLayerInfo(info)
|
|
|
|
expectedColor = "0,0,0,1"
|
|
|
|
self.assertEqual(expectedColor, info.color)
|
|
|
|
expectedLib = {"foo": "bar"}
|
|
|
|
self.assertEqual(expectedLib, info.lib)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-28 15:29:10 +00:00
|
|
|
def testMissingLayerInfo(self):
|
|
|
|
self.makeUFO()
|
|
|
|
path = os.path.join(self.ufoPath, "glyphs", "layerinfo.plist")
|
|
|
|
os.remove(path)
|
|
|
|
# read
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.ufoPath, validate=True)
|
2011-09-28 15:29:10 +00:00
|
|
|
glyphSet = reader.getGlyphSet()
|
|
|
|
info = TestLayerInfoObject()
|
|
|
|
glyphSet.readLayerInfo(info)
|
|
|
|
self.assertEqual(None, info.color)
|
|
|
|
self.assertEqual(None, info.guidelines)
|
|
|
|
self.assertEqual(None, info.lib)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-28 15:29:10 +00:00
|
|
|
def testBogusLayerInfo(self):
|
|
|
|
self.makeUFO()
|
|
|
|
path = os.path.join(self.ufoPath, "glyphs", "layerinfo.plist")
|
|
|
|
os.remove(path)
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "w") as f:
|
2015-11-02 14:10:06 +00:00
|
|
|
f.write("test")
|
2011-09-28 15:29:10 +00:00
|
|
|
# read
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.ufoPath, validate=True)
|
2011-09-28 15:29:10 +00:00
|
|
|
glyphSet = reader.getGlyphSet()
|
|
|
|
info = TestLayerInfoObject()
|
2016-06-13 13:10:55 -04:00
|
|
|
self.assertRaises(UFOLibError, glyphSet.readLayerInfo, info)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-28 15:29:10 +00:00
|
|
|
def testInvalidFormatLayerInfo(self):
|
|
|
|
self.makeUFO()
|
|
|
|
path = os.path.join(self.ufoPath, "glyphs", "layerinfo.plist")
|
|
|
|
info = [("color", "0,0,0,0")]
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "wb") as f:
|
2018-07-11 12:30:11 +01:00
|
|
|
plistlib.dump(info, f)
|
2011-09-28 15:29:10 +00:00
|
|
|
# read
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.ufoPath, validate=True)
|
2011-09-28 15:29:10 +00:00
|
|
|
glyphSet = reader.getGlyphSet()
|
|
|
|
info = TestLayerInfoObject()
|
|
|
|
self.assertRaises(GlifLibError, glyphSet.readLayerInfo, info)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-28 15:29:10 +00:00
|
|
|
def testColor(self):
|
|
|
|
## not a string
|
2011-09-28 16:17:53 +00:00
|
|
|
info = {}
|
2011-09-28 15:29:10 +00:00
|
|
|
info["color"] = 1
|
|
|
|
self.makeUFO(layerInfo=info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.ufoPath, validate=True)
|
2011-09-28 15:29:10 +00:00
|
|
|
glyphSet = reader.getGlyphSet()
|
|
|
|
self.assertRaises(GlifLibError, glyphSet.readLayerInfo, TestLayerInfoObject())
|
|
|
|
## not enough commas
|
2011-09-28 16:17:53 +00:00
|
|
|
info = {}
|
2011-09-28 15:29:10 +00:00
|
|
|
info["color"] = "1 0, 0, 0"
|
|
|
|
self.makeUFO(layerInfo=info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.ufoPath, validate=True)
|
2011-09-28 15:29:10 +00:00
|
|
|
glyphSet = reader.getGlyphSet()
|
|
|
|
self.assertRaises(GlifLibError, glyphSet.readLayerInfo, TestLayerInfoObject())
|
2011-09-28 16:17:53 +00:00
|
|
|
info = {}
|
2011-09-28 15:29:10 +00:00
|
|
|
info["color"] = "1 0 0, 0"
|
|
|
|
self.makeUFO(layerInfo=info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.ufoPath, validate=True)
|
2011-09-28 15:29:10 +00:00
|
|
|
glyphSet = reader.getGlyphSet()
|
|
|
|
self.assertRaises(GlifLibError, glyphSet.readLayerInfo, TestLayerInfoObject())
|
2011-09-28 16:17:53 +00:00
|
|
|
info = {}
|
2011-09-28 15:29:10 +00:00
|
|
|
info["color"] = "1 0 0 0"
|
|
|
|
self.makeUFO(layerInfo=info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.ufoPath, validate=True)
|
2011-09-28 15:29:10 +00:00
|
|
|
glyphSet = reader.getGlyphSet()
|
|
|
|
self.assertRaises(GlifLibError, glyphSet.readLayerInfo, TestLayerInfoObject())
|
|
|
|
## not enough parts
|
2011-09-28 16:17:53 +00:00
|
|
|
info = {}
|
2011-09-28 15:29:10 +00:00
|
|
|
info["color"] = ", 0, 0, 0"
|
|
|
|
self.makeUFO(layerInfo=info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.ufoPath, validate=True)
|
2011-09-28 15:29:10 +00:00
|
|
|
glyphSet = reader.getGlyphSet()
|
|
|
|
self.assertRaises(GlifLibError, glyphSet.readLayerInfo, TestLayerInfoObject())
|
2011-09-28 16:17:53 +00:00
|
|
|
info = {}
|
2011-09-28 15:29:10 +00:00
|
|
|
info["color"] = "1, , 0, 0"
|
|
|
|
self.makeUFO(layerInfo=info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.ufoPath, validate=True)
|
2011-09-28 15:29:10 +00:00
|
|
|
glyphSet = reader.getGlyphSet()
|
|
|
|
self.assertRaises(GlifLibError, glyphSet.readLayerInfo, TestLayerInfoObject())
|
2011-09-28 16:17:53 +00:00
|
|
|
info = {}
|
2011-09-28 15:29:10 +00:00
|
|
|
info["color"] = "1, 0, , 0"
|
|
|
|
self.makeUFO(layerInfo=info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.ufoPath, validate=True)
|
2011-09-28 15:29:10 +00:00
|
|
|
glyphSet = reader.getGlyphSet()
|
|
|
|
self.assertRaises(GlifLibError, glyphSet.readLayerInfo, TestLayerInfoObject())
|
2011-09-28 16:17:53 +00:00
|
|
|
info = {}
|
2011-09-28 15:29:10 +00:00
|
|
|
info["color"] = "1, 0, 0, "
|
|
|
|
self.makeUFO(layerInfo=info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.ufoPath, validate=True)
|
2011-09-28 15:29:10 +00:00
|
|
|
glyphSet = reader.getGlyphSet()
|
|
|
|
self.assertRaises(GlifLibError, glyphSet.readLayerInfo, TestLayerInfoObject())
|
2011-09-28 16:17:53 +00:00
|
|
|
info = {}
|
2011-09-28 15:29:10 +00:00
|
|
|
info["color"] = ", , , "
|
|
|
|
self.makeUFO(layerInfo=info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.ufoPath, validate=True)
|
2011-09-28 15:29:10 +00:00
|
|
|
glyphSet = reader.getGlyphSet()
|
|
|
|
self.assertRaises(GlifLibError, glyphSet.readLayerInfo, TestLayerInfoObject())
|
|
|
|
## not a number in all positions
|
2011-09-28 16:17:53 +00:00
|
|
|
info = {}
|
2011-09-28 15:29:10 +00:00
|
|
|
info["color"] = "r, 1, 1, 1"
|
|
|
|
self.makeUFO(layerInfo=info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.ufoPath, validate=True)
|
2011-09-28 15:29:10 +00:00
|
|
|
glyphSet = reader.getGlyphSet()
|
|
|
|
self.assertRaises(GlifLibError, glyphSet.readLayerInfo, TestLayerInfoObject())
|
2011-09-28 16:17:53 +00:00
|
|
|
info = {}
|
2011-09-28 15:29:10 +00:00
|
|
|
info["color"] = "1, g, 1, 1"
|
|
|
|
self.makeUFO(layerInfo=info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.ufoPath, validate=True)
|
2011-09-28 15:29:10 +00:00
|
|
|
glyphSet = reader.getGlyphSet()
|
|
|
|
self.assertRaises(GlifLibError, glyphSet.readLayerInfo, TestLayerInfoObject())
|
2011-09-28 16:17:53 +00:00
|
|
|
info = {}
|
2011-09-28 15:29:10 +00:00
|
|
|
info["color"] = "1, 1, b, 1"
|
|
|
|
self.makeUFO(layerInfo=info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.ufoPath, validate=True)
|
2011-09-28 15:29:10 +00:00
|
|
|
glyphSet = reader.getGlyphSet()
|
|
|
|
self.assertRaises(GlifLibError, glyphSet.readLayerInfo, TestLayerInfoObject())
|
2011-09-28 16:17:53 +00:00
|
|
|
info = {}
|
2011-09-28 15:29:10 +00:00
|
|
|
info["color"] = "1, 1, 1, a"
|
|
|
|
self.makeUFO(layerInfo=info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.ufoPath, validate=True)
|
2011-09-28 15:29:10 +00:00
|
|
|
glyphSet = reader.getGlyphSet()
|
|
|
|
self.assertRaises(GlifLibError, glyphSet.readLayerInfo, TestLayerInfoObject())
|
|
|
|
## too many parts
|
2011-09-28 16:17:53 +00:00
|
|
|
info = {}
|
2011-09-28 15:29:10 +00:00
|
|
|
info["color"] = "1, 0, 0, 0, 0"
|
|
|
|
self.makeUFO(layerInfo=info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.ufoPath, validate=True)
|
2011-09-28 15:29:10 +00:00
|
|
|
glyphSet = reader.getGlyphSet()
|
|
|
|
self.assertRaises(GlifLibError, glyphSet.readLayerInfo, TestLayerInfoObject())
|
|
|
|
## < 0 in each position
|
2011-09-28 16:17:53 +00:00
|
|
|
info = {}
|
2011-09-28 15:29:10 +00:00
|
|
|
info["color"] = "-1, 0, 0, 0"
|
|
|
|
self.makeUFO(layerInfo=info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.ufoPath, validate=True)
|
2011-09-28 15:29:10 +00:00
|
|
|
glyphSet = reader.getGlyphSet()
|
|
|
|
self.assertRaises(GlifLibError, glyphSet.readLayerInfo, TestLayerInfoObject())
|
2011-09-28 16:17:53 +00:00
|
|
|
info = {}
|
2011-09-28 15:29:10 +00:00
|
|
|
info["color"] = "0, -1, 0, 0"
|
|
|
|
self.makeUFO(layerInfo=info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.ufoPath, validate=True)
|
2011-09-28 15:29:10 +00:00
|
|
|
glyphSet = reader.getGlyphSet()
|
|
|
|
self.assertRaises(GlifLibError, glyphSet.readLayerInfo, TestLayerInfoObject())
|
2011-09-28 16:17:53 +00:00
|
|
|
info = {}
|
2011-09-28 15:29:10 +00:00
|
|
|
info["color"] = "0, 0, -1, 0"
|
|
|
|
self.makeUFO(layerInfo=info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.ufoPath, validate=True)
|
2011-09-28 15:29:10 +00:00
|
|
|
glyphSet = reader.getGlyphSet()
|
|
|
|
self.assertRaises(GlifLibError, glyphSet.readLayerInfo, TestLayerInfoObject())
|
2011-09-28 16:17:53 +00:00
|
|
|
info = {}
|
2011-09-28 15:29:10 +00:00
|
|
|
info["color"] = "0, 0, 0, -1"
|
|
|
|
self.makeUFO(layerInfo=info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.ufoPath, validate=True)
|
2011-09-28 15:29:10 +00:00
|
|
|
glyphSet = reader.getGlyphSet()
|
|
|
|
self.assertRaises(GlifLibError, glyphSet.readLayerInfo, TestLayerInfoObject())
|
|
|
|
## > 1 in each position
|
2011-09-28 16:17:53 +00:00
|
|
|
info = {}
|
2011-09-28 15:29:10 +00:00
|
|
|
info["color"] = "2, 0, 0, 0"
|
|
|
|
self.makeUFO(layerInfo=info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.ufoPath, validate=True)
|
2011-09-28 15:29:10 +00:00
|
|
|
glyphSet = reader.getGlyphSet()
|
|
|
|
self.assertRaises(GlifLibError, glyphSet.readLayerInfo, TestLayerInfoObject())
|
2011-09-28 16:17:53 +00:00
|
|
|
info = {}
|
2011-09-28 15:29:10 +00:00
|
|
|
info["color"] = "0, 2, 0, 0"
|
|
|
|
self.makeUFO(layerInfo=info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.ufoPath, validate=True)
|
2011-09-28 15:29:10 +00:00
|
|
|
glyphSet = reader.getGlyphSet()
|
|
|
|
self.assertRaises(GlifLibError, glyphSet.readLayerInfo, TestLayerInfoObject())
|
2011-09-28 16:17:53 +00:00
|
|
|
info = {}
|
2011-09-28 15:29:10 +00:00
|
|
|
info["color"] = "0, 0, 2, 0"
|
|
|
|
self.makeUFO(layerInfo=info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.ufoPath, validate=True)
|
2011-09-28 15:29:10 +00:00
|
|
|
glyphSet = reader.getGlyphSet()
|
|
|
|
self.assertRaises(GlifLibError, glyphSet.readLayerInfo, TestLayerInfoObject())
|
2011-09-28 16:17:53 +00:00
|
|
|
info = {}
|
2011-09-28 15:29:10 +00:00
|
|
|
info["color"] = "0, 0, 0, 2"
|
|
|
|
self.makeUFO(layerInfo=info)
|
2018-06-11 15:03:54 -05:00
|
|
|
reader = UFOReader(self.ufoPath, validate=True)
|
2011-09-28 15:29:10 +00:00
|
|
|
glyphSet = reader.getGlyphSet()
|
|
|
|
self.assertRaises(GlifLibError, glyphSet.readLayerInfo, TestLayerInfoObject())
|
|
|
|
|
2011-09-28 16:17:53 +00:00
|
|
|
|
|
|
|
class UFO3WriteLayerInfoTestCase(unittest.TestCase):
|
|
|
|
def setUp(self):
|
|
|
|
self.tempDir = tempfile.mktemp()
|
|
|
|
os.mkdir(self.tempDir)
|
|
|
|
self.ufoPath = os.path.join(self.tempDir, "test.ufo")
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-28 16:17:53 +00:00
|
|
|
def tearDown(self):
|
|
|
|
shutil.rmtree(self.tempDir)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-28 16:17:53 +00:00
|
|
|
def makeGlyphSet(self):
|
|
|
|
self.clearUFO()
|
|
|
|
writer = UFOWriter(self.ufoPath)
|
|
|
|
return writer.getGlyphSet()
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-28 16:17:53 +00:00
|
|
|
def clearUFO(self):
|
|
|
|
if os.path.exists(self.ufoPath):
|
|
|
|
shutil.rmtree(self.ufoPath)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-28 16:17:53 +00:00
|
|
|
def testValidWrite(self):
|
|
|
|
expected = dict(color="0,0,0,1", lib={"foo": "bar"})
|
|
|
|
info = TestLayerInfoObject()
|
|
|
|
info.color = expected["color"]
|
|
|
|
info.lib = expected["lib"]
|
|
|
|
glyphSet = self.makeGlyphSet()
|
|
|
|
glyphSet.writeLayerInfo(info)
|
|
|
|
path = os.path.join(self.ufoPath, "glyphs", "layerinfo.plist")
|
2015-11-04 07:36:50 +00:00
|
|
|
with open(path, "rb") as f:
|
2018-07-11 12:30:11 +01:00
|
|
|
result = plistlib.load(f)
|
2011-09-28 16:17:53 +00:00
|
|
|
self.assertEqual(expected, result)
|
2022-12-13 11:26:36 +00:00
|
|
|
|
2011-09-28 16:17:53 +00:00
|
|
|
def testColor(self):
|
|
|
|
## not a string
|
|
|
|
info = TestLayerInfoObject()
|
|
|
|
info.color = 1
|
|
|
|
glyphSet = self.makeGlyphSet()
|
|
|
|
self.assertRaises(GlifLibError, glyphSet.writeLayerInfo, info)
|
|
|
|
## not enough commas
|
|
|
|
info = TestLayerInfoObject()
|
|
|
|
info.color = "1 0, 0, 0"
|
|
|
|
glyphSet = self.makeGlyphSet()
|
|
|
|
self.assertRaises(GlifLibError, glyphSet.writeLayerInfo, info)
|
|
|
|
info = TestLayerInfoObject()
|
|
|
|
info.color = "1 0 0, 0"
|
|
|
|
glyphSet = self.makeGlyphSet()
|
|
|
|
self.assertRaises(GlifLibError, glyphSet.writeLayerInfo, info)
|
|
|
|
info = TestLayerInfoObject()
|
|
|
|
info.color = "1 0 0 0"
|
|
|
|
glyphSet = self.makeGlyphSet()
|
|
|
|
self.assertRaises(GlifLibError, glyphSet.writeLayerInfo, info)
|
|
|
|
## not enough parts
|
|
|
|
info = TestLayerInfoObject()
|
|
|
|
info.color = ", 0, 0, 0"
|
|
|
|
glyphSet = self.makeGlyphSet()
|
|
|
|
self.assertRaises(GlifLibError, glyphSet.writeLayerInfo, info)
|
|
|
|
info = TestLayerInfoObject()
|
|
|
|
info.color = "1, , 0, 0"
|
|
|
|
glyphSet = self.makeGlyphSet()
|
|
|
|
self.assertRaises(GlifLibError, glyphSet.writeLayerInfo, info)
|
|
|
|
info = TestLayerInfoObject()
|
|
|
|
info.color = "1, 0, , 0"
|
|
|
|
glyphSet = self.makeGlyphSet()
|
|
|
|
self.assertRaises(GlifLibError, glyphSet.writeLayerInfo, info)
|
|
|
|
info = TestLayerInfoObject()
|
|
|
|
info.color = "1, 0, 0, "
|
|
|
|
glyphSet = self.makeGlyphSet()
|
|
|
|
self.assertRaises(GlifLibError, glyphSet.writeLayerInfo, info)
|
|
|
|
info = TestLayerInfoObject()
|
|
|
|
info.color = ", , , "
|
|
|
|
glyphSet = self.makeGlyphSet()
|
|
|
|
self.assertRaises(GlifLibError, glyphSet.writeLayerInfo, info)
|
|
|
|
## not a number in all positions
|
|
|
|
info = TestLayerInfoObject()
|
|
|
|
info.color = "r, 1, 1, 1"
|
|
|
|
glyphSet = self.makeGlyphSet()
|
|
|
|
self.assertRaises(GlifLibError, glyphSet.writeLayerInfo, info)
|
|
|
|
info = TestLayerInfoObject()
|
|
|
|
info.color = "1, g, 1, 1"
|
|
|
|
glyphSet = self.makeGlyphSet()
|
|
|
|
self.assertRaises(GlifLibError, glyphSet.writeLayerInfo, info)
|
|
|
|
info = TestLayerInfoObject()
|
|
|
|
info.color = "1, 1, b, 1"
|
|
|
|
glyphSet = self.makeGlyphSet()
|
|
|
|
self.assertRaises(GlifLibError, glyphSet.writeLayerInfo, info)
|
|
|
|
info = TestLayerInfoObject()
|
|
|
|
info.color = "1, 1, 1, a"
|
|
|
|
glyphSet = self.makeGlyphSet()
|
|
|
|
self.assertRaises(GlifLibError, glyphSet.writeLayerInfo, info)
|
|
|
|
## too many parts
|
|
|
|
info = TestLayerInfoObject()
|
|
|
|
info.color = "1, 0, 0, 0, 0"
|
|
|
|
glyphSet = self.makeGlyphSet()
|
|
|
|
self.assertRaises(GlifLibError, glyphSet.writeLayerInfo, info)
|
|
|
|
## < 0 in each position
|
|
|
|
info = TestLayerInfoObject()
|
|
|
|
info.color = "-1, 0, 0, 0"
|
|
|
|
glyphSet = self.makeGlyphSet()
|
|
|
|
self.assertRaises(GlifLibError, glyphSet.writeLayerInfo, info)
|
|
|
|
info = TestLayerInfoObject()
|
|
|
|
info.color = "0, -1, 0, 0"
|
|
|
|
glyphSet = self.makeGlyphSet()
|
|
|
|
self.assertRaises(GlifLibError, glyphSet.writeLayerInfo, info)
|
|
|
|
info = TestLayerInfoObject()
|
|
|
|
info.color = "0, 0, -1, 0"
|
|
|
|
glyphSet = self.makeGlyphSet()
|
|
|
|
self.assertRaises(GlifLibError, glyphSet.writeLayerInfo, info)
|
|
|
|
info = TestLayerInfoObject()
|
|
|
|
info.color = "0, 0, 0, -1"
|
|
|
|
glyphSet = self.makeGlyphSet()
|
|
|
|
self.assertRaises(GlifLibError, glyphSet.writeLayerInfo, info)
|
|
|
|
## > 1 in each position
|
|
|
|
info = TestLayerInfoObject()
|
|
|
|
info.color = "2, 0, 0, 0"
|
|
|
|
glyphSet = self.makeGlyphSet()
|
|
|
|
self.assertRaises(GlifLibError, glyphSet.writeLayerInfo, info)
|
|
|
|
info = TestLayerInfoObject()
|
|
|
|
info.color = "0, 2, 0, 0"
|
|
|
|
glyphSet = self.makeGlyphSet()
|
|
|
|
self.assertRaises(GlifLibError, glyphSet.writeLayerInfo, info)
|
|
|
|
info = TestLayerInfoObject()
|
|
|
|
info.color = "0, 0, 2, 0"
|
|
|
|
glyphSet = self.makeGlyphSet()
|
|
|
|
self.assertRaises(GlifLibError, glyphSet.writeLayerInfo, info)
|
|
|
|
info = TestLayerInfoObject()
|
|
|
|
info.color = "0, 0, 0, 2"
|
|
|
|
glyphSet = self.makeGlyphSet()
|
|
|
|
self.assertRaises(GlifLibError, glyphSet.writeLayerInfo, info)
|