summaryrefslogtreecommitdiffstats
path: root/share/extensions/tests/test_inkex_utils.py
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--share/extensions/tests/test_inkex_utils.py186
1 files changed, 186 insertions, 0 deletions
diff --git a/share/extensions/tests/test_inkex_utils.py b/share/extensions/tests/test_inkex_utils.py
new file mode 100644
index 0000000..8917e23
--- /dev/null
+++ b/share/extensions/tests/test_inkex_utils.py
@@ -0,0 +1,186 @@
+# coding=utf-8
+"""
+Unit test file for ../inkex.py
+"""
+# Revision history:
+# * 2012-01-27 (jazzynico): check errormsg function.
+#
+from __future__ import absolute_import, print_function
+
+from argparse import ArgumentTypeError
+
+import pytest
+
+from inkex.utils import (
+ debug,
+ errormsg,
+ filename_arg,
+ Boolean,
+ parse_percent,
+ to,
+ strargs,
+ math_eval,
+ is_number,
+)
+from inkex.tester import TestCase
+
+from inkex import addNS
+
+
+class TestInkexBasic(object):
+ """Test basic utiltiies of inkex"""
+
+ def test_boolean(self):
+ """Inkscape boolean input"""
+ assert Boolean("TRUE") is True
+ assert Boolean("true") is True
+ assert Boolean("True") is True
+ assert Boolean("FALSE") is False
+ assert Boolean("false") is False
+ assert Boolean("False") is False
+ assert Boolean("Banana") is None
+
+ def test_debug(self, capsys):
+ """Debug messages go to stderr"""
+ debug("Hello World")
+ assert capsys.readouterr().err == "Hello World\n"
+
+ def test_to(self):
+ """Decorator for generators"""
+
+ @to(list)
+ def mylist(a, b, c):
+ """Yield as a list"""
+ yield a
+ yield c
+ yield b
+
+ assert isinstance(mylist(1, 2, 3), list)
+ assert mylist(1, 2, 3) == [1, 3, 2]
+
+ @to(dict)
+ def mydict(a, b, c):
+ """Yield as a dictionary"""
+ yield ("age", a)
+ yield ("name", c)
+ yield ("home", b)
+
+ assert isinstance(mydict(1, 2, 3), dict)
+ assert mydict(1, 2, 3) == {"age": 1, "name": 3, "home": 2}
+
+ def test_filename(self):
+ """Filename argument input"""
+ assert filename_arg(__file__) == __file__
+ with pytest.raises(ArgumentTypeError):
+ filename_arg("doesntexist.txt")
+
+ def test_add_ns(self):
+ """Test addNS function"""
+ assert (
+ addNS("inkscape:foo") == "{http://www.inkscape.org/namespaces/inkscape}foo"
+ )
+ assert (
+ addNS("bar", "inkscape")
+ == "{http://www.inkscape.org/namespaces/inkscape}bar"
+ )
+ assert addNS("url", "rdf") == "{http://www.w3.org/1999/02/22-rdf-syntax-ns#}url"
+ assert (
+ addNS("{http://www.inkscape.org/namespaces/inkscape}bar")
+ == "{http://www.inkscape.org/namespaces/inkscape}bar"
+ )
+ assert (
+ addNS("http://www.inkscape.org/namespaces/inkscape:bar")
+ == "{http://www.inkscape.org/namespaces/inkscape}bar"
+ )
+ assert (
+ addNS("car", "http://www.inkscape.org/namespaces/inkscape")
+ == "{http://www.inkscape.org/namespaces/inkscape}car"
+ )
+ assert (
+ addNS("{http://www.inkscape.org/namespaces/inkscape}bar", "rdf")
+ == "{http://www.w3.org/1999/02/22-rdf-syntax-ns#}bar"
+ )
+
+ def test_strargs(self):
+ """Test strargs function"""
+ assert strargs("1.0 2.0 3.0 4.0") == [1.0, 2.0, 3.0, 4.0]
+ assert strargs("1 -2 3 -4") == [1.0, -2.0, 3.0, -4.0]
+ assert strargs("1,-2,3,-4") == [1.0, -2.0, 3.0, -4.0]
+ assert strargs("1-2 3-4") == [1.0, -2.0, 3.0, -4.0]
+ assert strargs("1-2,3-4") == [1.0, -2.0, 3.0, -4.0]
+ assert strargs("1-2-3-4") == [1.0, -2.0, -3.0, -4.0]
+ assert strargs("+1 +2") == [1.0, 2.0]
+ assert strargs("1.2.3.4.5") == [1.2, 0.3, 0.4, 0.5]
+ assert strargs("1. 2..3.4") == [1.0, 2.0, 0.3, 0.4]
+ assert strargs("1.0e-1 -2.0e-1 3.0e10 -4.0e10") == [
+ 0.1,
+ -0.2,
+ 30000000000,
+ -40000000000,
+ ]
+ assert strargs("1.0e-1,-2.0e-1,3.0e10,-4.0e10") == [
+ 0.1,
+ -0.2,
+ 30000000000,
+ -40000000000,
+ ]
+ assert strargs("1.0E-1 -2.0E-1 3.0E10 -4.0E10") == [
+ 0.1,
+ -0.2,
+ 30000000000,
+ -40000000000,
+ ]
+ assert strargs("1.0E-1,-2.0E-1,3.0E10,-4.0E10") == [
+ 0.1,
+ -0.2,
+ 30000000000,
+ -40000000000,
+ ]
+ assert strargs("1.E2+.3E+4") == [100, 3000]
+
+ def test_ascii(self, capsys):
+ """Parse ABCabc"""
+ errormsg("ABCabc")
+ assert capsys.readouterr().err == "ABCabc\n"
+
+ def test_nonunicode_latin1(self, capsys):
+ # Py2 has issues with unicode in docstrings. *sigh*
+ # """Parse Àûïàèé"""
+ errormsg("Àûïàèé")
+ assert capsys.readouterr().err, "Àûïàèé\n"
+
+ def test_unicode_latin1(self, capsys):
+ # Py2 has issues with unicode in docstrings. *sigh*
+ # """Parse Àûïàèé (unicode)"""
+ errormsg("Àûïàèé")
+ assert capsys.readouterr().err, "Àûïàèé\n"
+
+ def test_parse_percent(self):
+ assert parse_percent("75%") == 0.75
+ assert parse_percent("0.75") == 0.75
+ assert parse_percent("75") == 75
+
+
+import math
+
+
+class TestMathFunctions(TestCase):
+ def testExp(self):
+ """Test if the math_eval function works"""
+ function = "exp(x)"
+ f = math_eval(function)
+ self.assertAlmostEqual(f(1), math.exp(1))
+
+ def testErf(self):
+ """Only available in python3"""
+ function = "erf(x)"
+ f = math_eval(function)
+ self.assertAlmostEqual(f(1), math.erf(1))
+
+ def test_is_number(self):
+ self.assertTrue(is_number("155"))
+ self.assertTrue(is_number("12.5"))
+ self.assertTrue(is_number("12.5e-5"))
+ self.assertFalse(is_number("10=3"))
+ self.assertFalse(is_number(""))
+ self.assertFalse(is_number("a"))