more reorg

This commit is contained in:
John Lancaster
2026-02-21 10:04:52 -06:00
parent 1501b7ea25
commit 8f84bda31d

View File

@@ -89,32 +89,59 @@ class TestDAGSetBasicOps:
class TestDAGSetCallbacks: class TestDAGSetCallbacks:
"""Test callback mechanisms.""" """Test callback mechanisms."""
def test_on_add_callback(self) -> None: class TestBasicOps:
added: list[int] = [] def test_on_add_callback(self) -> None:
s = DAGSetView({1, 2}) added: list[int] = []
s.on_add = lambda v: added.append(v) s = DAGSetView({1, 2})
s.add(3) s.on_add = lambda v: added.append(v)
assert 3 in added s.add(3)
assert len(added) == 1 assert 3 in added
assert len(added) == 1
def test_on_remove_callback(self) -> None: def test_on_remove_callback(self) -> None:
removed: list[int] = [] removed: list[int] = []
s = DAGSetView({1, 2, 3}) s = DAGSetView({1, 2, 3})
s.on_remove = lambda v: removed.append(v) s.on_remove = lambda v: removed.append(v)
s.discard(2) s.discard(2)
assert 2 in removed assert 2 in removed
assert len(removed) == 1 assert len(removed) == 1
def test_callbacks_none_by_default(self) -> None:
s = DAGSetView()
assert s.on_add is None
assert s.on_remove is None
class TestInPlaceOperators:
def test_ior_triggers_callbacks(self) -> None:
added: list[int] = []
s = DAGSetView({1})
s.on_add = lambda v: added.append(v)
s |= {2, 3}
assert 2 in added
assert 3 in added
def test_iadd_triggers_callbacks(self) -> None:
added: list[int] = []
s = DAGSetView({1})
s.on_add = lambda v: added.append(v)
s += [2, 3]
assert 2 in added
assert 3 in added
def test_isub_triggers_callbacks(self) -> None:
removed: list[int] = []
s = DAGSetView({1, 2, 3})
s.on_remove = lambda v: removed.append(v)
s -= {2, 3}
assert 2 in removed
assert 3 in removed
def test_callbacks_none_by_default(self) -> None:
s = DAGSetView()
assert s.on_add is None
assert s.on_remove is None
class TestDAGSetInPlaceOperators: class TestDAGSetInPlaceOperators:
"""Test in-place set operators.""" """Test in-place set operators."""
class TestDAGSetIOR: class TestIOR:
def test_set(self) -> None: def test_set(self) -> None:
s = DAGSetView({1, 2}) s = DAGSetView({1, 2})
s |= {3, 4} s |= {3, 4}
@@ -130,86 +157,56 @@ class TestDAGSetInPlaceOperators:
s |= "xyz" s |= "xyz"
assert "xyz" in s assert "xyz" in s
class TestDAGSetIAdd: class TestIAdd:
pass def test_set(self) -> None:
s = DAGSetView({1, 2})
s += {3, 4}
assert set(s) == {1, 2, 3, 4}
class TestDAGSetISub: def test_list(self) -> None:
pass s = DAGSetView({1})
s += [2, 3]
assert set(s) == {1, 2, 3}
def test_iadd_with_set(self) -> None: def test_string(self) -> None:
s = DAGSetView({1, 2}) s = DAGSetView({"a"})
s += {3, 4} s += "b"
assert set(s) == {1, 2, 3, 4} assert "b" in s
def test_iadd_with_list(self) -> None: class TestISub:
s = DAGSetView({1}) def test_set(self) -> None:
s += [2, 3] s = DAGSetView({1, 2, 3, 4})
assert set(s) == {1, 2, 3} s -= {2, 3}
assert set(s) == {1, 4}
def test_iadd_with_string(self) -> None: def test_list(self) -> None:
s = DAGSetView({"a"}) s = DAGSetView({1, 2, 3})
s += "b" s -= [2]
assert "b" in s assert set(s) == {1, 3}
def test_isub_with_set(self) -> None: def test_string(self) -> None:
s = DAGSetView({1, 2, 3, 4}) s = DAGSetView({"a", "b", "c"})
s -= {2, 3} s -= "b"
assert set(s) == {1, 4} assert set(s) == {"a", "c"}
def test_isub_with_list(self) -> None: class TestIAnd:
s = DAGSetView({1, 2, 3}) def test_set(self) -> None:
s -= [2] s = DAGSetView({1, 2, 3})
assert set(s) == {1, 3} s &= {2, 3, 4}
assert set(s) == {2, 3}
def test_isub_with_string(self) -> None: def test_list(self) -> None:
s = DAGSetView({"a", "b", "c"}) s = DAGSetView({1, 2, 3})
s -= "b" s &= [2, 3]
assert set(s) == {"a", "c"} assert set(s) == {2, 3}
def test_iand_with_set(self) -> None: class TestIXor:
s = DAGSetView({1, 2, 3}) def test_set(self) -> None:
s &= {2, 3, 4} s = DAGSetView({1, 2, 3})
assert set(s) == {2, 3} s ^= {3, 4, 5}
assert set(s) == {1, 2, 4, 5}
def test_iand_with_list(self) -> None: def test_list(self) -> None:
s = DAGSetView({1, 2, 3}) s = DAGSetView({1, 2})
s &= [2, 3] s ^= [2, 3]
assert set(s) == {2, 3} assert set(s) == {1, 3}
def test_ixor_with_set(self) -> None:
s = DAGSetView({1, 2, 3})
s ^= {3, 4, 5}
assert set(s) == {1, 2, 4, 5}
def test_ixor_with_list(self) -> None:
s = DAGSetView({1, 2})
s ^= [2, 3]
assert set(s) == {1, 3}
class TestDAGSetCallbacksWithOperators:
"""Test that callbacks fire with in-place operators."""
def test_ior_triggers_callbacks(self) -> None:
added: list[int] = []
s = DAGSetView({1})
s.on_add = lambda v: added.append(v)
s |= {2, 3}
assert 2 in added
assert 3 in added
def test_iadd_triggers_callbacks(self) -> None:
added: list[int] = []
s = DAGSetView({1})
s.on_add = lambda v: added.append(v)
s += [2, 3]
assert 2 in added
assert 3 in added
def test_isub_triggers_callbacks(self) -> None:
removed: list[int] = []
s = DAGSetView({1, 2, 3})
s.on_remove = lambda v: removed.append(v)
s -= {2, 3}
assert 2 in removed
assert 3 in removed