[repetition / others] copies should get their own repetitions
This commit is contained in:
parent
2176d56b4c
commit
8d50f497f1
9 changed files with 32 additions and 0 deletions
|
|
@ -1,4 +1,5 @@
|
|||
import pytest
|
||||
import copy
|
||||
from typing import cast
|
||||
from numpy.testing import assert_equal, assert_allclose
|
||||
from numpy import pi
|
||||
|
|
@ -148,3 +149,26 @@ def test_pattern_interface() -> None:
|
|||
assert_allclose(iface.ports["out_A"].rotation, 0, atol=1e-10)
|
||||
assert iface.ports["in_A"].ptype == "test"
|
||||
assert iface.ports["out_A"].ptype == "test"
|
||||
|
||||
|
||||
def test_pattern_deepcopy_does_not_share_shape_repetitions() -> None:
|
||||
pat = Pattern()
|
||||
pat.polygon((1, 0), vertices=[[0, 0], [1, 0], [0, 1]], repetition=Grid(a_vector=(10, 0), a_count=2))
|
||||
|
||||
pat2 = copy.deepcopy(pat)
|
||||
pat2.scale_by(2)
|
||||
|
||||
assert_allclose(cast("Polygon", pat.shapes[(1, 0)][0]).repetition.a_vector, [10, 0])
|
||||
assert_allclose(cast("Polygon", pat2.shapes[(1, 0)][0]).repetition.a_vector, [20, 0])
|
||||
|
||||
|
||||
def test_pattern_flatten_does_not_mutate_child_repetitions() -> None:
|
||||
child = Pattern()
|
||||
child.polygon((1, 0), vertices=[[0, 0], [1, 0], [0, 1]], repetition=Grid(a_vector=(10, 0), a_count=2))
|
||||
|
||||
parent = Pattern()
|
||||
parent.ref("child", scale=2)
|
||||
|
||||
parent.flatten({"child": child})
|
||||
|
||||
assert_allclose(cast("Polygon", child.shapes[(1, 0)][0]).repetition.a_vector, [10, 0])
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue