test_delete_edge.py 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397
  1. import pytest
  2. @pytest.mark.usefixtures("state")
  3. def test_delete_edge_no_exists(state):
  4. e = state.delete_edge(1)
  5. assert e is None
  6. @pytest.mark.usefixtures("state")
  7. def test_delete_edge_node(state):
  8. a = state.create_node()
  9. assert a is not None
  10. e = state.delete_edge(a)
  11. assert e is None
  12. @pytest.mark.usefixtures("state")
  13. def test_delete_edge_nodevalue(state):
  14. a = state.create_nodevalue(1)
  15. assert a is not None
  16. e = state.delete_edge(a)
  17. assert e is None
  18. @pytest.mark.usefixtures("state")
  19. def test_delete_edge_normal(state):
  20. a = state.create_nodevalue(1)
  21. b = state.create_node()
  22. c = state.create_edge(a, b)
  23. assert a is not None
  24. assert b is not None
  25. assert c is not None
  26. n = state.delete_edge(c)
  27. assert n is None
  28. l = state.read_outgoing(a)
  29. assert l is not None
  30. assert set(l) == set([])
  31. l = state.read_incoming(a)
  32. assert l is not None
  33. assert set(l) == set([])
  34. l = state.read_outgoing(b)
  35. assert l is not None
  36. assert set(l) == set([])
  37. l = state.read_incoming(b)
  38. assert l is not None
  39. assert set(l) == set([])
  40. @pytest.mark.usefixtures("state")
  41. def test_delete_edge_remove_recursive(state):
  42. a = state.create_nodevalue(1)
  43. b = state.create_node()
  44. c = state.create_edge(a, b)
  45. d = state.create_edge(c, b)
  46. assert a is not None
  47. assert b is not None
  48. assert c is not None
  49. assert d is not None
  50. n = state.delete_edge(c)
  51. assert n is None
  52. l = state.read_value(a)
  53. assert l == 1
  54. l = state.read_outgoing(a)
  55. assert l is not None
  56. assert set(l) == set([])
  57. l = state.read_incoming(a)
  58. assert l is not None
  59. assert set(l) == set([])
  60. s, t = state.read_edge(c)
  61. assert s is None
  62. assert t is None
  63. s, t = state.read_edge(d)
  64. assert s is None
  65. assert t is None
  66. l = state.read_outgoing(b)
  67. assert l is not None
  68. assert set(l) == set([])
  69. @pytest.mark.usefixtures("state")
  70. def test_delete_edge_remove_edge_recursive_deep(state):
  71. a = state.create_node()
  72. b = state.create_node()
  73. c = state.create_node()
  74. d = state.create_edge(a, b)
  75. e = state.create_edge(d, c)
  76. f = state.create_node()
  77. g = state.create_edge(f, e)
  78. h = state.create_edge(b, c)
  79. assert a is not None
  80. assert b is not None
  81. assert c is not None
  82. assert d is not None
  83. assert e is not None
  84. assert f is not None
  85. assert g is not None
  86. assert h is not None
  87. n = state.delete_edge(d)
  88. assert n is None
  89. l = state.read_outgoing(a)
  90. assert l is not None
  91. assert set(l) == set([])
  92. l = state.read_incoming(a)
  93. assert l is not None
  94. assert set(l) == set([])
  95. l = state.read_outgoing(b)
  96. assert l is not None
  97. assert set(l) == set([h])
  98. l = state.read_incoming(b)
  99. assert l is not None
  100. assert set(l) == set([])
  101. l = state.read_outgoing(c)
  102. assert l is not None
  103. assert set(l) == set([])
  104. l = state.read_incoming(c)
  105. assert l is not None
  106. assert set(l) == set([h])
  107. s, t = state.read_edge(d)
  108. assert s is None
  109. assert t is None
  110. s, t = state.read_edge(e)
  111. assert s is None
  112. assert t is None
  113. s, t = state.read_edge(g)
  114. assert s is None
  115. assert t is None
  116. l = state.read_outgoing(f)
  117. assert l is not None
  118. assert set(l) == set([])
  119. l = state.read_incoming(f)
  120. assert l is not None
  121. assert set(l) == set([])
  122. s, t = state.read_edge(h)
  123. assert s == b
  124. assert t == c
  125. @pytest.mark.usefixtures("state")
  126. def test_delete_edge_remove_edge_recursive_steps(state):
  127. a = state.create_node()
  128. b = state.create_node()
  129. c = state.create_node()
  130. d = state.create_edge(a, b)
  131. e = state.create_edge(d, c)
  132. f = state.create_node()
  133. g = state.create_edge(f, e)
  134. h = state.create_edge(b, c)
  135. assert a is not None
  136. assert b is not None
  137. assert c is not None
  138. assert d is not None
  139. assert e is not None
  140. assert f is not None
  141. assert g is not None
  142. assert h is not None
  143. n = state.delete_edge(g)
  144. assert n is None
  145. l = state.read_outgoing(a)
  146. assert l is not None
  147. assert set(l) == set([d])
  148. l = state.read_incoming(a)
  149. assert l is not None
  150. assert set(l) == set([])
  151. l = state.read_outgoing(b)
  152. assert l is not None
  153. assert set(l) == set([h])
  154. l = state.read_incoming(b)
  155. assert l is not None
  156. assert set(l) == set([d])
  157. l = state.read_outgoing(c)
  158. assert l is not None
  159. assert set(l) == set([])
  160. l = state.read_incoming(c)
  161. assert l is not None
  162. assert set(l) == set([h, e])
  163. s, t = state.read_edge(d)
  164. assert s == a
  165. assert t == b
  166. l = state.read_outgoing(d)
  167. assert l is not None
  168. assert set(l) == set([e])
  169. l = state.read_incoming(d)
  170. assert l is not None
  171. assert set(l) == set([])
  172. s, t = state.read_edge(e)
  173. assert s == d
  174. assert t == c
  175. l = state.read_outgoing(e)
  176. assert l is not None
  177. assert set(l) == set([])
  178. l = state.read_incoming(e)
  179. assert l is not None
  180. assert set(l) == set([])
  181. s, t = state.read_edge(g)
  182. assert s is None
  183. assert t is None
  184. l = state.read_outgoing(g)
  185. assert l is None
  186. l = state.read_incoming(g)
  187. assert l is None
  188. l = state.read_outgoing(f)
  189. assert l is not None
  190. assert set(l) == set([])
  191. l = state.read_incoming(f)
  192. assert l is not None
  193. assert set(l) == set([])
  194. s, t = state.read_edge(h)
  195. assert s == b
  196. assert t == c
  197. n = state.delete_edge(e)
  198. assert n is None
  199. l = state.read_outgoing(a)
  200. assert l is not None
  201. assert set(l) == set([d])
  202. l = state.read_incoming(a)
  203. assert l is not None
  204. assert set(l) == set([])
  205. l = state.read_outgoing(b)
  206. assert l is not None
  207. assert set(l) == set([h])
  208. l = state.read_incoming(b)
  209. assert l is not None
  210. assert set(l) == set([d])
  211. l = state.read_outgoing(c)
  212. assert l is not None
  213. assert set(l) == set([])
  214. l = state.read_incoming(c)
  215. assert l is not None
  216. assert set(l) == set([h])
  217. s, t = state.read_edge(d)
  218. assert s == a
  219. assert t == b
  220. l = state.read_outgoing(d)
  221. assert l is not None
  222. assert set(l) == set([])
  223. l = state.read_incoming(d)
  224. assert l is not None
  225. assert set(l) == set([])
  226. s, t = state.read_edge(e)
  227. assert s is None
  228. assert t is None
  229. l = state.read_outgoing(e)
  230. assert l is None
  231. l = state.read_incoming(e)
  232. assert l is None
  233. s, t = state.read_edge(g)
  234. assert s is None
  235. assert t is None
  236. l = state.read_outgoing(g)
  237. assert l is None
  238. l = state.read_incoming(g)
  239. assert l is None
  240. l = state.read_outgoing(f)
  241. assert l is not None
  242. assert set(l) == set([])
  243. l = state.read_incoming(f)
  244. assert l is not None
  245. assert set(l) == set([])
  246. s, t = state.read_edge(h)
  247. assert s == b
  248. assert t == c
  249. n = state.delete_edge(d)
  250. assert n is None
  251. l = state.read_outgoing(a)
  252. assert l is not None
  253. assert set(l) == set([])
  254. l = state.read_incoming(a)
  255. assert l is not None
  256. assert set(l) == set([])
  257. l = state.read_outgoing(b)
  258. assert l is not None
  259. assert set(l) == set([h])
  260. l = state.read_incoming(b)
  261. assert l is not None
  262. assert set(l) == set([])
  263. l = state.read_outgoing(c)
  264. assert l is not None
  265. assert set(l) == set([])
  266. l = state.read_incoming(c)
  267. assert l is not None
  268. assert set(l) == set([h])
  269. s, t = state.read_edge(d)
  270. assert s is None
  271. assert t is None
  272. l = state.read_outgoing(d)
  273. assert l is None
  274. l = state.read_incoming(d)
  275. assert l is None
  276. s, t = state.read_edge(e)
  277. assert s is None
  278. assert t is None
  279. l = state.read_outgoing(e)
  280. assert l is None
  281. l = state.read_incoming(e)
  282. assert l is None
  283. s, t = state.read_edge(g)
  284. assert s is None
  285. assert t is None
  286. l = state.read_outgoing(g)
  287. assert l == None
  288. l = state.read_incoming(g)
  289. assert l == None
  290. l = state.read_outgoing(f)
  291. assert l is not None
  292. assert set(l) == set([])
  293. l = state.read_incoming(f)
  294. assert l is not None
  295. assert set(l) == set([])
  296. s, t = state.read_edge(h)
  297. assert s == b
  298. assert t == c