diff options
Diffstat (limited to 'share/extensions/tests/test_inkex_extensions.py')
-rw-r--r-- | share/extensions/tests/test_inkex_extensions.py | 59 |
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) |