Exemple #1
0
 def setUpFont(self, doInfo=False, doKerning=False, doGroups=False):
     self.dstDir = tempfile.mktemp()
     os.mkdir(self.dstDir)
     self.font = OpenFont(vfbPath)
     self.font.writeUFO(self.dstDir,
                        doInfo=doInfo,
                        doKerning=doKerning,
                        doGroups=doGroups,
                        formatVersion=1)
     self.font.close()
Exemple #2
0
 def setUpFont(self,
               doInfo=False,
               doKerning=False,
               doGroups=False,
               doLib=False,
               doFeatures=False):
     self.dstDir = tempfile.mktemp()
     os.mkdir(self.dstDir)
     self.font = OpenFont(vfbPath)
     self.font.writeUFO(self.dstDir,
                        doInfo=doInfo,
                        doKerning=doKerning,
                        doGroups=doGroups,
                        doLib=doLib,
                        doFeatures=doFeatures)
     self.font.close()
	def setUpFont(self, doInfo=False, doKerning=False, doGroups=False, doLib=False, doFeatures=False):
		self.dstDir = tempfile.mktemp()
		os.mkdir(self.dstDir)
		self.font = OpenFont(vfbPath)
		self.font.writeUFO(self.dstDir, doInfo=doInfo, doKerning=doKerning, doGroups=doGroups, doLib=doLib, doFeatures=doFeatures)
		self.font.close()
class WriteUFOFormatVersion2TestCase(unittest.TestCase):

	def setUpFont(self, doInfo=False, doKerning=False, doGroups=False, doLib=False, doFeatures=False):
		self.dstDir = tempfile.mktemp()
		os.mkdir(self.dstDir)
		self.font = OpenFont(vfbPath)
		self.font.writeUFO(self.dstDir, doInfo=doInfo, doKerning=doKerning, doGroups=doGroups, doLib=doLib, doFeatures=doFeatures)
		self.font.close()

	def tearDownFont(self):
		shutil.rmtree(self.dstDir)

	def compareToUFO(self, doInfo=True, doKerning=True, doGroups=True, doLib=True, doFeatures=True):
		readerExpected = UFOReader(ufoPath2)
		readerWritten = UFOReader(self.dstDir)
		results = {}
		if doInfo:
			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:
				dummyFont = NewFont()
				_ufoToFLAttrMapping = dict(dummyFont.info._ufoToFLAttrMapping)
				dummyFont.close()
				expected = readPlist(expectedPath)
				written = readPlist(writtenPath)
				for attr, expectedValue in expected.items():
					# cheat by skipping attrs that aren't supported
					if _ufoToFLAttrMapping[attr]["nakedAttribute"] is None:
						continue
					if expectedValue != written[attr]:
						matches = False
						break
			results["info"] = matches
		if doKerning:
			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
		if doGroups:
			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
		if doFeatures:
			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
		if doLib:
			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:
				# the test file doesn't have the glyph order
				# so purge it from the written
				writtenLib = readPlist(writtenPath)
				del writtenLib["org.robofab.glyphOrder"]
				matches = readPlist(expectedPath) == writtenLib
			results["lib"] = matches
		return results

	def testFull(self):
		self.setUpFont(doInfo=True, doKerning=True, doGroups=True, doFeatures=True, doLib=True)
		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(doInfo=True)
		otherResults = self.compareToUFO(doInfo=False)
		self.assertEqual(otherResults["kerning"], False)
		self.assertEqual(otherResults["groups"], False)
		self.assertEqual(otherResults["features"], False)
		self.assertEqual(otherResults["lib"], False)
		expectedPath = os.path.join(ufoPath2, "fontinfo.plist")
		writtenPath = os.path.join(self.dstDir, "fontinfo.plist")
		expected = readPlist(expectedPath)
		written = readPlist(writtenPath)
		dummyFont = NewFont()
		_ufoToFLAttrMapping = dict(dummyFont.info._ufoToFLAttrMapping)
		dummyFont.close()
		for attr, expectedValue in expected.items():
			# cheat by skipping attrs that aren't supported
			if _ufoToFLAttrMapping[attr]["nakedAttribute"] is None:
				continue
			self.assertEqual((attr, expectedValue), (attr, written[attr]))
		self.tearDownFont()

	def testFeatures(self):
		self.setUpFont(doFeatures=True)
		otherResults = self.compareToUFO()
		self.assertEqual(otherResults["info"], False)
		self.assertEqual(otherResults["kerning"], False)
		self.assertEqual(otherResults["groups"], False)
		self.assertEqual(otherResults["features"], True)
		self.assertEqual(otherResults["lib"], False)
		self.tearDownFont()

	def testKerning(self):
		self.setUpFont(doKerning=True)
		otherResults = self.compareToUFO()
		self.assertEqual(otherResults["info"], False)
		self.assertEqual(otherResults["kerning"], True)
		self.assertEqual(otherResults["groups"], False)
		self.assertEqual(otherResults["features"], False)
		self.assertEqual(otherResults["lib"], False)
		self.tearDownFont()

	def testGroups(self):
		self.setUpFont(doGroups=True)
		otherResults = self.compareToUFO()
		self.assertEqual(otherResults["info"], False)
		self.assertEqual(otherResults["kerning"], False)
		self.assertEqual(otherResults["groups"], True)
		self.assertEqual(otherResults["features"], False)
		self.assertEqual(otherResults["lib"], False)
		self.tearDownFont()

	def testLib(self):
		self.setUpFont(doLib=True)
		otherResults = self.compareToUFO()
		self.assertEqual(otherResults["info"], False)
		self.assertEqual(otherResults["kerning"], False)
		self.assertEqual(otherResults["groups"], False)
		self.assertEqual(otherResults["features"], False)
		self.assertEqual(otherResults["lib"], True)
		self.tearDownFont()
	def setUpFont(self, doInfo=False, doKerning=False, doGroups=False):
		self.dstDir = tempfile.mktemp()
		os.mkdir(self.dstDir)
		self.font = OpenFont(vfbPath)
		self.font.writeUFO(self.dstDir, doInfo=doInfo, doKerning=doKerning, doGroups=doGroups, formatVersion=1)
		self.font.close()
class WriteUFOFormatVersion1TestCase(unittest.TestCase):

	def setUpFont(self, doInfo=False, doKerning=False, doGroups=False):
		self.dstDir = tempfile.mktemp()
		os.mkdir(self.dstDir)
		self.font = OpenFont(vfbPath)
		self.font.writeUFO(self.dstDir, doInfo=doInfo, doKerning=doKerning, doGroups=doGroups, formatVersion=1)
		self.font.close()

	def tearDownFont(self):
		shutil.rmtree(self.dstDir)

	def compareToUFO(self, doInfo=True, doKerning=True, doGroups=True, doLib=True, doFeatures=True):
		readerExpected = UFOReader(ufoPath1)
		readerWritten = UFOReader(self.dstDir)
		results = {}
		if doInfo:
			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[attr]:
						matches = False
						break
			results["info"] = matches
		if doKerning:
			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
		if doGroups:
			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
		if doFeatures:
			matches = True
			featuresPath = os.path.join(self.dstDir, "features.fea")
			libPath = os.path.join(self.dstDir, "lib.plist")
			if os.path.exists(featuresPath):
				matches = False
			else:
				fontLib = readPlist(libPath)
				writtenText = [fontLib.get("org.robofab.opentype.classes", "")]
				features = fontLib.get("org.robofab.opentype.features", {})
				featureOrder= fontLib.get("org.robofab.opentype.featureorder", [])
				for featureName in featureOrder:
					writtenText.append(features.get(featureName, ""))
				writtenText = "\n".join(writtenText)
				# FontLab likes to add lines to the features, so skip blank lines.
				expectedText = [line for line in expectedFormatVersion1Features.splitlines() if line]
				writtenText = [line for line in writtenText.splitlines() if line]
				matches = "\n".join(expectedText) == "\n".join(writtenText)
			results["features"] = matches
		if doLib:
			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:
				# the test file doesn't have the glyph order
				# so purge it from the written
				writtenLib = readPlist(writtenPath)
				del writtenLib["org.robofab.glyphOrder"]
				matches = readPlist(expectedPath) == writtenLib
			results["lib"] = matches
		return results

	def testFull(self):
		self.setUpFont(doInfo=True, doKerning=True, doGroups=True)
		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(doInfo=True)
		otherResults = self.compareToUFO(doInfo=False)
		self.assertEqual(otherResults["kerning"], False)
		self.assertEqual(otherResults["groups"], False)
		expectedPath = os.path.join(ufoPath1, "fontinfo.plist")
		writtenPath = os.path.join(self.dstDir, "fontinfo.plist")
		expected = readPlist(expectedPath)
		written = readPlist(writtenPath)
		for attr, expectedValue in expected.items():
			self.assertEqual((attr, expectedValue), (attr, written[attr]))
		self.tearDownFont()

	def testFeatures(self):
		self.setUpFont()
		otherResults = self.compareToUFO()
		self.assertEqual(otherResults["info"], False)
		self.assertEqual(otherResults["kerning"], False)
		self.assertEqual(otherResults["groups"], False)
		self.assertEqual(otherResults["features"], True)
		self.tearDownFont()

	def testKerning(self):
		self.setUpFont(doKerning=True)
		otherResults = self.compareToUFO()
		self.assertEqual(otherResults["info"], False)
		self.assertEqual(otherResults["kerning"], True)
		self.assertEqual(otherResults["groups"], False)
		self.tearDownFont()

	def testGroups(self):
		self.setUpFont(doGroups=True)
		otherResults = self.compareToUFO()
		self.assertEqual(otherResults["info"], False)
		self.assertEqual(otherResults["kerning"], False)
		self.assertEqual(otherResults["groups"], True)
		self.tearDownFont()

	def testLib(self):
		self.setUpFont()
		otherResults = self.compareToUFO()
		self.assertEqual(otherResults["info"], False)
		self.assertEqual(otherResults["kerning"], False)
		self.assertEqual(otherResults["groups"], False)
		self.assertEqual(otherResults["lib"], True)
		self.tearDownFont()
Exemple #7
0
class WriteUFOFormatVersion2TestCase(unittest.TestCase):
    def setUpFont(self,
                  doInfo=False,
                  doKerning=False,
                  doGroups=False,
                  doLib=False,
                  doFeatures=False):
        self.dstDir = tempfile.mktemp()
        os.mkdir(self.dstDir)
        self.font = OpenFont(vfbPath)
        self.font.writeUFO(self.dstDir,
                           doInfo=doInfo,
                           doKerning=doKerning,
                           doGroups=doGroups,
                           doLib=doLib,
                           doFeatures=doFeatures)
        self.font.close()

    def tearDownFont(self):
        shutil.rmtree(self.dstDir)

    def compareToUFO(self,
                     doInfo=True,
                     doKerning=True,
                     doGroups=True,
                     doLib=True,
                     doFeatures=True):
        readerExpected = UFOReader(ufoPath2)
        readerWritten = UFOReader(self.dstDir)
        results = {}
        if doInfo:
            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:
                dummyFont = NewFont()
                _ufoToFLAttrMapping = dict(dummyFont.info._ufoToFLAttrMapping)
                dummyFont.close()
                expected = readPlist(expectedPath)
                written = readPlist(writtenPath)
                for attr, expectedValue in expected.items():
                    # cheat by skipping attrs that aren't supported
                    if _ufoToFLAttrMapping[attr]["nakedAttribute"] is None:
                        continue
                    if expectedValue != written[attr]:
                        matches = False
                        break
            results["info"] = matches
        if doKerning:
            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
        if doGroups:
            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
        if doFeatures:
            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
        if doLib:
            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:
                # the test file doesn't have the glyph order
                # so purge it from the written
                writtenLib = readPlist(writtenPath)
                del writtenLib["org.robofab.glyphOrder"]
                matches = readPlist(expectedPath) == writtenLib
            results["lib"] = matches
        return results

    def testFull(self):
        self.setUpFont(doInfo=True,
                       doKerning=True,
                       doGroups=True,
                       doFeatures=True,
                       doLib=True)
        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(doInfo=True)
        otherResults = self.compareToUFO(doInfo=False)
        self.assertEqual(otherResults["kerning"], False)
        self.assertEqual(otherResults["groups"], False)
        self.assertEqual(otherResults["features"], False)
        self.assertEqual(otherResults["lib"], False)
        expectedPath = os.path.join(ufoPath2, "fontinfo.plist")
        writtenPath = os.path.join(self.dstDir, "fontinfo.plist")
        expected = readPlist(expectedPath)
        written = readPlist(writtenPath)
        dummyFont = NewFont()
        _ufoToFLAttrMapping = dict(dummyFont.info._ufoToFLAttrMapping)
        dummyFont.close()
        for attr, expectedValue in expected.items():
            # cheat by skipping attrs that aren't supported
            if _ufoToFLAttrMapping[attr]["nakedAttribute"] is None:
                continue
            self.assertEqual((attr, expectedValue), (attr, written[attr]))
        self.tearDownFont()

    def testFeatures(self):
        self.setUpFont(doFeatures=True)
        otherResults = self.compareToUFO()
        self.assertEqual(otherResults["info"], False)
        self.assertEqual(otherResults["kerning"], False)
        self.assertEqual(otherResults["groups"], False)
        self.assertEqual(otherResults["features"], True)
        self.assertEqual(otherResults["lib"], False)
        self.tearDownFont()

    def testKerning(self):
        self.setUpFont(doKerning=True)
        otherResults = self.compareToUFO()
        self.assertEqual(otherResults["info"], False)
        self.assertEqual(otherResults["kerning"], True)
        self.assertEqual(otherResults["groups"], False)
        self.assertEqual(otherResults["features"], False)
        self.assertEqual(otherResults["lib"], False)
        self.tearDownFont()

    def testGroups(self):
        self.setUpFont(doGroups=True)
        otherResults = self.compareToUFO()
        self.assertEqual(otherResults["info"], False)
        self.assertEqual(otherResults["kerning"], False)
        self.assertEqual(otherResults["groups"], True)
        self.assertEqual(otherResults["features"], False)
        self.assertEqual(otherResults["lib"], False)
        self.tearDownFont()

    def testLib(self):
        self.setUpFont(doLib=True)
        otherResults = self.compareToUFO()
        self.assertEqual(otherResults["info"], False)
        self.assertEqual(otherResults["kerning"], False)
        self.assertEqual(otherResults["groups"], False)
        self.assertEqual(otherResults["features"], False)
        self.assertEqual(otherResults["lib"], True)
        self.tearDownFont()
Exemple #8
0
class WriteUFOFormatVersion1TestCase(unittest.TestCase):
    def setUpFont(self, doInfo=False, doKerning=False, doGroups=False):
        self.dstDir = tempfile.mktemp()
        os.mkdir(self.dstDir)
        self.font = OpenFont(vfbPath)
        self.font.writeUFO(self.dstDir,
                           doInfo=doInfo,
                           doKerning=doKerning,
                           doGroups=doGroups,
                           formatVersion=1)
        self.font.close()

    def tearDownFont(self):
        shutil.rmtree(self.dstDir)

    def compareToUFO(self,
                     doInfo=True,
                     doKerning=True,
                     doGroups=True,
                     doLib=True,
                     doFeatures=True):
        readerExpected = UFOReader(ufoPath1)
        readerWritten = UFOReader(self.dstDir)
        results = {}
        if doInfo:
            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[attr]:
                        matches = False
                        break
            results["info"] = matches
        if doKerning:
            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
        if doGroups:
            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
        if doFeatures:
            matches = True
            featuresPath = os.path.join(self.dstDir, "features.fea")
            libPath = os.path.join(self.dstDir, "lib.plist")
            if os.path.exists(featuresPath):
                matches = False
            else:
                fontLib = readPlist(libPath)
                writtenText = [fontLib.get("org.robofab.opentype.classes", "")]
                features = fontLib.get("org.robofab.opentype.features", {})
                featureOrder = fontLib.get("org.robofab.opentype.featureorder",
                                           [])
                for featureName in featureOrder:
                    writtenText.append(features.get(featureName, ""))
                writtenText = "\n".join(writtenText)
                # FontLab likes to add lines to the features, so skip blank lines.
                expectedText = [
                    line
                    for line in expectedFormatVersion1Features.splitlines()
                    if line
                ]
                writtenText = [
                    line for line in writtenText.splitlines() if line
                ]
                matches = "\n".join(expectedText) == "\n".join(writtenText)
            results["features"] = matches
        if doLib:
            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:
                # the test file doesn't have the glyph order
                # so purge it from the written
                writtenLib = readPlist(writtenPath)
                del writtenLib["org.robofab.glyphOrder"]
                matches = readPlist(expectedPath) == writtenLib
            results["lib"] = matches
        return results

    def testFull(self):
        self.setUpFont(doInfo=True, doKerning=True, doGroups=True)
        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(doInfo=True)
        otherResults = self.compareToUFO(doInfo=False)
        self.assertEqual(otherResults["kerning"], False)
        self.assertEqual(otherResults["groups"], False)
        expectedPath = os.path.join(ufoPath1, "fontinfo.plist")
        writtenPath = os.path.join(self.dstDir, "fontinfo.plist")
        expected = readPlist(expectedPath)
        written = readPlist(writtenPath)
        for attr, expectedValue in expected.items():
            self.assertEqual((attr, expectedValue), (attr, written[attr]))
        self.tearDownFont()

    def testFeatures(self):
        self.setUpFont()
        otherResults = self.compareToUFO()
        self.assertEqual(otherResults["info"], False)
        self.assertEqual(otherResults["kerning"], False)
        self.assertEqual(otherResults["groups"], False)
        self.assertEqual(otherResults["features"], True)
        self.tearDownFont()

    def testKerning(self):
        self.setUpFont(doKerning=True)
        otherResults = self.compareToUFO()
        self.assertEqual(otherResults["info"], False)
        self.assertEqual(otherResults["kerning"], True)
        self.assertEqual(otherResults["groups"], False)
        self.tearDownFont()

    def testGroups(self):
        self.setUpFont(doGroups=True)
        otherResults = self.compareToUFO()
        self.assertEqual(otherResults["info"], False)
        self.assertEqual(otherResults["kerning"], False)
        self.assertEqual(otherResults["groups"], True)
        self.tearDownFont()

    def testLib(self):
        self.setUpFont()
        otherResults = self.compareToUFO()
        self.assertEqual(otherResults["info"], False)
        self.assertEqual(otherResults["kerning"], False)
        self.assertEqual(otherResults["groups"], False)
        self.assertEqual(otherResults["lib"], True)
        self.tearDownFont()