ensure_set

This commit is contained in:
John Lancaster
2026-02-21 12:57:21 -06:00
parent f357ee1a5a
commit 8ec77b51fe
3 changed files with 45 additions and 57 deletions

View File

@@ -45,11 +45,19 @@ class TestDAGOps:
assert "bar" in g._succ
assert "baz" in g._succ["bar"]
assert set(g["bar"]) == {"baz"}
assert "bar" in g["foo"]
assert "baz" in g["foo"]
assert "baz" in g["bar"]
def test_dagsetview(self) -> None:
g = DAG[str]()
added = []
g.on_add = lambda u, v: added.append(v)
g["foo"] += {"bar", "baz"}
assert set(g["foo"]) == {"bar", "baz"}
assert "bar" in added
assert "baz" in added
def test_self_loop_raises_error(self) -> None:
g = DAG[str]()
with pytest.raises(ValueError, match="Self-loops are not allowed"):
@@ -80,6 +88,15 @@ class TestDAGOps:
with pytest.raises(KeyError):
g.remove_edge("foo", "bar", missing_ok=False)
def test_dagsetview(self) -> None:
g = DAG[str]()
g["foo"] += {"bar", "baz"}
removed = []
g.on_remove = lambda u, v: removed.append(v)
g["foo"] -= {"baz"}
assert set(g["foo"]) == {"bar"}
assert "baz" in removed
class TestDAGDiscardNode:
"""Test node removal."""