summaryrefslogtreecommitdiff
path: root/misc/pylib/robofab/test/test_noneLabUFOReadWrite.py
diff options
context:
space:
mode:
Diffstat (limited to 'misc/pylib/robofab/test/test_noneLabUFOReadWrite.py')
-rw-r--r--misc/pylib/robofab/test/test_noneLabUFOReadWrite.py321
1 files changed, 0 insertions, 321 deletions
diff --git a/misc/pylib/robofab/test/test_noneLabUFOReadWrite.py b/misc/pylib/robofab/test/test_noneLabUFOReadWrite.py
deleted file mode 100644
index 36dcc0582..000000000
--- a/misc/pylib/robofab/test/test_noneLabUFOReadWrite.py
+++ /dev/null
@@ -1,321 +0,0 @@
-import os
-import shutil
-import unittest
-import tempfile
-from robofab.plistlib import readPlist
-import robofab
-from robofab.test.testSupport import fontInfoVersion2, expectedFontInfo1To2Conversion, expectedFontInfo2To1Conversion
-from robofab.objects.objectsRF import NewFont, OpenFont
-from robofab.ufoLib import UFOReader
-
-ufoPath1 = os.path.dirname(robofab.__file__)
-ufoPath1 = os.path.dirname(ufoPath1)
-ufoPath1 = os.path.dirname(ufoPath1)
-ufoPath1 = os.path.join(ufoPath1, "TestData", "TestFont1 (UFO1).ufo")
-ufoPath2 = ufoPath1.replace("TestFont1 (UFO1).ufo", "TestFont1 (UFO2).ufo")
-
-# robofab should remove these from the lib after a load.
-removeFromFormatVersion1Lib = [
- "org.robofab.opentype.classes",
- "org.robofab.opentype.features",
- "org.robofab.opentype.featureorder",
- "org.robofab.postScriptHintData"
-]
-
-
-class ReadUFOFormatVersion1TestCase(unittest.TestCase):
-
- def setUpFont(self):
- self.font = OpenFont(ufoPath1)
- self.font.update()
-
- def tearDownFont(self):
- self.font.close()
- self.font = None
-
- def compareToUFO(self, doInfo=True):
- reader = UFOReader(ufoPath1)
- results = {}
- # info
- infoMatches = True
- info = self.font.info
- for attr, expectedValue in expectedFontInfo1To2Conversion.items():
- writtenValue = getattr(info, attr)
- if expectedValue != writtenValue:
- infoMatches = False
- break
- results["info"]= infoMatches
- # kerning
- kerning = self.font.kerning.asDict()
- expectedKerning = reader.readKerning()
- results["kerning"] = expectedKerning == kerning
- # groups
- groups = dict(self.font.groups)
- expectedGroups = reader.readGroups()
- results["groups"] = expectedGroups == groups
- # features
- features = self.font.features.text
- f = open(os.path.join(ufoPath2, "features.fea"), "r")
- expectedFeatures = f.read()
- f.close()
- match = True
- features = [line for line in features.splitlines() if line]
- expectedFeatures = [line for line in expectedFeatures.splitlines() if line]
- if expectedFeatures != features or reader.readFeatures() != "":
- match = False
- results["features"] = match
- # lib
- lib = dict(self.font.lib)
- expectedLib = reader.readLib()
- for key in removeFromFormatVersion1Lib:
- if key in expectedLib:
- del expectedLib[key]
- results["lib"] = expectedLib == lib
- return results
-
- def testFull(self):
- self.setUpFont()
- otherResults = self.compareToUFO()
- self.assertEqual(otherResults["info"], True)
- self.assertEqual(otherResults["kerning"], True)
- self.assertEqual(otherResults["groups"], True)
- self.assertEqual(otherResults["features"], True)
- self.assertEqual(otherResults["lib"], True)
- self.tearDownFont()
-
- def testInfo(self):
- self.setUpFont()
- info = self.font.info
- for attr, expectedValue in expectedFontInfo1To2Conversion.items():
- writtenValue = getattr(info, attr)
- self.assertEqual((attr, expectedValue), (attr, writtenValue))
- self.tearDownFont()
-
-
-class ReadUFOFormatVersion2TestCase(unittest.TestCase):
-
- def setUpFont(self):
- self.font = OpenFont(ufoPath2)
- self.font.update()
-
- def tearDownFont(self):
- self.font.close()
- self.font = None
-
- def compareToUFO(self, doInfo=True):
- reader = UFOReader(ufoPath2)
- results = {}
- # info
- infoMatches = True
- info = self.font.info
- for attr, expectedValue in fontInfoVersion2.items():
- writtenValue = getattr(info, attr)
- if expectedValue != writtenValue:
- infoMatches = False
- break
- results["info"]= infoMatches
- # kerning
- kerning = self.font.kerning.asDict()
- expectedKerning = reader.readKerning()
- results["kerning"] = expectedKerning == kerning
- # groups
- groups = dict(self.font.groups)
- expectedGroups = reader.readGroups()
- results["groups"] = expectedGroups == groups
- # features
- features = self.font.features.text
- expectedFeatures = reader.readFeatures()
- results["features"] = expectedFeatures == features
- # lib
- lib = dict(self.font.lib)
- expectedLib = reader.readLib()
- results["lib"] = expectedLib == lib
- return results
-
- def testFull(self):
- self.setUpFont()
- otherResults = self.compareToUFO()
- self.assertEqual(otherResults["info"], True)
- self.assertEqual(otherResults["kerning"], True)
- self.assertEqual(otherResults["groups"], True)
- self.assertEqual(otherResults["features"], True)
- self.assertEqual(otherResults["lib"], True)
- self.tearDownFont()
-
- def testInfo(self):
- self.setUpFont()
- info = self.font.info
- for attr, expectedValue in fontInfoVersion2.items():
- writtenValue = getattr(info, attr)
- self.assertEqual((attr, expectedValue), (attr, writtenValue))
- self.tearDownFont()
-
-
-class WriteUFOFormatVersion1TestCase(unittest.TestCase):
-
- def setUpFont(self):
- self.dstDir = tempfile.mktemp()
- os.mkdir(self.dstDir)
- self.font = OpenFont(ufoPath2)
- self.font.save(self.dstDir, formatVersion=1)
-
- def tearDownFont(self):
- shutil.rmtree(self.dstDir)
-
- def compareToUFO(self):
- readerExpected = UFOReader(ufoPath1)
- readerWritten = UFOReader(self.dstDir)
- results = {}
- # info
- matches = True
- expectedPath = os.path.join(ufoPath1, "fontinfo.plist")
- writtenPath = os.path.join(self.dstDir, "fontinfo.plist")
- if not os.path.exists(writtenPath):
- matches = False
- else:
- expected = readPlist(expectedPath)
- written = readPlist(writtenPath)
- for attr, expectedValue in expected.items():
- if expectedValue != written.get(attr):
- matches = False
- break
- results["info"] = matches
- # kerning
- matches = True
- expectedPath = os.path.join(ufoPath1, "kerning.plist")
- writtenPath = os.path.join(self.dstDir, "kerning.plist")
- if not os.path.exists(writtenPath):
- matches = False
- else:
- matches = readPlist(expectedPath) == readPlist(writtenPath)
- results["kerning"] = matches
- # groups
- matches = True
- expectedPath = os.path.join(ufoPath1, "groups.plist")
- writtenPath = os.path.join(self.dstDir, "groups.plist")
- if not os.path.exists(writtenPath):
- matches = False
- else:
- matches = readPlist(expectedPath) == readPlist(writtenPath)
- results["groups"] = matches
- # features
- matches = True
- expectedPath = os.path.join(ufoPath1, "features.fea")
- writtenPath = os.path.join(self.dstDir, "features.fea")
- if os.path.exists(writtenPath):
- matches = False
- results["features"] = matches
- # lib
- matches = True
- expectedPath = os.path.join(ufoPath1, "lib.plist")
- writtenPath = os.path.join(self.dstDir, "lib.plist")
- if not os.path.exists(writtenPath):
- matches = False
- else:
- writtenLib = readPlist(writtenPath)
- matches = readPlist(expectedPath) == writtenLib
- results["lib"] = matches
- return results
-
- def testFull(self):
- self.setUpFont()
- otherResults = self.compareToUFO()
- self.assertEqual(otherResults["info"], True)
- self.assertEqual(otherResults["kerning"], True)
- self.assertEqual(otherResults["groups"], True)
- self.assertEqual(otherResults["features"], True)
- self.assertEqual(otherResults["lib"], True)
- self.tearDownFont()
-
-
-class WriteUFOFormatVersion2TestCase(unittest.TestCase):
-
- def setUpFont(self):
- self.dstDir = tempfile.mktemp()
- os.mkdir(self.dstDir)
- self.font = OpenFont(ufoPath2)
- self.font.save(self.dstDir)
-
- def tearDownFont(self):
- shutil.rmtree(self.dstDir)
-
- def compareToUFO(self):
- readerExpected = UFOReader(ufoPath2)
- readerWritten = UFOReader(self.dstDir)
- results = {}
- # info
- matches = True
- expectedPath = os.path.join(ufoPath2, "fontinfo.plist")
- writtenPath = os.path.join(self.dstDir, "fontinfo.plist")
- if not os.path.exists(writtenPath):
- matches = False
- else:
- expected = readPlist(expectedPath)
- written = readPlist(writtenPath)
- for attr, expectedValue in expected.items():
- if expectedValue != written[attr]:
- matches = False
- break
- results["info"] = matches
- # kerning
- matches = True
- expectedPath = os.path.join(ufoPath2, "kerning.plist")
- writtenPath = os.path.join(self.dstDir, "kerning.plist")
- if not os.path.exists(writtenPath):
- matches = False
- else:
- matches = readPlist(expectedPath) == readPlist(writtenPath)
- results["kerning"] = matches
- # groups
- matches = True
- expectedPath = os.path.join(ufoPath2, "groups.plist")
- writtenPath = os.path.join(self.dstDir, "groups.plist")
- if not os.path.exists(writtenPath):
- matches = False
- else:
- matches = readPlist(expectedPath) == readPlist(writtenPath)
- results["groups"] = matches
- # features
- matches = True
- expectedPath = os.path.join(ufoPath2, "features.fea")
- writtenPath = os.path.join(self.dstDir, "features.fea")
- if not os.path.exists(writtenPath):
- matches = False
- else:
- f = open(expectedPath, "r")
- expectedText = f.read()
- f.close()
- f = open(writtenPath, "r")
- writtenText = f.read()
- f.close()
- # FontLab likes to add lines to the features, so skip blank lines.
- expectedText = [line for line in expectedText.splitlines() if line]
- writtenText = [line for line in writtenText.splitlines() if line]
- matches = "\n".join(expectedText) == "\n".join(writtenText)
- results["features"] = matches
- # lib
- matches = True
- expectedPath = os.path.join(ufoPath2, "lib.plist")
- writtenPath = os.path.join(self.dstDir, "lib.plist")
- if not os.path.exists(writtenPath):
- matches = False
- else:
- writtenLib = readPlist(writtenPath)
- matches = readPlist(expectedPath) == writtenLib
- results["lib"] = matches
- return results
-
- def testFull(self):
- self.setUpFont()
- otherResults = self.compareToUFO()
- self.assertEqual(otherResults["info"], True)
- self.assertEqual(otherResults["kerning"], True)
- self.assertEqual(otherResults["groups"], True)
- self.assertEqual(otherResults["features"], True)
- self.assertEqual(otherResults["lib"], True)
- self.tearDownFont()
-
-
-if __name__ == "__main__":
- from robofab.test.testSupport import runTests
- runTests()