Пример #1
0
 def testReverseContents(self):
     gset = GlyphSet(GLYPHSETDIR)
     d = {}
     for k, v in gset.getReverseContents().items():
         d[v] = k
     org = {}
     for k, v in gset.contents.items():
         org[k] = v.lower()
     self.assertEqual(d, org)
Пример #2
0
	def testReverseContents(self):
		gset = GlyphSet(GLYPHSETDIR)
		d = {}
		for k, v in gset.getReverseContents().items():
			d[v] = k
		org = {}
		for k, v in gset.contents.items():
			org[k] = v.lower()
		self.assertEqual(d, org)
Пример #3
0
 def testGetUnicodes(self):
     src = GlyphSet(GLYPHSETDIR)
     unicodes = src.getUnicodes()
     for glyphName in src.keys():
         g = src[glyphName]
         g.drawPoints(None)  # load attrs
         if not hasattr(g, "unicodes"):
             self.assertEqual(unicodes[glyphName], [])
         else:
             self.assertEqual(g.unicodes, unicodes[glyphName])
Пример #4
0
	def testGetUnicodes(self):
		src = GlyphSet(GLYPHSETDIR)
		unicodes = src.getUnicodes()
		for glyphName in src.keys():
			g = src[glyphName]
			g.drawPoints(None)  # load attrs
			if not hasattr(g, "unicodes"):
				self.assertEqual(unicodes[glyphName], [])
			else:
				self.assertEqual(g.unicodes, unicodes[glyphName])
Пример #5
0
 def testGuessSmoothPen(self):
     glyphSet = GlyphSet(getDemoFontGlyphSetPath())
     for name in glyphSet.keys():
         digestPen = DigestPointPen()
         glyphSet[name].drawPoints(digestPen)
         digest1 = digestPen.getDigest()
         digestPen = DigestPointPen()
         pen = GuessSmoothPointPen(digestPen)
         glyphSet[name].drawPoints(pen)
         digest2 = digestPen.getDigest()
         self.assertEqual(digest1, digest2)
Пример #6
0
	def testGuessSmoothPen(self):
		glyphSet = GlyphSet(getDemoFontGlyphSetPath())
		for name in glyphSet.keys():
			digestPen = DigestPointPen()
			glyphSet[name].drawPoints(digestPen)
			digest1 = digestPen.getDigest()
			digestPen = DigestPointPen()
			pen = GuessSmoothPointPen(digestPen)
			glyphSet[name].drawPoints(pen)
			digest2 = digestPen.getDigest()
			self.assertEqual(digest1, digest2)
Пример #7
0
	def testCustomFileNamingScheme(self):
		def myGlyphNameToFileName(glyphName, glyphSet):
			return "prefix" + glyphNameToFileName(glyphName, glyphSet)
		src = GlyphSet(GLYPHSETDIR, validateRead=True, validateWrite=True)
		dst = GlyphSet(self.dstDir, myGlyphNameToFileName, validateRead=True, validateWrite=True)
		for glyphName in src.keys():
			g = src[glyphName]
			g.drawPoints(None)  # load attrs
			dst.writeGlyph(glyphName, g, g.drawPoints)
		d = {}
		for k, v in src.contents.items():
			d[k] = "prefix" + v
		self.assertEqual(d, dst.contents)
Пример #8
0
 def testRoundTrip(self):
     import difflib
     srcDir = GLYPHSETDIR
     dstDir = self.dstDir
     src = GlyphSet(srcDir, ufoFormatVersion=2)
     dst = GlyphSet(dstDir, ufoFormatVersion=2)
     for glyphName in src.keys():
         g = src[glyphName]
         g.drawPoints(None)  # load attrs
         dst.writeGlyph(glyphName, g, g.drawPoints)
     # compare raw file data:
     for glyphName in sorted(src.keys()):
         fileName = src.contents[glyphName]
         with open(os.path.join(srcDir, fileName), "r") as f:
             org = f.read()
         with open(os.path.join(dstDir, fileName), "r") as f:
             new = f.read()
         added = []
         removed = []
         for line in difflib.unified_diff(org.split("\n"), new.split("\n")):
             if line.startswith("+ "):
                 added.append(line[1:])
             elif line.startswith("- "):
                 removed.append(line[1:])
         self.assertEqual(
             added, removed,
             "%s.glif file differs after round tripping" % glyphName)
