inkstitch/tests/test_elements_utils.py

56 wiersze
1.9 KiB
Python
Czysty Zwykły widok Historia

from inkex import Group, Rectangle, Style
from inkex.tester import TestCase
from inkex.tester.svg import svg
from lib.elements import FillStitch, utils
from .utils import element_count
class ElementsUtilsTest(TestCase):
# These tests test two functions at once, but they're sort of complimentary.
# Might suggest that they could be combined in a later refactor?
2025-03-10 01:21:48 +00:00
def test_iterate_nodes_to_elements(self) -> None:
root = svg()
g = root.add(Group())
rect = g.add(Rectangle(attrib={
"width": "10",
"height": "10"
}))
hidden_rect = g.add(Rectangle(attrib={ # noqa: F841
"width": "10",
"height": "10",
"style": "display:none"
}))
hidden_group = g.add(Group(attrib={
"style": "display:none"
}))
child_of_hidden = hidden_group.add(Rectangle(attrib={ # noqa: F841
"width": "10",
"height": "10",
}))
elements = utils.nodes_to_elements(utils.iterate_nodes(g))
self.assertEqual(len(elements), element_count())
self.assertEqual(type(elements[0]), FillStitch)
self.assertEqual(elements[0].node, rect)
2025-03-10 01:21:48 +00:00
def test_iterate_nodes_to_elements_root_embroiderable(self) -> None:
""" Case where the root node is directly embroiderable """
root = svg()
rect = root.add(Rectangle(attrib={
"width": "10",
"height": "10"
}))
elements = utils.nodes_to_elements(utils.iterate_nodes(rect))
self.assertEqual(len(elements), element_count())
self.assertEqual(type(elements[0]), FillStitch)
self.assertEqual(elements[0].node, rect)
# Now make the element hidden: It shouldn't return an element
rect.style = rect.style + Style({"display": "none"})
elements = utils.nodes_to_elements(utils.iterate_nodes(rect))
self.assertEqual(len(elements), 0)