summaryrefslogtreecommitdiffstats
path: root/tests/ufo/test_38_psfgenftml.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ufo/test_38_psfgenftml.py')
-rw-r--r--tests/ufo/test_38_psfgenftml.py75
1 files changed, 75 insertions, 0 deletions
diff --git a/tests/ufo/test_38_psfgenftml.py b/tests/ufo/test_38_psfgenftml.py
new file mode 100644
index 0000000..6c2483f
--- /dev/null
+++ b/tests/ufo/test_38_psfgenftml.py
@@ -0,0 +1,75 @@
+#!/usr/bin/env python
+''' Test of script named in testname below
+'''
+__url__ = 'http://github.com/silnrsi/pysilfont'
+__copyright__ = 'Copyright (c) 2018 SIL International (http://www.sil.org)'
+__license__ = 'Released under the MIT License (http://opensource.org/licenses/MIT)'
+__author__ = 'Bob Hallissy'
+
+import silfont.util
+import silfont.ftml_builder as FB
+
+# There is no one psfgenftml script -- each project will have its own. So here is what we'll use for testing:
+
+class testcommand(object):
+ argspec = [
+ ('ifont',{'help': 'Input UFO'}, {'type': 'infont'}),
+ ('output',{'help': 'Output file ftml in XML format', 'nargs': '?'}, {'type': 'outfile', 'def': '_out.ftml'}),
+ ('-i','--input',{'help': 'Glyph info csv file'}, {'type': 'incsv', 'def': 'glyph_data.csv'}),
+ ('-l','--log',{'help': 'Set log file name'}, {'type': 'outfile', 'def': '_ftml.log'}),
+ ]
+
+ @staticmethod
+ def doit(args):
+ logger = args.logger
+
+ # Read input csv
+ builder = FB.FTMLBuilder(logger, incsv = args.input, font = args.ifont)
+
+ # Initialize FTML document:
+ test = "ftml_builder test"
+ ftml = FB.FTML(test, logger)
+
+ # all chars that should be in the font:
+ ftml.startTestGroup('Encoded characters')
+ for uid in sorted(builder.uids()):
+ if uid < 32: continue
+ c = builder.char(uid)
+ # iterate over all permutations of feature settings that might affect this character:
+ for featlist in builder.permuteFeatures(uids = (uid,)):
+ ftml.setFeatures(featlist)
+ builder.render((uid,), ftml)
+ # Test one character with RTL enabled:
+ if uid == 67:
+ builder.render((uid,), ftml, rtl = True)
+ # Don't close test -- collect consecutive encoded chars in a single row
+ ftml.clearFeatures()
+ for langID in sorted(c.langs):
+ ftml.setLang(langID)
+ builder.render((uid,), ftml)
+ ftml.clearLang()
+
+ # Write the output ftml file
+ ftml.writeFile(args.output)
+
+testname = "psfgenftml"
+cl = testname + " -i tests/input/psfgenftml.csv -l local/testresults/ufo/psfgenftml.log " \
+ "tests/input/font-psf-test/source/PsfTest-Italic.ufo local/testresults/ufo/psfgenftml.ftml"
+outfont = None
+diffexts = [".ftml", ".log"]
+exp_errors = 0 # These may need updating if the test ufo is updated
+exp_warnings = 11 # The test ufo should have some errors/warnings to test the code!
+
+# Code after this can be the same for most tests; if needed to be different for a test remove this comment!
+
+def test_run():
+ result = silfont.util.test_run("UFO", cl, testcommand, outfont, exp_errors, exp_warnings)
+ assert result
+
+def test_diffs(): # Generic function for all UFO tests
+ result = silfont.util.test_diffs("ufo", testname, diffexts)
+ assert result
+
+if __name__ == "__main__":
+ test_run()
+ test_diffs()