test_delete_node.py 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. import pytest
  2. @pytest.mark.usefixtures("state")
  3. def test_delete_node_no_exists(state):
  4. n = state.delete_node(-1)
  5. assert n is None
  6. @pytest.mark.usefixtures("state")
  7. def test_delete_node_no_value(state):
  8. a = state.create_node()
  9. assert a is not None
  10. n = state.delete_node(a)
  11. assert n is None
  12. @pytest.mark.usefixtures("state")
  13. def test_delete_node_value(state):
  14. a = state.create_nodevalue(1)
  15. assert a is not None
  16. d = state.read_value(a)
  17. assert d == 1
  18. n = state.delete_node(a)
  19. assert n is None
  20. d = state.read_value(a)
  21. assert d is None
  22. @pytest.mark.usefixtures("state")
  23. def test_delete_node_edge(state):
  24. a = state.create_node()
  25. b = state.create_node()
  26. c = state.create_edge(a, b)
  27. assert a is not None
  28. assert b is not None
  29. assert c is not None
  30. n = state.delete_node(c)
  31. assert n is None
  32. @pytest.mark.usefixtures("state")
  33. def test_delete_node_remove_edge_outgoing(state):
  34. a = state.create_nodevalue(1)
  35. b = state.create_node()
  36. c = state.create_edge(a, b)
  37. assert a is not None
  38. assert b is not None
  39. assert c is not None
  40. n = state.delete_node(a)
  41. assert n is None
  42. d = state.read_value(a)
  43. assert d is None
  44. s, t = state.read_edge(c)
  45. assert s is None
  46. assert t is None
  47. d = state.read_outgoing(b)
  48. assert d is not None
  49. assert set(d) == set([])
  50. @pytest.mark.usefixtures("state")
  51. def test_delete_node_remove_edge_incoming(state):
  52. a = state.create_nodevalue(1)
  53. b = state.create_node()
  54. c = state.create_edge(b, a)
  55. assert a is not None
  56. assert b is not None
  57. assert c is not None
  58. n = state.delete_node(a)
  59. assert n is None
  60. d = state.read_value(a)
  61. assert d is None
  62. s, t = state.read_edge(c)
  63. assert s is None
  64. assert t is None
  65. d = state.read_outgoing(b)
  66. assert d is not None
  67. assert set(d) == set([])
  68. @pytest.mark.usefixtures("state")
  69. def test_delete_node_remove_edge_both(state):
  70. a = state.create_nodevalue(1)
  71. b = state.create_node()
  72. c = state.create_edge(a, b)
  73. e = state.create_node()
  74. f = state.create_edge(e, a)
  75. assert a is not None
  76. assert b is not None
  77. assert c is not None
  78. assert e is not None
  79. assert f is not None
  80. n = state.delete_node(a)
  81. assert n is None
  82. d = state.read_value(a)
  83. assert d is None
  84. s, t = state.read_edge(c)
  85. assert s is None
  86. assert t is None
  87. d = state.read_incoming(b)
  88. assert d is not None
  89. assert set(d) == set([])
  90. s, t = state.read_edge(f)
  91. assert s is None
  92. assert t is None
  93. d = state.read_outgoing(e)
  94. assert d is not None
  95. assert set(d) == set([])
  96. @pytest.mark.usefixtures("state")
  97. def test_delete_node_remove_edge_recursive(state):
  98. a = state.create_nodevalue(1)
  99. b = state.create_node()
  100. c = state.create_edge(a, b)
  101. d = state.create_edge(c, b)
  102. assert a is not None
  103. assert b is not None
  104. assert c is not None
  105. assert d is not None
  106. n = state.delete_node(a)
  107. assert n is None
  108. d = state.read_value(a)
  109. assert d is None
  110. s, t = state.read_edge(c)
  111. assert s is None
  112. assert t is None
  113. s, t = state.read_edge(d)
  114. assert s is None
  115. assert t is None
  116. d = state.read_outgoing(b)
  117. assert d is not None
  118. assert set(d) == set([])
  119. @pytest.mark.usefixtures("state")
  120. def test_delete_node_remove_edge_recursive_deep(state):
  121. a = state.create_node()
  122. b = state.create_node()
  123. c = state.create_node()
  124. d = state.create_edge(a, b)
  125. e = state.create_edge(d, c)
  126. f = state.create_node()
  127. g = state.create_edge(f, e)
  128. h = state.create_edge(b, c)
  129. assert a is not None
  130. assert b is not None
  131. assert c is not None
  132. assert d is not None
  133. assert e is not None
  134. assert f is not None
  135. assert g is not None
  136. assert h is not None
  137. n = state.delete_node(a)
  138. assert n is None
  139. l = state.read_outgoing(a)
  140. assert l is None
  141. l = state.read_incoming(a)
  142. assert l is None
  143. l = state.read_outgoing(b)
  144. assert l is not None
  145. assert set(l) == set([h])
  146. l = state.read_incoming(b)
  147. assert l is not None
  148. assert set(l) == set([])
  149. l = state.read_outgoing(c)
  150. assert l is not None
  151. assert set(l) == set([])
  152. l = state.read_incoming(c)
  153. assert l is not None
  154. assert set(l) == set([h])
  155. s, t = state.read_edge(d)
  156. assert s is None
  157. assert t is None
  158. s, t = state.read_edge(e)
  159. assert s is None
  160. assert t is None
  161. s, t = state.read_edge(g)
  162. assert s is None
  163. assert t is None
  164. l = state.read_outgoing(f)
  165. assert l is not None
  166. assert set(l) == set([])
  167. l = state.read_incoming(f)
  168. assert l is not None
  169. assert set(l) == set([])
  170. s, t = state.read_edge(h)
  171. assert s == b
  172. assert t == c