[tests] Add machine-generated test suite
This commit is contained in:
parent
9bb0d5190d
commit
1de76bff47
24 changed files with 1703 additions and 0 deletions
109
masque/test/test_library.py
Normal file
109
masque/test/test_library.py
Normal file
|
|
@ -0,0 +1,109 @@
|
|||
import pytest
|
||||
from ..library import Library, LazyLibrary, LibraryView
|
||||
from ..pattern import Pattern
|
||||
from ..ref import Ref
|
||||
from ..error import LibraryError
|
||||
|
||||
def test_library_basic():
|
||||
lib = Library()
|
||||
pat = Pattern()
|
||||
lib["cell1"] = pat
|
||||
|
||||
assert "cell1" in lib
|
||||
assert lib["cell1"] is pat
|
||||
assert len(lib) == 1
|
||||
|
||||
with pytest.raises(LibraryError):
|
||||
lib["cell1"] = Pattern() # Overwriting not allowed
|
||||
|
||||
def test_library_tops():
|
||||
lib = Library()
|
||||
lib["child"] = Pattern()
|
||||
lib["parent"] = Pattern()
|
||||
lib["parent"].ref("child")
|
||||
|
||||
assert set(lib.tops()) == {"parent"}
|
||||
assert lib.top() == "parent"
|
||||
|
||||
def test_library_dangling():
|
||||
lib = Library()
|
||||
lib["parent"] = Pattern()
|
||||
lib["parent"].ref("missing")
|
||||
|
||||
assert lib.dangling_refs() == {"missing"}
|
||||
|
||||
def test_library_flatten():
|
||||
lib = Library()
|
||||
child = Pattern()
|
||||
child.polygon((1, 0), vertices=[[0, 0], [1, 0], [0, 1]])
|
||||
lib["child"] = child
|
||||
|
||||
parent = Pattern()
|
||||
parent.ref("child", offset=(10, 10))
|
||||
lib["parent"] = parent
|
||||
|
||||
flat_lib = lib.flatten("parent")
|
||||
flat_parent = flat_lib["parent"]
|
||||
|
||||
assert not flat_parent.has_refs()
|
||||
assert len(flat_parent.shapes[(1, 0)]) == 1
|
||||
# Transformations are baked into vertices for Polygon
|
||||
assert_vertices = flat_parent.shapes[(1, 0)][0].vertices
|
||||
assert tuple(assert_vertices[0]) == (10.0, 10.0)
|
||||
|
||||
def test_lazy_library():
|
||||
lib = LazyLibrary()
|
||||
called = 0
|
||||
def make_pat():
|
||||
nonlocal called
|
||||
called += 1
|
||||
return Pattern()
|
||||
|
||||
lib["lazy"] = make_pat
|
||||
assert called == 0
|
||||
|
||||
pat = lib["lazy"]
|
||||
assert called == 1
|
||||
assert isinstance(pat, Pattern)
|
||||
|
||||
# Second access should be cached
|
||||
pat2 = lib["lazy"]
|
||||
assert called == 1
|
||||
assert pat is pat2
|
||||
|
||||
def test_library_rename():
|
||||
lib = Library()
|
||||
lib["old"] = Pattern()
|
||||
lib["parent"] = Pattern()
|
||||
lib["parent"].ref("old")
|
||||
|
||||
lib.rename("old", "new", move_references=True)
|
||||
|
||||
assert "old" not in lib
|
||||
assert "new" in lib
|
||||
assert "new" in lib["parent"].refs
|
||||
assert "old" not in lib["parent"].refs
|
||||
|
||||
def test_library_subtree():
|
||||
lib = Library()
|
||||
lib["a"] = Pattern()
|
||||
lib["b"] = Pattern()
|
||||
lib["c"] = Pattern()
|
||||
lib["a"].ref("b")
|
||||
|
||||
sub = lib.subtree("a")
|
||||
assert "a" in sub
|
||||
assert "b" in sub
|
||||
assert "c" not in sub
|
||||
|
||||
def test_library_get_name():
|
||||
lib = Library()
|
||||
lib["cell"] = Pattern()
|
||||
|
||||
name1 = lib.get_name("cell")
|
||||
assert name1 != "cell"
|
||||
assert name1.startswith("cell")
|
||||
|
||||
name2 = lib.get_name("other")
|
||||
assert name2 == "other"
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue