diff options
Diffstat (limited to '')
-rw-r--r-- | share/extensions/tests/test_deprecated_simple.py | 216 |
1 files changed, 216 insertions, 0 deletions
diff --git a/share/extensions/tests/test_deprecated_simple.py b/share/extensions/tests/test_deprecated_simple.py new file mode 100644 index 0000000..f878ad2 --- /dev/null +++ b/share/extensions/tests/test_deprecated_simple.py @@ -0,0 +1,216 @@ +# coding=utf-8 +"""Test deprecated-simple modules""" +from __future__ import absolute_import, print_function + +import warnings +import math +import os +import re + +from pytest import approx + +import inkex +from inkex.tester import TestCase + + +class DeprecatedTest(TestCase): + """Tests for Deprecated API (Inkscape 0.92 and below)""" + + def setUp(self): + # All the functions in this test suite are deprecated, so + # we don't need the warnings here. + self.warner = warnings.catch_warnings() + self.warner.__enter__() + warnings.simplefilter("ignore", category=DeprecationWarning) + + def tearDown(self): + self.warner.__exit__() + + def test_simple_imports(self): + """Can import each module""" + # TODO add tests for these modules + import bezmisc + import cspsubdiv + import cubicsuperpath + import ffgeom + + # pylint: disable=unused-variable + from inkex import debug, errormsg, localize + + def test_simplepath(self): + """Test simplepath API""" + import simplepath + + data = "M12 34L56 78Z" + path = simplepath.parsePath(data) + self.assertEqual(path, [["M", [12.0, 34.0]], ["L", [56.0, 78.0]], ["Z", []]]) + + d_out = simplepath.formatPath(path) + d_out = d_out.replace(".0", "") + self.assertEqual(data.replace(" ", ""), d_out.replace(" ", "")) + + simplepath.translatePath(path, -3, -4) + self.assertEqual(path, [["M", [9.0, 30.0]], ["L", [53.0, 74.0]], ["Z", []]]) + + simplepath.scalePath(path, 10, 20) + self.assertEqual( + path, [["M", [90.0, 600.0]], ["L", [530.0, 1480.0]], ["Z", []]] + ) + + simplepath.rotatePath(path, math.pi / 2.0, cx=5, cy=7) + approxed = [[code, approx(coords)] for (code, coords) in path] + self.assertEqual( + approxed, [["M", [-588.0, 92.0]], ["L", [-1468.0, 532.0]], ["Z", []]] + ) + + def test_simplepath_shorthand(self): + """simplepath with shorthand notation""" + import simplepath + + data = ( + "M10 20v30V30h40H40c 1 2 3 4 5 6S7 8 9 10s7 8 9 10q11 12 13 14t15 16T15 16" + ) + path = simplepath.parsePath(data) + self.assertEqual( + path, + [ + ["M", [10.0, 20.0]], + ["L", [10.0, 50.0]], + ["L", [10.0, 30.0]], + ["L", [50.0, 30.0]], + ["L", [40.0, 30.0]], + ["C", [41.0, 32.0, 43.0, 34.0, 45.0, 36.0]], + ["C", [47.0, 38.0, 7.0, 8.0, 9.0, 10.0]], + ["C", [11.0, 12.0, 16.0, 18.0, 18.0, 20.0]], + ["Q", [29.0, 32.0, 31.0, 34.0]], + ["Q", [33.0, 36.0, 46.0, 50.0]], + ["Q", [59.0, 64.0, 15.0, 16.0]], + ], + ) + + def test_simplestyle(self): + """Test simplestyle API""" + import simplestyle + + self.assertEqual(simplestyle.svgcolors["blue"], "#0000ff") + self.assertEqual( + simplestyle.parseStyle("foo: bar; abc-def: 123em"), + {"foo": "bar", "abc-def": "123em"}, + ) + self.assertEqual(simplestyle.formatStyle({"foo": "bar"}), "foo:bar") + self.assertTrue(simplestyle.isColor("#ff0000")) + self.assertTrue(simplestyle.isColor("#f00")) + self.assertTrue(simplestyle.isColor("blue")) + self.assertFalse(simplestyle.isColor("none")) + self.assertFalse(simplestyle.isColor("nosuchcolor")) + self.assertEqual(simplestyle.parseColor("#0000ff"), (0, 0, 0xFF)) + self.assertEqual(simplestyle.parseColor("red"), (0xFF, 0, 0)) + self.assertEqual(simplestyle.formatColoria([0, 0x99, 0]), "#009900") + self.assertEqual(simplestyle.formatColor3i(0, 0x99, 0), "#009900") + self.assertEqual(simplestyle.formatColorfa([0, 1.0, 0]), "#00ff00") + self.assertEqual(simplestyle.formatColor3f(0, 1.0, 0), "#00ff00") + + def test_simpletransform(self): + """Test simpletransform API""" + import simpletransform + + self.assertEqual( + simpletransform.parseTransform("scale(10)"), [[10, 0, 0], [0, 10, 0]] + ) + self.assertEqual( + simpletransform.parseTransform("translate(2,3)"), [[1, 0, 2], [0, 1, 3]] + ) + self.assertEqual( + simpletransform.parseTransform("translate(2,3) rotate(90)"), + [approx([0, -1, 2]), approx([1, 0, 3])], + ) + m = simpletransform.formatTransform([[0, -1, 2], [1, 0, 3]]) + self.assertEqual( + re.sub(r",", " ", re.sub(r"\.0*\b", "", m)), "matrix(0 1 -1 0 2 3)" + ) + self.assertEqual( + simpletransform.invertTransform([[1, 0, 2], [0, 1, 3]]), + [[1, 0, -2], [0, 1, -3]], + ) + self.assertEqual( + simpletransform.composeTransform( + [[1, 0, 2], [0, 1, 3]], [[0, -1, 0], [1, 0, 0]] + ), + [[0, -1, 2], [1, 0, 3]], + ) + + pt = [4, 5] + self.assertEqual( + simpletransform.applyTransformToPoint([[0, -1, 2], [1, 0, 3]], pt), None + ) + self.assertEqual(pt, [-3, 7]) + + self.assertEqual( + simpletransform.boxunion([3, 5, 2, 4], [4, 6, 1, 3]), (3, 6, 1, 4) + ) + self.assertEqual(simpletransform.cubicExtrema(1, 2, 3, 4), (1, 4)) + + # TODO need cubic superpath + self.assertTrue(simpletransform.applyTransformToPath) + self.assertTrue(simpletransform.roughBBox) + self.assertTrue(simpletransform.refinedBBox) + + # TODO need node + self.assertTrue(simpletransform.fuseTransform) + self.assertTrue(simpletransform.composeParents) + self.assertTrue(simpletransform.applyTransformToNode) + self.assertTrue(simpletransform.computeBBox) + self.assertTrue(simpletransform.computePointInNode) + + def test_inkex_effect(self): + """Test original Effect base class""" + from inkex import Effect + + args = [ + "--id", + "curve", + os.path.join(os.path.dirname(__file__), "data", "svg/curves.svg"), + ] + + e = Effect() + e.affect(args) + + # assigned in __init__ + self.assertNotEqual(e.document.getroot(), None) + self.assertTrue(isinstance(e.selected, dict)) + self.assertEqual(list(e.selected), ["curve"]) + self.assertTrue(isinstance(e.doc_ids, dict)) + self.assertTrue(isinstance(e.options.ids, list)) + self.assertEqual(e.args, args[-1:]) + self.assertNotEqual(e.OptionParser.add_option, None) + + # methods + self.assertEqual(e.getselected(), None) + self.assertEqual(e.getdocids(), None) + node = e.getElementById("arc") + self.assertEqual(node.tag, "{http://www.w3.org/2000/svg}path") + self.assertEqual(node.get("id"), "arc") + self.assertEqual(e.getParentNode(node).tag, "{http://www.w3.org/2000/svg}g") + self.assertEqual( + e.getNamedView().tag, + "{http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd}namedview", + ) + self.assertEqual( + e.createGuide(10, 20, 45).tag, + "{http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd}guide", + ) + self.assertTrue(e.uniqueId("foo").startswith("foo")) + self.assertEqual( + e.xpathSingle("//svg:path").tag, "{http://www.w3.org/2000/svg}path" + ) + self.assertEqual(e.getDocumentWidth(), "1000") + self.assertEqual(e.getDocumentHeight(), "1000") + self.assertEqual(e.getDocumentUnit(), "px") + self.assertEqual(e.unittouu("1in"), 96) + self.assertEqual(e.uutounit(192, "in"), 2) + self.assertEqual(e.addDocumentUnit("3"), "3px") + + # skip: + # - e.ctx + # - e.getposinlayer + # - e.original_document |