From cca66b9ec4e494c1d919bff0f71a820d8afab1fa Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 20:24:48 +0200 Subject: Adding upstream version 1.2.2. Signed-off-by: Daniel Baumann --- share/extensions/tests/test_frame.py | 200 +++++++++++++++++++++++++++++++++++ 1 file changed, 200 insertions(+) create mode 100644 share/extensions/tests/test_frame.py (limited to 'share/extensions/tests/test_frame.py') diff --git a/share/extensions/tests/test_frame.py b/share/extensions/tests/test_frame.py new file mode 100644 index 0000000..db97e3f --- /dev/null +++ b/share/extensions/tests/test_frame.py @@ -0,0 +1,200 @@ +# coding=utf-8 +# +# Copyright (C) 2016 Richard White, rwhite8282@gmail.com +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +""" +An Inkscape frame extension test class. +""" +from __future__ import absolute_import, print_function, unicode_literals + +import inkex +from frame import Frame +from inkex.tester import ComparisonMixin, InkscapeExtensionTestMixin, TestCase + + +class FrameTest(TestCase): + """tests for the Frame extension""" + + effect_class = Frame + + @staticmethod + def get_frame(svg): + """Find the frame in the document tree""" + return svg.getElement( + '//svg:g[@id="layer1"]//svg:rect[@inkscape:label="Frame"] | ' + '//svg:g[@id="layer1"]//svg:ellipse[@inkscape:label="Frame"]' + ) + + def test_single_frame(self): + """Test a simple frame.""" + args = [ + "--corner_radius=20", + "--fill_color=-16777124", + "--id=rect3006", + "--z_position=top", + "--stroke_color=255", + '--tab="stroke"', + "--width=10", + self.data_file("svg", "single_box.svg"), + ] + uut = Frame() + uut.run(args) + new_frame = self.get_frame(uut.svg) + self.assertIsNotNone(new_frame) + self.assertEqual("{http://www.w3.org/2000/svg}rect", new_frame.tag) + new_frame_style = new_frame.attrib["style"].lower() + self.assertTrue( + "fill-opacity:0.36" in new_frame_style, + 'Invalid fill-opacity in "' + new_frame_style + '".', + ) + self.assertTrue( + "stroke:#000000" in new_frame_style, + 'Invalid stroke in "' + new_frame_style + '".', + ) + self.assertTrue( + "stroke-width:10.0" in new_frame_style, + 'Invalid stroke-width in "' + new_frame_style + '".', + ) + self.assertTrue( + "fill:#ff0000" in new_frame_style, + 'Invalid fill in "' + new_frame_style + '".', + ) + + def test_single_frame_grouped(self): + """Test a grouped frame""" + args = [ + "--corner_radius=20", + "--fill_color=-16777124", + "--group=True", + "--id=rect3006", + "--z_position=top", + "--stroke_color=255", + '--tab="stroke"', + "--width=10", + self.data_file("svg", "single_box.svg"), + ] + uut = Frame() + uut.run(args) + new_frame = self.get_frame(uut.svg) + self.assertIsNotNone(new_frame) + self.assertEqual("{http://www.w3.org/2000/svg}rect", new_frame.tag) + group = new_frame.getparent() + self.assertEqual("{http://www.w3.org/2000/svg}g", group.tag) + self.assertEqual("{http://www.w3.org/2000/svg}rect", group[0].tag) + self.assertEqual("{http://www.w3.org/2000/svg}rect", group[1].tag) + self.assertEqual("Frame", group[1].label) + + def test_single_frame_clipped(self): + """Test a clipped frame""" + uut = self.assertEffect( + "svg", + "single_box.svg", + clip=True, + corner_radius=20, + fill_color=-16777124, + id="rect3006", + stroke_color=255, + tab="stroke", + width=10, + ) + new_frame = self.get_frame(uut.svg) + self.assertIsNotNone(new_frame) + self.assertEqual("{http://www.w3.org/2000/svg}rect", new_frame.tag) + orig = list(uut.svg.selection.values())[0] + self.assertEqual("url(#clipPath5815)", orig.get("clip-path")) + clip_path = uut.svg.getElement("//svg:defs/svg:clipPath") + self.assertEqual("{http://www.w3.org/2000/svg}clipPath", clip_path.tag) + + def test_frame_split(self): + """Test a frame that is split between bottom and top""" + args = [ + "--type=ellipse", + "--fill_color=#AAA", + "--group=True", + "--id=rect3006", + "--z_position=split", + "--stroke_color=#F00", + "--offset_relative=-10", + "--width=2", + self.data_file("svg", "single_box.svg"), + ] + uut = Frame() + uut.run(args) + new_frame = self.get_frame(uut.svg) + top_frame = new_frame.getparent()[2] + self.assertIsNotNone(new_frame) + self.assertIsInstance(new_frame, inkex.Ellipse) + self.assertIsInstance(new_frame.getparent(), inkex.Group) + self.assertIsInstance(new_frame.getparent()[1], inkex.Rectangle) + self.assertIsInstance(top_frame, inkex.Ellipse) + + self.assertIn("stroke", top_frame.style) + self.assertNotIn("stroke", new_frame.style) + self.assertIn("fill", top_frame.style) + self.assertEqual(top_frame.style("fill"), None) + + +class TestFrameInOut(ComparisonMixin, TestCase): + """Test some full runs of Frame""" + + effect_class = Frame + comparisons = [ + ( # test relative offset + "--id=c2", + "--id=c1", + "--type=ellipse", + "--offset_relative=10", + "--fill_color=#AAA", + "--stroke_color=#F00", + "--z_position=split", + ), + ( # test absolute offset + "--id=c2", + "--id=c1", + "--type=ellipse", + "--offset_absolute=20", + "--fill_color=#AAA", + "--stroke_color=#F00", + "--z_position=split", + ), + ( # test asgroup + "--id=c2", + "--id=c1", + "--id=p1", + "--type=rect", + "--group=True", + "--asgroup=True", + "--offset_relative=-10", + "--fill_color=#AAA", + "--stroke_color=#F00", + "--z_position=bottom", + "--clip=True", + ), + ( # test text bbox querying + "--id=t3", + "--type=rect", + "--offset_relative=10", + "--fill_color=#AAA", + "--stroke_color=#F00", + "--z_position=split", + ), + ( # Test clip on a transformed element + "--id=u1", + "--fill_color=#AAA", + "--stroke_color=#F00", + "--clip=True", + ), + ] -- cgit v1.2.3