test_delete_node.py 4.6 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 == None
  6. @pytest.mark.usefixtures("state")
  7. def test_delete_node_no_value(state):
  8. a = state.create_node()
  9. assert a != None
  10. n = state.delete_node(a)
  11. assert n == None
  12. @pytest.mark.usefixtures("state")
  13. def test_delete_node_value(state):
  14. a = state.create_nodevalue(1)
  15. assert a != None
  16. d = state.read_value(a)
  17. assert d == 1
  18. n = state.delete_node(a)
  19. assert n == None
  20. d = state.read_value(a)
  21. assert d == 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 != None
  28. assert b != None
  29. assert c != None
  30. n = state.delete_node(c)
  31. assert n == 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 != None
  38. assert b != None
  39. assert c != None
  40. n = state.delete_node(a)
  41. assert n == None
  42. d = state.read_value(a)
  43. assert d == None
  44. s, t = state.read_edge(c)
  45. assert s == None
  46. assert t == None
  47. d = state.read_outgoing(b)
  48. assert d != 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 != None
  56. assert b != None
  57. assert c != None
  58. n = state.delete_node(a)
  59. assert n == None
  60. d = state.read_value(a)
  61. assert d == None
  62. s, t = state.read_edge(c)
  63. assert s == None
  64. assert t == None
  65. d = state.read_outgoing(b)
  66. assert d != 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 != None
  76. assert b != None
  77. assert c != None
  78. assert e != None
  79. assert f != None
  80. n = state.delete_node(a)
  81. assert n == None
  82. d = state.read_value(a)
  83. assert d == None
  84. s, t = state.read_edge(c)
  85. assert s == None
  86. assert t == None
  87. d = state.read_incoming(b)
  88. assert d != None
  89. assert set(d) == set([])
  90. s, t = state.read_edge(f)
  91. assert s == None
  92. assert t == None
  93. d = state.read_outgoing(e)
  94. assert d != 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 != None
  103. assert b != None
  104. assert c != None
  105. assert d != None
  106. n = state.delete_node(a)
  107. assert n == None
  108. d = state.read_value(a)
  109. assert d == None
  110. s, t = state.read_edge(c)
  111. assert s == None
  112. assert t == None
  113. s, t = state.read_edge(d)
  114. assert s == None
  115. assert t == None
  116. d = state.read_outgoing(b)
  117. assert d != 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 != None
  130. assert b != None
  131. assert c != None
  132. assert d != None
  133. assert e != None
  134. assert f != None
  135. assert g != None
  136. assert h != None
  137. n = state.delete_node(a)
  138. assert n == None
  139. l = state.read_outgoing(a)
  140. assert l == None
  141. l = state.read_incoming(a)
  142. assert l == None
  143. l = state.read_outgoing(b)
  144. assert l != None
  145. assert set(l) == set([h])
  146. l = state.read_incoming(b)
  147. assert l != None
  148. assert set(l) == set([])
  149. l = state.read_outgoing(c)
  150. assert l != None
  151. assert set(l) == set([])
  152. l = state.read_incoming(c)
  153. assert l != None
  154. assert set(l) == set([h])
  155. s, t = state.read_edge(d)
  156. assert s == None
  157. assert t == None
  158. s, t = state.read_edge(e)
  159. assert s == None
  160. assert t == None
  161. s, t = state.read_edge(g)
  162. assert s == None
  163. assert t == None
  164. l = state.read_outgoing(f)
  165. assert l != None
  166. assert set(l) == set([])
  167. l = state.read_incoming(f)
  168. assert l != None
  169. assert set(l) == set([])
  170. s, t = state.read_edge(h)
  171. assert s == b
  172. assert t == c