summaryrefslogtreecommitdiffstats
path: root/share/extensions/tests/test_inkex_extensions.py
diff options
context:
space:
mode:
Diffstat (limited to 'share/extensions/tests/test_inkex_extensions.py')
-rw-r--r--share/extensions/tests/test_inkex_extensions.py59
1 files changed, 59 insertions, 0 deletions
diff --git a/share/extensions/tests/test_inkex_extensions.py b/share/extensions/tests/test_inkex_extensions.py
new file mode 100644
index 0000000..0b06142
--- /dev/null
+++ b/share/extensions/tests/test_inkex_extensions.py
@@ -0,0 +1,59 @@
+# coding=utf-8
+"""
+Test each of the extensions base classes (if needed) and sometimes provide
+specialised test classes for testers to use.
+"""
+import inkex
+from inkex.tester import ComparisonMixin, TestCase
+
+class TurnGreenEffect(inkex.ColorExtension):
+ """Turn everything the purest green!"""
+ def modify_color(self, name, color):
+ return inkex.Color('green')
+ def modify_opacity(self, name, opacity):
+ if name == 'opacity':
+ return 1.0
+ return opacity
+
+class ColorEffectTest(ComparisonMixin, TestCase):
+ """Direct tests for color mechanisms"""
+ effect_class = TurnGreenEffect
+ effect_name = 'inkex_extensions_color'
+ compare_file = 'svg/colors.svg'
+ python3_only = True
+
+ comparisons = [
+ ('--id=r1',), # One shape only
+ ('--id=r2',), # CSS Styles
+ ('--id=r3',), # Element Attributes
+ ('--id=r4',), # Gradient stops
+ ('--id=r1', '--id=r2'), # Two shapes
+ ('--id=color_svg',), # Recursive group/children
+ (), # Process all shapes
+ ]
+
+class ColorBaseCase(TestCase):
+ """Base class for all color effect extensions"""
+ color_tests = []
+ opacity_tests = []
+
+ def _test_list(self, tsts):
+ for tst in tsts:
+ inp, outp, args = (list(tst) + [[]])[:3]
+ self.effect.parse_arguments([self.empty_svg] + args)
+ yield inp, outp
+
+ def test_colors(self):
+ """Run all color tests"""
+ for x, (inp, outp) in enumerate(self._test_list(self.color_tests)):
+ outp = inkex.Color(outp)
+ got = self.effect._modify_color('fill', inkex.Color(inp))
+ self.assertTrue(isinstance(got, inkex.Color),\
+ "Bad output type: {}".format(type(got).__name__))
+ outp, got = str(outp), str(got.to(outp.space))
+ self.assertEqual(outp, got,\
+ "Color mismatch, test:{} {} != {}".format(x, outp, got))
+ for x, (inp, outp) in enumerate(self._test_list(self.opacity_tests)):
+ got = self.effect.modify_opacity('opacity', inp)
+ self.assertTrue(isinstance(got, float))
+ self.assertAlmostEqual(got, outp, delta=0.1)