diff --git a/tests/test_dagset.py b/tests/test_dagset.py index 785875d..8c2767f 100644 --- a/tests/test_dagset.py +++ b/tests/test_dagset.py @@ -99,6 +99,14 @@ class TestDAGSetCallbacks: assert len(added) == 1 def test_on_remove_callback(self) -> None: + removed: list[int] = [] + s = DAGSetView({1, 2, 3}) + s.on_remove = lambda v: removed.append(v) + s.remove(2) + assert 2 in removed + assert len(removed) == 1 + + def test_on_discard_callback(self) -> None: removed: list[int] = [] s = DAGSetView({1, 2, 3}) s.on_remove = lambda v: removed.append(v) @@ -136,6 +144,26 @@ class TestDAGSetCallbacks: assert 2 in removed assert 3 in removed + def test_iand_triggers_callbacks(self) -> None: + removed: list[int] = [] + s = DAGSetView({1, 2, 3, 4}) + s.on_remove = lambda v: removed.append(v) + s &= {2, 3} + assert 1 in removed + assert 4 in removed + assert len(removed) == 2 + + def test_ixor_triggers_callbacks(self) -> None: + added: list[int] = [] + removed: list[int] = [] + s = DAGSetView({1, 2, 3}) + s.on_add = lambda v: added.append(v) + s.on_remove = lambda v: removed.append(v) + s ^= {3, 4, 5} + assert 3 in removed + assert 4 in added + assert 5 in added + class TestDAGSetInPlaceOperators: """Test in-place set operators."""