class ReadUFOFormatVersion1TestCase(unittest.TestCase):

	def setUpFont(self, doInfo=False, doKerning=False, doGroups=False, doLib=False, doFeatures=False):
		self.font = NewFont()
		self.ufoPath = ufoPath1
		self.font.readUFO(ufoPath1, doInfo=doInfo, doKerning=doKerning, doGroups=doGroups, doLib=doLib, doFeatures=doFeatures)
		self.font.update()

	def tearDownFont(self):
		self.font.close()
		self.font = None

	def compareToUFO(self, doInfo=True, doKerning=True, doGroups=True, doLib=True, doFeatures=True):
		reader = UFOReader(self.ufoPath)
		results = {}
		if doInfo:
			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
		if doKerning:
			kerning = self.font.kerning.asDict()
			expectedKerning = reader.readKerning()
			results["kerning"] = expectedKerning == kerning
		if doGroups:
			groups = dict(self.font.groups)
			expectedGroups = reader.readGroups()
			results["groups"] = expectedGroups == groups
		if doFeatures:
			features = self.font.features.text
			expectedFeatures = expectedFormatVersion1Features
			# FontLab likes to add lines to the features, so skip blank lines.
			features = [line for line in features.splitlines() if line]
			expectedFeatures = [line for line in expectedFeatures.splitlines() if line]
			results["features"] = expectedFeatures == features
		if doLib:
			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(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)
		info = self.font.info
		for attr, expectedValue in expectedFontInfo1To2Conversion.items():
			writtenValue = getattr(info, attr)
			self.assertEqual((attr, expectedValue), (attr, writtenValue))
		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()
Beispiel #2
0
class ReadUFOFormatVersion1TestCase(unittest.TestCase):
    def setUpFont(self,
                  doInfo=False,
                  doKerning=False,
                  doGroups=False,
                  doLib=False,
                  doFeatures=False):
        self.font = NewFont()
        self.ufoPath = ufoPath1
        self.font.readUFO(ufoPath1,
                          doInfo=doInfo,
                          doKerning=doKerning,
                          doGroups=doGroups,
                          doLib=doLib,
                          doFeatures=doFeatures)
        self.font.update()

    def tearDownFont(self):
        self.font.close()
        self.font = None

    def compareToUFO(self,
                     doInfo=True,
                     doKerning=True,
                     doGroups=True,
                     doLib=True,
                     doFeatures=True):
        reader = UFOReader(self.ufoPath)
        results = {}
        if doInfo:
            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
        if doKerning:
            kerning = self.font.kerning.asDict()
            expectedKerning = reader.readKerning()
            results["kerning"] = expectedKerning == kerning
        if doGroups:
            groups = dict(self.font.groups)
            expectedGroups = reader.readGroups()
            results["groups"] = expectedGroups == groups
        if doFeatures:
            features = self.font.features.text
            expectedFeatures = expectedFormatVersion1Features
            # FontLab likes to add lines to the features, so skip blank lines.
            features = [line for line in features.splitlines() if line]
            expectedFeatures = [
                line for line in expectedFeatures.splitlines() if line
            ]
            results["features"] = expectedFeatures == features
        if doLib:
            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(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)
        info = self.font.info
        for attr, expectedValue in expectedFontInfo1To2Conversion.items():
            writtenValue = getattr(info, attr)
            self.assertEqual((attr, expectedValue), (attr, writtenValue))
        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()
class ReadUFOFormatVersion2TestCase(unittest.TestCase):

	def setUpFont(self, doInfo=False, doKerning=False, doGroups=False, doLib=False, doFeatures=False):
		self.font = NewFont()
		self.ufoPath = ufoPath2
		self.font.readUFO(ufoPath2, doInfo=doInfo, doKerning=doKerning, doGroups=doGroups, doLib=doLib, doFeatures=doFeatures)
		self.font.update()

	def tearDownFont(self):
		self.font.close()
		self.font = None

	def compareToUFO(self, doInfo=True, doKerning=True, doGroups=True, doLib=True, doFeatures=True):
		reader = UFOReader(self.ufoPath)
		results = {}
		if doInfo:
			infoMatches = True
			info = self.font.info
			for attr, expectedValue in fontInfoVersion2.items():
				# cheat by skipping attrs that aren't supported
				if info._ufoToFLAttrMapping[attr]["nakedAttribute"] is None:
					continue
				writtenValue = getattr(info, attr)
				if expectedValue != writtenValue:
					infoMatches = False
					break
			results["info"]= infoMatches
		if doKerning:
			kerning = self.font.kerning.asDict()
			expectedKerning = reader.readKerning()
			results["kerning"] = expectedKerning == kerning
		if doGroups:
			groups = dict(self.font.groups)
			expectedGroups = reader.readGroups()
			results["groups"] = expectedGroups == groups
		if doFeatures:
			features = self.font.features.text
			expectedFeatures = reader.readFeatures()
			results["features"] = expectedFeatures == features
		if doLib:
			lib = dict(self.font.lib)
			expectedLib = reader.readLib()
			results["lib"] = expectedLib == lib
		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)
		info = self.font.info
		for attr, expectedValue in fontInfoVersion2.items():
			# cheat by skipping attrs that aren't supported
			if info._ufoToFLAttrMapping[attr]["nakedAttribute"] is None:
				continue
			writtenValue = getattr(info, attr)
			self.assertEqual((attr, expectedValue), (attr, writtenValue))
		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()
Beispiel #4
0
class ReadUFOFormatVersion2TestCase(unittest.TestCase):
    def setUpFont(self,
                  doInfo=False,
                  doKerning=False,
                  doGroups=False,
                  doLib=False,
                  doFeatures=False):
        self.font = NewFont()
        self.ufoPath = ufoPath2
        self.font.readUFO(ufoPath2,
                          doInfo=doInfo,
                          doKerning=doKerning,
                          doGroups=doGroups,
                          doLib=doLib,
                          doFeatures=doFeatures)
        self.font.update()

    def tearDownFont(self):
        self.font.close()
        self.font = None

    def compareToUFO(self,
                     doInfo=True,
                     doKerning=True,
                     doGroups=True,
                     doLib=True,
                     doFeatures=True):
        reader = UFOReader(self.ufoPath)
        results = {}
        if doInfo:
            infoMatches = True
            info = self.font.info
            for attr, expectedValue in fontInfoVersion2.items():
                # cheat by skipping attrs that aren't supported
                if info._ufoToFLAttrMapping[attr]["nakedAttribute"] is None:
                    continue
                writtenValue = getattr(info, attr)
                if expectedValue != writtenValue:
                    infoMatches = False
                    break
            results["info"] = infoMatches
        if doKerning:
            kerning = self.font.kerning.asDict()
            expectedKerning = reader.readKerning()
            results["kerning"] = expectedKerning == kerning
        if doGroups:
            groups = dict(self.font.groups)
            expectedGroups = reader.readGroups()
            results["groups"] = expectedGroups == groups
        if doFeatures:
            features = self.font.features.text
            expectedFeatures = reader.readFeatures()
            results["features"] = expectedFeatures == features
        if doLib:
            lib = dict(self.font.lib)
            expectedLib = reader.readLib()
            results["lib"] = expectedLib == lib
        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)
        info = self.font.info
        for attr, expectedValue in fontInfoVersion2.items():
            # cheat by skipping attrs that aren't supported
            if info._ufoToFLAttrMapping[attr]["nakedAttribute"] is None:
                continue
            writtenValue = getattr(info, attr)
            self.assertEqual((attr, expectedValue), (attr, writtenValue))
        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()