|
@@ -0,0 +1,396 @@
|
|
|
+import pytest
|
|
|
+
|
|
|
+
|
|
|
+@pytest.mark.usefixtures("state")
|
|
|
+def test_delete_edge_no_exists(state):
|
|
|
+ e = state.delete_edge(1)
|
|
|
+ assert e is None
|
|
|
+
|
|
|
+
|
|
|
+@pytest.mark.usefixtures("state")
|
|
|
+def test_delete_edge_node(state):
|
|
|
+ a = state.create_node()
|
|
|
+ assert a is not None
|
|
|
+
|
|
|
+ e = state.delete_edge(a)
|
|
|
+ assert e is None
|
|
|
+
|
|
|
+
|
|
|
+@pytest.mark.usefixtures("state")
|
|
|
+def test_delete_edge_nodevalue(state):
|
|
|
+ a = state.create_nodevalue(1)
|
|
|
+ assert a is not None
|
|
|
+
|
|
|
+ e = state.delete_edge(a)
|
|
|
+ assert e is None
|
|
|
+
|
|
|
+
|
|
|
+@pytest.mark.usefixtures("state")
|
|
|
+def test_delete_edge_normal(state):
|
|
|
+ a = state.create_nodevalue(1)
|
|
|
+ b = state.create_node()
|
|
|
+ c = state.create_edge(a, b)
|
|
|
+ assert a is not None
|
|
|
+ assert b is not None
|
|
|
+ assert c is not None
|
|
|
+
|
|
|
+ n = state.delete_edge(c)
|
|
|
+ assert n is None
|
|
|
+
|
|
|
+ l = state.read_outgoing(a)
|
|
|
+ assert l is not None
|
|
|
+ assert set(l) == set([])
|
|
|
+
|
|
|
+ l = state.read_incoming(a)
|
|
|
+ assert l is not None
|
|
|
+ assert set(l) == set([])
|
|
|
+
|
|
|
+ l = state.read_outgoing(b)
|
|
|
+ assert l is not None
|
|
|
+ assert set(l) == set([])
|
|
|
+
|
|
|
+ l = state.read_incoming(b)
|
|
|
+ assert l is not None
|
|
|
+ assert set(l) == set([])
|
|
|
+
|
|
|
+
|
|
|
+@pytest.mark.usefixtures("state")
|
|
|
+def test_delete_edge_remove_recursive(state):
|
|
|
+ a = state.create_nodevalue(1)
|
|
|
+ b = state.create_node()
|
|
|
+ c = state.create_edge(a, b)
|
|
|
+ d = state.create_edge(c, b)
|
|
|
+ assert a is not None
|
|
|
+ assert b is not None
|
|
|
+ assert c is not None
|
|
|
+ assert d is not None
|
|
|
+
|
|
|
+ n = state.delete_edge(c)
|
|
|
+ assert n is None
|
|
|
+
|
|
|
+ l = state.read_value(a)
|
|
|
+ assert l == 1
|
|
|
+
|
|
|
+ l = state.read_outgoing(a)
|
|
|
+ assert l is not None
|
|
|
+ assert set(l) == set([])
|
|
|
+
|
|
|
+ l = state.read_incoming(a)
|
|
|
+ assert l is not None
|
|
|
+ assert set(l) == set([])
|
|
|
+
|
|
|
+ s, t = state.read_edge(c)
|
|
|
+ assert s is None
|
|
|
+ assert t is None
|
|
|
+
|
|
|
+ s, t = state.read_edge(d)
|
|
|
+ assert s is None
|
|
|
+ assert t is None
|
|
|
+
|
|
|
+ l = state.read_outgoing(b)
|
|
|
+ assert l is not None
|
|
|
+ assert set(l) == set([])
|
|
|
+
|
|
|
+
|
|
|
+@pytest.mark.usefixtures("state")
|
|
|
+def test_delete_edge_remove_edge_recursive_deep(state):
|
|
|
+ a = state.create_node()
|
|
|
+ b = state.create_node()
|
|
|
+ c = state.create_node()
|
|
|
+ d = state.create_edge(a, b)
|
|
|
+ e = state.create_edge(d, c)
|
|
|
+ f = state.create_node()
|
|
|
+ g = state.create_edge(f, e)
|
|
|
+ h = state.create_edge(b, c)
|
|
|
+ assert a is not None
|
|
|
+ assert b is not None
|
|
|
+ assert c is not None
|
|
|
+ assert d is not None
|
|
|
+ assert e is not None
|
|
|
+ assert f is not None
|
|
|
+ assert g is not None
|
|
|
+ assert h is not None
|
|
|
+
|
|
|
+ n = state.delete_edge(d)
|
|
|
+ assert n is None
|
|
|
+
|
|
|
+ l = state.read_outgoing(a)
|
|
|
+ assert l is not None
|
|
|
+ assert set(l) == set([])
|
|
|
+
|
|
|
+ l = state.read_incoming(a)
|
|
|
+ assert l is not None
|
|
|
+ assert set(l) == set([])
|
|
|
+
|
|
|
+ l = state.read_outgoing(b)
|
|
|
+ assert l is not None
|
|
|
+ assert set(l) == set([h])
|
|
|
+
|
|
|
+ l = state.read_incoming(b)
|
|
|
+ assert l is not None
|
|
|
+ assert set(l) == set([])
|
|
|
+
|
|
|
+ l = state.read_outgoing(c)
|
|
|
+ assert l is not None
|
|
|
+ assert set(l) == set([])
|
|
|
+
|
|
|
+ l = state.read_incoming(c)
|
|
|
+ assert l is not None
|
|
|
+ assert set(l) == set([h])
|
|
|
+
|
|
|
+ s, t = state.read_edge(d)
|
|
|
+ assert s is None
|
|
|
+ assert t is None
|
|
|
+
|
|
|
+ s, t = state.read_edge(e)
|
|
|
+ assert s is None
|
|
|
+ assert t is None
|
|
|
+
|
|
|
+ s, t = state.read_edge(g)
|
|
|
+ assert s is None
|
|
|
+ assert t is None
|
|
|
+
|
|
|
+ l = state.read_outgoing(f)
|
|
|
+ assert l is not None
|
|
|
+ assert set(l) == set([])
|
|
|
+
|
|
|
+ l = state.read_incoming(f)
|
|
|
+ assert l is not None
|
|
|
+ assert set(l) == set([])
|
|
|
+
|
|
|
+ s, t = state.read_edge(h)
|
|
|
+ assert s == b
|
|
|
+ assert t == c
|
|
|
+
|
|
|
+
|
|
|
+@pytest.mark.usefixtures("state")
|
|
|
+def test_delete_edge_remove_edge_recursive_steps(state):
|
|
|
+ a = state.create_node()
|
|
|
+ b = state.create_node()
|
|
|
+ c = state.create_node()
|
|
|
+ d = state.create_edge(a, b)
|
|
|
+ e = state.create_edge(d, c)
|
|
|
+ f = state.create_node()
|
|
|
+ g = state.create_edge(f, e)
|
|
|
+ h = state.create_edge(b, c)
|
|
|
+ assert a is not None
|
|
|
+ assert b is not None
|
|
|
+ assert c is not None
|
|
|
+ assert d is not None
|
|
|
+ assert e is not None
|
|
|
+ assert f is not None
|
|
|
+ assert g is not None
|
|
|
+ assert h is not None
|
|
|
+
|
|
|
+ n = state.delete_edge(g)
|
|
|
+ assert n is None
|
|
|
+
|
|
|
+ l = state.read_outgoing(a)
|
|
|
+ assert l is not None
|
|
|
+ assert set(l) == set([d])
|
|
|
+
|
|
|
+ l = state.read_incoming(a)
|
|
|
+ assert l is not None
|
|
|
+ assert set(l) == set([])
|
|
|
+
|
|
|
+ l = state.read_outgoing(b)
|
|
|
+ assert l is not None
|
|
|
+ assert set(l) == set([h])
|
|
|
+
|
|
|
+ l = state.read_incoming(b)
|
|
|
+ assert l is not None
|
|
|
+ assert set(l) == set([d])
|
|
|
+
|
|
|
+ l = state.read_outgoing(c)
|
|
|
+ assert l is not None
|
|
|
+ assert set(l) == set([])
|
|
|
+
|
|
|
+ l = state.read_incoming(c)
|
|
|
+ assert l is not None
|
|
|
+ assert set(l) == set([h, e])
|
|
|
+
|
|
|
+ s, t = state.read_edge(d)
|
|
|
+ assert s == a
|
|
|
+ assert t == b
|
|
|
+
|
|
|
+ l = state.read_outgoing(d)
|
|
|
+ assert l is not None
|
|
|
+ assert set(l) == set([e])
|
|
|
+
|
|
|
+ l = state.read_incoming(d)
|
|
|
+ assert l is not None
|
|
|
+ assert set(l) == set([])
|
|
|
+
|
|
|
+ s, t = state.read_edge(e)
|
|
|
+ assert s == d
|
|
|
+ assert t == c
|
|
|
+
|
|
|
+ l = state.read_outgoing(e)
|
|
|
+ assert l is not None
|
|
|
+ assert set(l) == set([])
|
|
|
+
|
|
|
+ l = state.read_incoming(e)
|
|
|
+ assert l is not None
|
|
|
+ assert set(l) == set([])
|
|
|
+
|
|
|
+ s, t = state.read_edge(g)
|
|
|
+ assert s is None
|
|
|
+ assert t is None
|
|
|
+
|
|
|
+ l = state.read_outgoing(g)
|
|
|
+ assert l is None
|
|
|
+
|
|
|
+ l = state.read_incoming(g)
|
|
|
+ assert l is None
|
|
|
+
|
|
|
+ l = state.read_outgoing(f)
|
|
|
+ assert l is not None
|
|
|
+ assert set(l) == set([])
|
|
|
+
|
|
|
+ l = state.read_incoming(f)
|
|
|
+ assert l is not None
|
|
|
+ assert set(l) == set([])
|
|
|
+
|
|
|
+ s, t = state.read_edge(h)
|
|
|
+ assert s == b
|
|
|
+ assert t == c
|
|
|
+
|
|
|
+ n = state.delete_edge(e)
|
|
|
+ assert n is None
|
|
|
+
|
|
|
+ l = state.read_outgoing(a)
|
|
|
+ assert l is not None
|
|
|
+ assert set(l) == set([d])
|
|
|
+
|
|
|
+ l = state.read_incoming(a)
|
|
|
+ assert l is not None
|
|
|
+ assert set(l) == set([])
|
|
|
+
|
|
|
+ l = state.read_outgoing(b)
|
|
|
+ assert l is not None
|
|
|
+ assert set(l) == set([h])
|
|
|
+
|
|
|
+ l = state.read_incoming(b)
|
|
|
+ assert l is not None
|
|
|
+ assert set(l) == set([d])
|
|
|
+
|
|
|
+ l = state.read_outgoing(c)
|
|
|
+ assert l is not None
|
|
|
+ assert set(l) == set([])
|
|
|
+
|
|
|
+ l = state.read_incoming(c)
|
|
|
+ assert l is not None
|
|
|
+ assert set(l) == set([h])
|
|
|
+
|
|
|
+ s, t = state.read_edge(d)
|
|
|
+ assert s == a
|
|
|
+ assert t == b
|
|
|
+
|
|
|
+ l = state.read_outgoing(d)
|
|
|
+ assert l is not None
|
|
|
+ assert set(l) == set([])
|
|
|
+
|
|
|
+ l = state.read_incoming(d)
|
|
|
+ assert l is not None
|
|
|
+ assert set(l) == set([])
|
|
|
+
|
|
|
+ s, t = state.read_edge(e)
|
|
|
+ assert s is None
|
|
|
+ assert t is None
|
|
|
+
|
|
|
+ l = state.read_outgoing(e)
|
|
|
+ assert l is None
|
|
|
+
|
|
|
+ l = state.read_incoming(e)
|
|
|
+ assert l is None
|
|
|
+
|
|
|
+ s, t = state.read_edge(g)
|
|
|
+ assert s is None
|
|
|
+ assert t is None
|
|
|
+
|
|
|
+ l = state.read_outgoing(g)
|
|
|
+ assert l is None
|
|
|
+
|
|
|
+ l = state.read_incoming(g)
|
|
|
+ assert l is None
|
|
|
+
|
|
|
+ l = state.read_outgoing(f)
|
|
|
+ assert l is not None
|
|
|
+ assert set(l) == set([])
|
|
|
+
|
|
|
+ l = state.read_incoming(f)
|
|
|
+ assert l is not None
|
|
|
+ assert set(l) == set([])
|
|
|
+
|
|
|
+ s, t = state.read_edge(h)
|
|
|
+ assert s == b
|
|
|
+ assert t == c
|
|
|
+
|
|
|
+ n = state.delete_edge(d)
|
|
|
+ assert n is None
|
|
|
+
|
|
|
+ l = state.read_outgoing(a)
|
|
|
+ assert l is not None
|
|
|
+ assert set(l) == set([])
|
|
|
+
|
|
|
+ l = state.read_incoming(a)
|
|
|
+ assert l is not None
|
|
|
+ assert set(l) == set([])
|
|
|
+
|
|
|
+ l = state.read_outgoing(b)
|
|
|
+ assert l is not None
|
|
|
+ assert set(l) == set([h])
|
|
|
+
|
|
|
+ l = state.read_incoming(b)
|
|
|
+ assert l is not None
|
|
|
+ assert set(l) == set([])
|
|
|
+
|
|
|
+ l = state.read_outgoing(c)
|
|
|
+ assert l is not None
|
|
|
+ assert set(l) == set([])
|
|
|
+
|
|
|
+ l = state.read_incoming(c)
|
|
|
+ assert l is not None
|
|
|
+ assert set(l) == set([h])
|
|
|
+
|
|
|
+ s, t = state.read_edge(d)
|
|
|
+ assert s is None
|
|
|
+ assert t is None
|
|
|
+
|
|
|
+ l = state.read_outgoing(d)
|
|
|
+ assert l is None
|
|
|
+
|
|
|
+ l = state.read_incoming(d)
|
|
|
+ assert l is None
|
|
|
+
|
|
|
+ s, t = state.read_edge(e)
|
|
|
+ assert s is None
|
|
|
+ assert t is None
|
|
|
+
|
|
|
+ l = state.read_outgoing(e)
|
|
|
+ assert l is None
|
|
|
+
|
|
|
+ l = state.read_incoming(e)
|
|
|
+ assert l is None
|
|
|
+
|
|
|
+ s, t = state.read_edge(g)
|
|
|
+ assert s is None
|
|
|
+ assert t is None
|
|
|
+
|
|
|
+ l = state.read_outgoing(g)
|
|
|
+ assert l == None
|
|
|
+
|
|
|
+ l = state.read_incoming(g)
|
|
|
+ assert l == None
|
|
|
+
|
|
|
+ l = state.read_outgoing(f)
|
|
|
+ assert l is not None
|
|
|
+ assert set(l) == set([])
|
|
|
+
|
|
|
+ l = state.read_incoming(f)
|
|
|
+ assert l is not None
|
|
|
+ assert set(l) == set([])
|
|
|
+
|
|
|
+ s, t = state.read_edge(h)
|
|
|
+ assert s == b
|
|
|
+ assert t == c
|