summaryrefslogtreecommitdiffstats
path: root/share/extensions/tests/test_deprecated_simple.py
diff options
context:
space:
mode:
Diffstat (limited to 'share/extensions/tests/test_deprecated_simple.py')
-rw-r--r--share/extensions/tests/test_deprecated_simple.py198
1 files changed, 198 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..60b2524
--- /dev/null
+++ b/share/extensions/tests/test_deprecated_simple.py
@@ -0,0 +1,198 @@
+# 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., 34.]], ['L', [56., 78.]], ['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., 30.]], ['L', [53., 74.]], ['Z', []]])
+
+ simplepath.scalePath(path, 10, 20)
+ self.assertEqual(path, [['M', [90., 600.]], ['L', [530., 1480.]], ['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., 92.]], ['L', [-1468., 532.]], ['Z', []]])
+
+
+ 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_namespace_pollution(self):
+ """Test modules with legacy proxies"""
+
+ import optparse
+ self.assertEqual(optparse.OptionParser, inkex.optparse.OptionParser)
+
+ import lxml.etree
+ self.assertEqual(lxml.etree.Element, inkex.etree.Element)
+
+ # skip:
+ # - copy
+ # - os
+ # - random
+ # - re
+ # - sys
+ # - math.*
+
+ def test_inkex_namespace(self):
+ """Test inkex namespace API"""
+ from inkex import InkOption
+ self.assertIn('inkbool', InkOption.TYPES)
+ self.assertIn('inkbool', InkOption.TYPE_CHECKER)
+
+ from inkex import NSS
+ self.assertEqual(NSS['svg'], 'http://www.w3.org/2000/svg')
+
+ from inkex import addNS
+ self.assertEqual(addNS('rect', 'svg'), '{http://www.w3.org/2000/svg}rect')
+
+ from inkex import are_near_relative
+ self.assertTrue(are_near_relative(123.4, 123.5, 1e-3))
+ self.assertFalse(are_near_relative(123.4, 123.5, 1e-4))
+
+ # skip:
+ # - from inkex import check_inkbool (InkOption implementation detail)
+
+ 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