1
0
Fork 0
inkscape/share/extensions/tests/test_inkex_shape_box.py
Daniel Baumann 02d935e272
Adding upstream version 1.4.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-22 23:40:13 +02:00

70 lines
2.3 KiB
Python

# coding=utf-8
"""Test inkex `.shape_box()` method functionality"""
import pytest
from inkex.tester import TestCase
from inkex.command import is_inkscape_available
from inkex.tester.svg import svg_file
try:
from typing import Optional, Tuple
except ImportError:
pass
class ShapeBoxTest(TestCase):
"""Test ShapeBox functionality"""
atol = 3e-3
source_file = "bounding_box.svg"
def setUp(self):
super().setUp()
self.svg = svg_file(self.data_file("svg", self.source_file))
def assert_shape_box_is_equal(self, obj, xscale, yscale):
"""
Assert: bounding box of object is exactly expected_box or is close to it
:param (ShapeElement) obj: object to calculate shape box
:param (Optional[Tuple[float,float]]) xscale: expected values of (xmin, xmax)
:param (Optional[Tuple[float,float]]) yscale: expected values of (ymin, ymax)
"""
shape_box = obj.shape_box()
if shape_box is None:
self.assertEqual((None, None), (xscale, yscale))
return
box_array = list(shape_box)
expected_array = xscale, yscale
def cmp(a, b, msg=None):
self.assertEqual(len(a), len(b), msg=msg)
for x, y, label in zip(a, b, ("x", "y")):
self.assertDeepAlmostEqual(
tuple(x), tuple(y), delta=self.atol, msg=msg + " (%s)" % label
)
cmp(box_array, expected_array, "inkex.shape_box != expected")
def test_clipped(self):
clipped_rect = self.svg.getElementById("clipped_rect1")
self.assert_shape_box_is_equal(clipped_rect, (300, 500), (100, 200))
def test_group_with_clipped_child(self):
group_with_clipped_child = self.svg.getElementById("group_with_clipped_child")
self.assert_shape_box_is_equal(group_with_clipped_child, (100, 500), (300, 400))
def test_group_with_invisible_clipped_child(self):
group_with_invisible_clipped_child = self.svg.getElementById(
"group_with_invisible_clipped_child"
)
self.assert_shape_box_is_equal(
group_with_invisible_clipped_child, (100, 500), (500, 600)
)
def test_clipped_group(self):
clipped_group = self.svg.getElementById("clipped_group")
self.assert_shape_box_is_equal(clipped_group, (100, 500), (700, 800))