[Library] fix dedup()
- use consistent deduplicated target name - remove shape indices per dedup
This commit is contained in:
parent
2b29e46b93
commit
462a05a665
2 changed files with 57 additions and 3 deletions
|
|
@ -259,3 +259,43 @@ def test_library_dedup_shapes_does_not_merge_custom_capped_paths() -> None:
|
|||
|
||||
assert not lib["top"].refs
|
||||
assert len(lib["top"].shapes[(1, 0)]) == 2
|
||||
|
||||
|
||||
def test_library_dedup_handles_multiple_duplicate_groups() -> None:
|
||||
from ..shapes import Circle
|
||||
|
||||
lib = Library()
|
||||
pat = Pattern()
|
||||
pat.shapes[(1, 0)] += [Circle(radius=1, offset=(0, 0)), Circle(radius=1, offset=(10, 0))]
|
||||
pat.shapes[(2, 0)] += [Path(vertices=[[0, 0], [5, 0]], width=2), Path(vertices=[[10, 0], [15, 0]], width=2)]
|
||||
lib["top"] = pat
|
||||
|
||||
lib.dedup(exclude_types=(), norm_value=1, threshold=2)
|
||||
|
||||
assert len(lib["top"].refs) == 2
|
||||
assert all(len(refs) == 2 for refs in lib["top"].refs.values())
|
||||
assert len(lib["top"].shapes[(1, 0)]) == 0
|
||||
assert len(lib["top"].shapes[(2, 0)]) == 0
|
||||
|
||||
|
||||
def test_library_dedup_uses_stable_target_names_per_label() -> None:
|
||||
from ..shapes import Circle
|
||||
|
||||
lib = Library()
|
||||
|
||||
p1 = Pattern()
|
||||
p1.shapes[(1, 0)] += [Circle(radius=1, offset=(0, 0)), Circle(radius=1, offset=(10, 0))]
|
||||
lib["p1"] = p1
|
||||
|
||||
p2 = Pattern()
|
||||
p2.shapes[(2, 0)] += [Path(vertices=[[0, 0], [5, 0]], width=2), Path(vertices=[[10, 0], [15, 0]], width=2)]
|
||||
lib["p2"] = p2
|
||||
|
||||
lib.dedup(exclude_types=(), norm_value=1, threshold=2)
|
||||
|
||||
circle_target = next(iter(lib["p1"].refs))
|
||||
path_target = next(iter(lib["p2"].refs))
|
||||
|
||||
assert circle_target != path_target
|
||||
assert all(isinstance(shape, Circle) for shapes in lib[circle_target].shapes.values() for shape in shapes)
|
||||
assert all(isinstance(shape, Path) for shapes in lib[path_target].shapes.values() for shape in shapes)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue