summaryrefslogtreecommitdiff
path: root/tests/test_clone.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_clone.py')
-rw-r--r--tests/test_clone.py71
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)