Пример #9
0
 def run_ufolib_import_validation(self):
     """
     ufoLib GlyphSet instantiation validates the contents.plist file
     :return: (list) list of test failure Result objects
     """
     ss = StdStreamer(self.ufopath)
     for glyphs_dir in self.ufoobj.glyphsdir_list:
         res = Result(glyphs_dir[1])
         rel_dir_path = os.path.join(self.ufopath, glyphs_dir[1])
         try:
             # read contents.plist with ufoLib as GlyphSet instantiation
             # the ufoLib library performs type validations on values on read
             # glyphs_dir_list is a list of lists mapped to glyphs dir name, glyphs dir path
             GlyphSet(rel_dir_path,
                      ufoFormatVersion=self.ufoversion,
                      validateRead=True)  # test for raised exceptions
             res.test_failed = False
             ss.stream_result(res)
         except Exception as e:
             res.test_failed = True
             res.exit_failure = True  # mandatory file
             res.test_long_stdstream_string = "contents.plist in " + rel_dir_path + " failed ufoLib import test with error: " + str(
                 e)
             self.test_fail_list.append(res)
             ss.stream_result(res)
     return self.test_fail_list
Пример #10
0
	def testReverseContents2(self):
		src = GlyphSet(GLYPHSETDIR)
		dst = GlyphSet(self.dstDir)
		dstMap = dst.getReverseContents()
		self.assertEqual(dstMap, {})
		for glyphName in src.keys():
			g = src[glyphName]
			g.drawPoints(None)  # load attrs
			dst.writeGlyph(glyphName, g, g.drawPoints)
		self.assertNotEqual(dstMap, {})
		srcMap = dict(src.getReverseContents())  # copy
		self.assertEqual(dstMap, srcMap)
		del srcMap["a.glif"]
		dst.deleteGlyph("a")
		self.assertEqual(dstMap, srcMap)
Пример #11
0
 def testReversContourFromGlyphSet(self):
     glyphSet = GlyphSet(getDemoFontGlyphSetPath())
     digestPen = DigestPointPen()
     glyphSet["testglyph1"].drawPoints(digestPen)
     digest1 = digestPen.getDigest()
     digestPen = DigestPointPen()
     pen = ReverseContourPointPen(digestPen)
     glyphSet["testglyph1.reversed"].drawPoints(pen)
     digest2 = digestPen.getDigest()
     self.assertEqual(digest1, digest2)
Пример #12
0
	def testRoundTrip(self):
		import difflib
		srcDir = GLYPHSETDIR
		dstDir = self.dstDir
		src = GlyphSet(srcDir, ufoFormatVersion=2, validateRead=True, validateWrite=True)
		dst = GlyphSet(dstDir, ufoFormatVersion=2, validateRead=True, validateWrite=True)
		for glyphName in src.keys():
			g = src[glyphName]
			g.drawPoints(None)  # load attrs
			dst.writeGlyph(glyphName, g, g.drawPoints)
		# compare raw file data:
		for glyphName in sorted(src.keys()):
			fileName = src.contents[glyphName]
			with open(os.path.join(srcDir, fileName), "r") as f:
				org = f.read()
			with open(os.path.join(dstDir, fileName), "r") as f:
				new = f.read()
			added = []
			removed = []
			for line in difflib.unified_diff(
					org.split("\n"), new.split("\n")):
				if line.startswith("+ "):
					added.append(line[1:])
				elif line.startswith("- "):
					removed.append(line[1:])
			self.assertEqual(
				added, removed,
				"%s.glif file differs after round tripping" % glyphName)
Пример #13
0
    def run_ufolib_import_validation(self):
        """
        ufoLib GlyphSet.readLayerInfo method performs validations of layerinfo.plist file(s)
        :return: (list) list of test failure Result objects
        """
        ss = StdStreamer(self.ufopath)
        for glyphs_dir in self.ufoobj.glyphsdir_list:
            res = Result(glyphs_dir[1])
            rel_dir_path = os.path.join(self.ufopath, glyphs_dir[1])

            try:
                gs = GlyphSet(rel_dir_path, ufoFormatVersion=self.ufoversion)
                gs.readLayerInfo(self.layerinfo_obj)
                res.test_failed = False
                ss.stream_result(res)
            except Exception as e:
                res.test_failed = True
                res.test_long_stdstream_string = "layerinfo.plist in " + rel_dir_path + " failed ufoLib import test with error: " + str(
                    e)
                self.test_fail_list.append(res)
                ss.stream_result(res)
        return self.test_fail_list
Пример #14
0
def run_all_glif_validations(ufoobj):
    glyphsdir_path_list = ufoobj.get_glyphsdir_path_list()
    ufoversion = ufoobj.get_ufo_version()
    ss = StdStreamer(ufoobj.ufopath)
    test_error_list = []
    for glyphsdir in glyphsdir_path_list:  # for each directory that containts .glif files
        print(" ")
        sys.stdout.write(" - " + glyphsdir + "  ")
        sys.stdout.flush()
        res = Result(glyphsdir)
        try:
            gs = GlyphSet(glyphsdir, ufoFormatVersion=ufoversion, validateRead=True)   # create a ufoLib GlyphSet
            # do not report success for this, previous testing has passed this
        except Exception as e:
            res.test_failed = True
            res.test_long_stdstream_string = " Failed to read glif file paths from " + glyphsdir + ". Error: " + str(e)
            ss.stream_result(res)
            test_error_list.append(res)
            break  # break out loop as it was not possible to read the GlyphSet for this directory, gs not instantiated

        glif_count = 0  # reset glyphs directory .glif file counter
        for glyphname in gs.contents.keys():    # for each .glif file (read from glyph name in glyph set contents dict)
            res = Result(gs.contents[glyphname])
            try:
                go = GlifObj()
                gs.readGlyph(glyphname, glyphObject=go)   # read the glif file and perform ufoLib validations, requires the glyphObject for validations
                res.test_failed = False
                ss.stream_result(res)
                glif_count += 1
            except Exception as e:
                res.test_failed = True
                filename = os.path.join(glyphsdir, glyphNameToFileName(glyphname, None))
                res.test_long_stdstream_string = '{} (glyph "{}"): Test failed with error: {}'.format(filename, glyphname, e)
                ss.stream_result(res)
                test_error_list.append(res)
                glif_count += 1
        print("   " + str(glif_count) + " .glif tests completed")
    return test_error_list
Пример #15
0
 def testRoundTrip(self):
     srcDir = GLYPHSETDIR
     dstDir = self.dstDir
     src = GlyphSet(srcDir)
     dst = GlyphSet(dstDir)
     for glyphName in src.keys():
         g = src[glyphName]
         g.drawPoints(None)  # load attrs
         dst.writeGlyph(glyphName, g, g.drawPoints)
     # compare raw file data:
     for glyphName in src.keys():
         fileName = src.contents[glyphName]
         org = file(os.path.join(srcDir, fileName), READ_MODE).read()
         new = file(os.path.join(dstDir, fileName), READ_MODE).read()
         self.assertEqual(
             org, new,
             "%r .glif file differs after round tripping" % glyphName)
