diff options
| author | Kaalleen <36401965+kaalleen@users.noreply.github.com> | 2025-02-03 22:37:36 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-02-03 22:37:36 +0100 |
| commit | 497fbcfab5734aac889f15b72384a6a8631fffa4 (patch) | |
| tree | 1f1a690a6108d7e4e0fac599d4e554edae9db6f9 /tests/test_clone.py | |
| parent | e1c6d8c5956c7c3c5e158c1f7415edd5bc1a0cc1 (diff) | |
Add debug variable to enable sew stack elements (#3476)
Diffstat (limited to 'tests/test_clone.py')
| -rw-r--r-- | tests/test_clone.py | 71 |
1 files changed, 37 insertions, 34 deletions
diff --git a/tests/test_clone.py b/tests/test_clone.py index 23dafd57..f089cb43 100644 --- a/tests/test_clone.py +++ b/tests/test_clone.py @@ -1,14 +1,17 @@ -from lib.elements import Clone, EmbroideryElement, FillStitch -from lib.commands import add_commands -from lib.svg.tags import INKSTITCH_ATTRIBS, SVG_RECT_TAG, INKSCAPE_LABEL -from lib.utils import cache_module -from inkex import SvgDocumentElement, Rectangle, Circle, Group, Use, Transform, TextElement +from math import sqrt +from typing import Optional + +from inkex import (Circle, Group, Rectangle, SvgDocumentElement, TextElement, + Transform, Use) from inkex.tester import TestCase from inkex.tester.svg import svg -from typing import Optional +from lib.commands import add_commands +from lib.elements import Clone, EmbroideryElement, FillStitch +from lib.svg.tags import INKSCAPE_LABEL, INKSTITCH_ATTRIBS, SVG_RECT_TAG +from lib.utils import cache_module -from math import sqrt +from .utils import element_count def element_fill_angle(element: EmbroideryElement) -> Optional[float]: @@ -76,7 +79,7 @@ class CloneElementTest(TestCase): clone = Clone(use) with clone.clone_elements() as elements: - self.assertEqual(len(elements), 2) + self.assertEqual(len(elements), element_count()) self.assertAlmostEqual(element_fill_angle(elements[0]), 30) def test_hidden_cloned_elements_not_embroidered(self): @@ -107,7 +110,7 @@ class CloneElementTest(TestCase): clone = Clone(use) with clone.clone_elements() as elements: - self.assertEqual(len(elements), 2) + self.assertEqual(len(elements), element_count()) self.assertEqual(elements[0].node.get(INKSCAPE_LABEL), "NotHidden") def test_angle_rotated(self): @@ -123,7 +126,7 @@ class CloneElementTest(TestCase): clone = Clone(use) with clone.clone_elements() as elements: - self.assertEqual(len(elements), 2) + self.assertEqual(len(elements), element_count()) self.assertAngleAlmostEqual(element_fill_angle(elements[0]), 10) def test_angle_flipped(self): @@ -139,7 +142,7 @@ class CloneElementTest(TestCase): clone = Clone(use) with clone.clone_elements() as elements: - self.assertEqual(len(elements), 2) + self.assertEqual(len(elements), element_count()) self.assertAngleAlmostEqual(element_fill_angle(elements[0]), -30) def test_angle_flipped_rotated(self): @@ -155,7 +158,7 @@ class CloneElementTest(TestCase): clone = Clone(use) with clone.clone_elements() as elements: - self.assertEqual(len(elements), 2) + self.assertEqual(len(elements), element_count()) # Fill angle goes from 30 -> -30 after flip -> -50 after rotate self.assertAngleAlmostEqual(element_fill_angle(elements[0]), -50) @@ -175,7 +178,7 @@ class CloneElementTest(TestCase): clone = Clone(use) with clone.clone_elements() as elements: - self.assertEqual(len(elements), 2) + self.assertEqual(len(elements), element_count()) # Slope of the stitching goes from tan(30deg) = 1/sqrt(3) to -sqrt(3)/sqrt(3) = tan(-45deg), # then rotated another -10 degrees to -55 self.assertAngleAlmostEqual(element_fill_angle(elements[0]), -55) @@ -200,7 +203,7 @@ class CloneElementTest(TestCase): clone = Clone(use) with clone.clone_elements() as elements: - self.assertEqual(len(elements), 2) + self.assertEqual(len(elements), element_count()) # Angle goes from 30 -> 40 (g1 -> g2) -> 29 (use) self.assertAngleAlmostEqual(element_fill_angle(elements[0]), 29) @@ -218,7 +221,7 @@ class CloneElementTest(TestCase): clone = Clone(use) with clone.clone_elements() as elements: - self.assertEqual(len(elements), 3) # One for the stroke, one for the fill, one for the SewStack + self.assertEqual(len(elements), element_count()+1) # One for the stroke, one for the fill, one for the SewStack self.assertEqual(elements[0].node, elements[1].node) # Angle goes from 0 -> -30 self.assertAngleAlmostEqual(element_fill_angle(elements[0]), -30) @@ -237,7 +240,7 @@ class CloneElementTest(TestCase): clone = Clone(use) with clone.clone_elements() as elements: - self.assertEqual(len(elements), 2) # One for the stroke, one for the fill, one for the SewStack + self.assertEqual(len(elements), element_count()) # One for the stroke, one for the fill, one for the SewStack self.assertIsNone(elements[0].get_param("angle", None)) # Angle as not set, as this isn't a fill def test_style_inherits(self): @@ -253,7 +256,7 @@ class CloneElementTest(TestCase): clone = Clone(use) with clone.clone_elements() as elements: - self.assertEqual(len(elements), 2) + self.assertEqual(len(elements), element_count()) style = elements[0].node.cascaded_style() # Source style takes precedence over any attributes specified in the clone self.assertEqual(style["stroke"], "skyblue") @@ -276,7 +279,7 @@ class CloneElementTest(TestCase): clone = Clone(use) with clone.clone_elements() as elements: - self.assertEqual(len(elements), 2) + self.assertEqual(len(elements), element_count()) self.assertTransformEqual( elements[0].node.composed_transform(), Transform().add_translate((5, 10)).add_scale(2, 2)) @@ -297,7 +300,7 @@ class CloneElementTest(TestCase): clone = Clone(use) with clone.clone_elements() as elements: - self.assertEqual(len(elements), 2) + self.assertEqual(len(elements), element_count()) self.assertTransformEqual( elements[0].node.composed_transform(), Transform().add_translate((5, 10)) # use @@ -325,7 +328,7 @@ class CloneElementTest(TestCase): clone = Clone(use) with clone.clone_elements() as elements: - self.assertEqual(len(elements), 4) # FillStitch, SewStack, FillStitch, SewStack + self.assertEqual(len(elements), element_count()*2) # FillStitch, SewStack, FillStitch, SewStack self.assertTransformEqual( elements[0].node.composed_transform(), Transform().add_translate((1, 2)).add_scale(0.5, 1) # g2 @@ -334,7 +337,7 @@ class CloneElementTest(TestCase): .add_scale(2, 2), # rect 5) self.assertTransformEqual( - elements[2].node.composed_transform(), + elements[element_count()].node.composed_transform(), Transform().add_translate((1, 2)).add_scale(0.5, 1) # g2 .add_translate((5, 10)) # use .add_translate((0, 5)).add_rotate(5), # g1 @@ -370,7 +373,7 @@ class CloneElementTest(TestCase): self.assertEqual(clone.clone_fill_angle, 42) with clone.clone_elements() as elements: - self.assertEqual(len(elements), 2) + self.assertEqual(len(elements), element_count()) self.assertAngleAlmostEqual(element_fill_angle(elements[0]), 42) def test_angle_manually_flipped(self): @@ -388,7 +391,7 @@ class CloneElementTest(TestCase): clone = Clone(use) self.assertTrue(clone.flip_angle) with clone.clone_elements() as elements: - self.assertEqual(len(elements), 2) + self.assertEqual(len(elements), element_count()) self.assertAngleAlmostEqual(element_fill_angle(elements[0]), -10) # Recursive use tests @@ -414,7 +417,7 @@ class CloneElementTest(TestCase): with clone.clone_elements() as elements: # There should be two elements cloned from u3, two rects, one corresponding to rect and one corresponding to u1. # Their transforms should derive from the elements they href. - self.assertEqual(len(elements), 4) + self.assertEqual(len(elements), element_count()*2) self.assertEqual(type(elements[0]), FillStitch) self.assertEqual(elements[0].node.tag, SVG_RECT_TAG) self.assertTransformEqual(elements[0].node.composed_transform(), @@ -422,9 +425,9 @@ class CloneElementTest(TestCase): .add_translate(0, 20).add_scale(0.5, 0.5) # u2 ) - self.assertEqual(type(elements[2]), FillStitch) - self.assertEqual(elements[2].node.tag, SVG_RECT_TAG) - self.assertTransformEqual(elements[2].node.composed_transform(), + self.assertEqual(type(elements[element_count()]), FillStitch) + self.assertEqual(elements[element_count()].node.tag, SVG_RECT_TAG) + self.assertTransformEqual(elements[element_count()].node.composed_transform(), Transform().add_translate((0, 30)) # u3 .add_translate((0, 20)).add_scale(0.5, 0.5) # u2 .add_translate((20, 0)) # u1 @@ -443,7 +446,7 @@ class CloneElementTest(TestCase): clone = Clone(u1) with clone.clone_elements() as elements: - self.assertEqual(len(elements), 2) + self.assertEqual(len(elements), element_count()) # Angle goes from 30 -> -30 self.assertAngleAlmostEqual(element_fill_angle(elements[0]), -30) @@ -454,7 +457,7 @@ class CloneElementTest(TestCase): clone = Clone(u2) with clone.clone_elements() as elements: - self.assertEqual(len(elements), 2) + self.assertEqual(len(elements), element_count()) # Angle goes from -30 -> -20 (u1 -> g) self.assertAngleAlmostEqual(element_fill_angle(elements[0]), -20) @@ -464,7 +467,7 @@ class CloneElementTest(TestCase): clone = Clone(u3) with clone.clone_elements() as elements: - self.assertEqual(len(elements), 2) + self.assertEqual(len(elements), element_count()) # Angle goes from -20 -> -27 self.assertAngleAlmostEqual(element_fill_angle(elements[0]), -27) @@ -475,7 +478,7 @@ class CloneElementTest(TestCase): clone = Clone(u4) with clone.clone_elements() as elements: - self.assertEqual(len(elements), 2) + self.assertEqual(len(elements), element_count()) # Angle goes from -30 -> -37 self.assertAngleAlmostEqual(element_fill_angle(elements[0]), -37) @@ -501,7 +504,7 @@ class CloneElementTest(TestCase): clone = Clone(u3) with clone.clone_elements() as elements: - self.assertEqual(len(elements), 2) + self.assertEqual(len(elements), element_count()) # Angle goes from 0 (g -> u2) -> -7 (u3) self.assertAngleAlmostEqual(element_fill_angle(elements[0]), -7) @@ -526,7 +529,7 @@ class CloneElementTest(TestCase): clone = Clone(use) with clone.clone_elements() as elements: - self.assertEqual(len(elements), 2) + self.assertEqual(len(elements), element_count()) cmd_orig = original.get_command("ending_point") cmd_clone = elements[0].get_command("ending_point") self.assertIsNotNone(cmd_clone) @@ -553,7 +556,7 @@ class CloneElementTest(TestCase): clone = Clone(use) with clone.clone_elements() as elements: - self.assertEqual(len(elements), 2) + self.assertEqual(len(elements), element_count()) cmd_orig = original.get_command("ending_point") cmd_clone = elements[0].get_command("ending_point") self.assertIsNotNone(cmd_clone) |