Пример #16
0
    def testCustomFileNamingScheme(self):
        def myGlyphNameToFileName(glyphName, glyphSet):
            return "prefix" + glyphNameToFileName(glyphName, glyphSet)

        src = GlyphSet(GLYPHSETDIR)
        dst = GlyphSet(self.dstDir, myGlyphNameToFileName)
        for glyphName in src.keys():
            g = src[glyphName]
            g.drawPoints(None)  # load attrs
            dst.writeGlyph(glyphName, g, g.drawPoints)
        d = {}
        for k, v in src.contents.items():
            d[k] = "prefix" + v
        self.assertEqual(d, dst.contents)
Пример #17
0
	def testRoundTrip(self):
		srcDir = GLYPHSETDIR
		dstDir = self.dstDir
		src = GlyphSet(srcDir)
		dst = GlyphSet(dstDir)
		for glyphName in src.keys():
			g = src[glyphName]
			g.drawPoints(None)  # load attrs
			dst.writeGlyph(glyphName, g, g.drawPoints)
		# compare raw file data:
		for glyphName in src.keys():
			fileName = src.contents[glyphName]
			org = file(os.path.join(srcDir, fileName), READ_MODE).read()
			new = file(os.path.join(dstDir, fileName), READ_MODE).read()
			self.assertEqual(org, new, "%r .glif file differs after round tripping" % glyphName)
Пример #18
0
import os
try:
    from ufoLib.glifLib import GlyphSet
except ImportError:
    from robofab.glifLib import GlyphSet
import pkg_resources

DATADIR = pkg_resources.resource_filename('cu2qu.test', 'data')
CUBIC_GLYPHS = GlyphSet(os.path.join(DATADIR, 'cubic'))
QUAD_GLYPHS = GlyphSet(os.path.join(DATADIR, 'quadratic'))

import unittest
# Python 3 renamed 'assertRaisesRegexp' to 'assertRaisesRegex', and fires
# deprecation warnings if a program uses the old name.
if not hasattr(unittest.TestCase, 'assertRaisesRegex'):
    unittest.TestCase.assertRaisesRegex = unittest.TestCase.assertRaisesRegexp
Пример #19
0
	def testShapesFromGlyphSet(self):
		glyphSet = GlyphSet(getDemoFontGlyphSetPath())
		for name in glyphSet.keys():
			self._doTest(glyphSet[name].drawPoints, name)
Пример #20
0
	def testRebuildContents(self):
		gset = GlyphSet(GLYPHSETDIR, validateRead=True, validateWrite=True)
		contents = gset.contents
		gset.rebuildContents()
		self.assertEqual(contents, gset.contents)
Пример #21
0
	def testRebuildContents(self):
		gset = GlyphSet(GLYPHSETDIR)
		contents = gset.contents
		gset.rebuildContents()
		self.assertEqual(contents, gset.contents)
Пример #22
0
 def testShapesFromGlyphSet(self):
     glyphSet = GlyphSet(getDemoFontGlyphSetPath())
     for name in glyphSet.keys():
         self._doTest(glyphSet[name].drawPoints, name)
Пример #23
0
 def testReverseContents2(self):
     src = GlyphSet(GLYPHSETDIR)
     dst = GlyphSet(self.dstDir)
     dstMap = dst.getReverseContents()
     self.assertEqual(dstMap, {})
     for glyphName in src.keys():
         g = src[glyphName]
         g.drawPoints(None)  # load attrs
         dst.writeGlyph(glyphName, g, g.drawPoints)
     self.assertNotEqual(dstMap, {})
     srcMap = dict(src.getReverseContents())  # copy
     self.assertEqual(dstMap, srcMap)
     del srcMap["a.glif"]
     dst.deleteGlyph("a")
     self.assertEqual(dstMap, srcMap)
Пример #24
0
 def testRebuildContents(self):
     gset = GlyphSet(GLYPHSETDIR)
     contents = gset.contents
     gset.rebuildContents()
     self.assertEqual(contents, gset.contents)
Пример #25
0
 def testRebuildContents(self):
     gset = GlyphSet(GLYPHSETDIR, validateRead=True, validateWrite=True)
     contents = gset.contents
     gset.rebuildContents()
     self.assertEqual(contents, gset.contents)