@cryptotaxi247 / kubo / commits / 683b81760

merkledag/traverse: Fix tests after node pointer removal

License: MIT Signed-off-by: Mildred Ki'Lya <mildred-pub.git@mildred.fr>

Mildred Ki'Lya committed Mar 2, 2016 at 22:32 UTC 683b81760e807571cebfa300e818a63ac51b8c6e
1 file changed +79 -61
merkledag/traverse/traverse_test.go
+79 -61
@@ -6,12 +6,14 @@ import (
6 "testing"
7
8 mdag "github.com/ipfs/go-ipfs/merkledag"
9 + mdagtest "github.com/ipfs/go-ipfs/merkledag/test"
10 )
11
12 func TestDFSPreNoSkip(t *testing.T) {
12 - opts := Options{Order: DFSPre}
13 + ds := mdagtest.Mock()
14 + opts := Options{Order: DFSPre, DAG: ds}
15
14 - testWalkOutputs(t, newFan(t), opts, []byte(`
16 + testWalkOutputs(t, newFan(t, ds), opts, []byte(`
17 0 /a
18 1 /a/aa
19 1 /a/ab
@@ -19,7 +21,7 @@ func TestDFSPreNoSkip(t *testing.T) {
21 1 /a/ad
22 `))
23
22 - testWalkOutputs(t, newLinkedList(t), opts, []byte(`
24 + testWalkOutputs(t, newLinkedList(t, ds), opts, []byte(`
25 0 /a
26 1 /a/aa
27 2 /a/aa/aaa
@@ -27,7 +29,7 @@ func TestDFSPreNoSkip(t *testing.T) {
29 4 /a/aa/aaa/aaaa/aaaaa
30 `))
31
30 - testWalkOutputs(t, newBinaryTree(t), opts, []byte(`
32 + testWalkOutputs(t, newBinaryTree(t, ds), opts, []byte(`
33 0 /a
34 1 /a/aa
35 2 /a/aa/aaa
@@ -37,7 +39,7 @@ func TestDFSPreNoSkip(t *testing.T) {
39 2 /a/ab/abb
40 `))
41
40 - testWalkOutputs(t, newBinaryDAG(t), opts, []byte(`
42 + testWalkOutputs(t, newBinaryDAG(t, ds), opts, []byte(`
43 0 /a
44 1 /a/aa
45 2 /a/aa/aaa
@@ -73,9 +75,10 @@ func TestDFSPreNoSkip(t *testing.T) {
75 }
76
77 func TestDFSPreSkip(t *testing.T) {
76 - opts := Options{Order: DFSPre, SkipDuplicates: true}
78 + ds := mdagtest.Mock()
79 + opts := Options{Order: DFSPre, SkipDuplicates: true, DAG: ds}
80
78 - testWalkOutputs(t, newFan(t), opts, []byte(`
81 + testWalkOutputs(t, newFan(t, ds), opts, []byte(`
82 0 /a
83 1 /a/aa
84 1 /a/ab
@@ -83,7 +86,7 @@ func TestDFSPreSkip(t *testing.T) {
86 1 /a/ad
87 `))
88
86 - testWalkOutputs(t, newLinkedList(t), opts, []byte(`
89 + testWalkOutputs(t, newLinkedList(t, ds), opts, []byte(`
90 0 /a
91 1 /a/aa
92 2 /a/aa/aaa
@@ -91,7 +94,7 @@ func TestDFSPreSkip(t *testing.T) {
94 4 /a/aa/aaa/aaaa/aaaaa
95 `))
96
94 - testWalkOutputs(t, newBinaryTree(t), opts, []byte(`
97 + testWalkOutputs(t, newBinaryTree(t, ds), opts, []byte(`
98 0 /a
99 1 /a/aa
100 2 /a/aa/aaa
@@ -101,7 +104,7 @@ func TestDFSPreSkip(t *testing.T) {
104 2 /a/ab/abb
105 `))
106
104 - testWalkOutputs(t, newBinaryDAG(t), opts, []byte(`
107 + testWalkOutputs(t, newBinaryDAG(t, ds), opts, []byte(`
108 0 /a
109 1 /a/aa
110 2 /a/aa/aaa
@@ -111,9 +114,10 @@ func TestDFSPreSkip(t *testing.T) {
114 }
115
116 func TestDFSPostNoSkip(t *testing.T) {
114 - opts := Options{Order: DFSPost}
117 + ds := mdagtest.Mock()
118 + opts := Options{Order: DFSPost, DAG: ds}
119
116 - testWalkOutputs(t, newFan(t), opts, []byte(`
120 + testWalkOutputs(t, newFan(t, ds), opts, []byte(`
121 1 /a/aa
122 1 /a/ab
123 1 /a/ac
@@ -121,7 +125,7 @@ func TestDFSPostNoSkip(t *testing.T) {
125 0 /a
126 `))
127
124 - testWalkOutputs(t, newLinkedList(t), opts, []byte(`
128 + testWalkOutputs(t, newLinkedList(t, ds), opts, []byte(`
129 4 /a/aa/aaa/aaaa/aaaaa
130 3 /a/aa/aaa/aaaa
131 2 /a/aa/aaa
@@ -129,7 +133,7 @@ func TestDFSPostNoSkip(t *testing.T) {
133 0 /a
134 `))
135
132 - testWalkOutputs(t, newBinaryTree(t), opts, []byte(`
136 + testWalkOutputs(t, newBinaryTree(t, ds), opts, []byte(`
137 2 /a/aa/aaa
138 2 /a/aa/aab
139 1 /a/aa
@@ -139,7 +143,7 @@ func TestDFSPostNoSkip(t *testing.T) {
143 0 /a
144 `))
145
142 - testWalkOutputs(t, newBinaryDAG(t), opts, []byte(`
146 + testWalkOutputs(t, newBinaryDAG(t, ds), opts, []byte(`
147 4 /a/aa/aaa/aaaa/aaaaa
148 4 /a/aa/aaa/aaaa/aaaaa
149 3 /a/aa/aaa/aaaa
@@ -175,9 +179,10 @@ func TestDFSPostNoSkip(t *testing.T) {
179 }
180
181 func TestDFSPostSkip(t *testing.T) {
178 - opts := Options{Order: DFSPost, SkipDuplicates: true}
182 + ds := mdagtest.Mock()
183 + opts := Options{Order: DFSPost, SkipDuplicates: true, DAG: ds}
184
180 - testWalkOutputs(t, newFan(t), opts, []byte(`
185 + testWalkOutputs(t, newFan(t, ds), opts, []byte(`
186 1 /a/aa
187 1 /a/ab
188 1 /a/ac
@@ -185,7 +190,7 @@ func TestDFSPostSkip(t *testing.T) {
190 0 /a
191 `))
192
188 - testWalkOutputs(t, newLinkedList(t), opts, []byte(`
193 + testWalkOutputs(t, newLinkedList(t, ds), opts, []byte(`
194 4 /a/aa/aaa/aaaa/aaaaa
195 3 /a/aa/aaa/aaaa
196 2 /a/aa/aaa
@@ -193,7 +198,7 @@ func TestDFSPostSkip(t *testing.T) {
198 0 /a
199 `))
200
196 - testWalkOutputs(t, newBinaryTree(t), opts, []byte(`
201 + testWalkOutputs(t, newBinaryTree(t, ds), opts, []byte(`
202 2 /a/aa/aaa
203 2 /a/aa/aab
204 1 /a/aa
@@ -203,7 +208,7 @@ func TestDFSPostSkip(t *testing.T) {
208 0 /a
209 `))
210
206 - testWalkOutputs(t, newBinaryDAG(t), opts, []byte(`
211 + testWalkOutputs(t, newBinaryDAG(t, ds), opts, []byte(`
212 4 /a/aa/aaa/aaaa/aaaaa
213 3 /a/aa/aaa/aaaa
214 2 /a/aa/aaa
@@ -213,9 +218,10 @@ func TestDFSPostSkip(t *testing.T) {
218 }
219
220 func TestBFSNoSkip(t *testing.T) {
216 - opts := Options{Order: BFS}
221 + ds := mdagtest.Mock()
222 + opts := Options{Order: BFS, DAG: ds}
223
218 - testWalkOutputs(t, newFan(t), opts, []byte(`
224 + testWalkOutputs(t, newFan(t, ds), opts, []byte(`
225 0 /a
226 1 /a/aa
227 1 /a/ab
@@ -223,7 +229,7 @@ func TestBFSNoSkip(t *testing.T) {
229 1 /a/ad
230 `))
231
226 - testWalkOutputs(t, newLinkedList(t), opts, []byte(`
232 + testWalkOutputs(t, newLinkedList(t, ds), opts, []byte(`
233 0 /a
234 1 /a/aa
235 2 /a/aa/aaa
@@ -231,7 +237,7 @@ func TestBFSNoSkip(t *testing.T) {
237 4 /a/aa/aaa/aaaa/aaaaa
238 `))
239
234 - testWalkOutputs(t, newBinaryTree(t), opts, []byte(`
240 + testWalkOutputs(t, newBinaryTree(t, ds), opts, []byte(`
241 0 /a
242 1 /a/aa
243 1 /a/ab
@@ -241,7 +247,7 @@ func TestBFSNoSkip(t *testing.T) {
247 2 /a/ab/abb
248 `))
249
244 - testWalkOutputs(t, newBinaryDAG(t), opts, []byte(`
250 + testWalkOutputs(t, newBinaryDAG(t, ds), opts, []byte(`
251 0 /a
252 1 /a/aa
253 1 /a/aa
@@ -277,9 +283,10 @@ func TestBFSNoSkip(t *testing.T) {
283 }
284
285 func TestBFSSkip(t *testing.T) {
280 - opts := Options{Order: BFS, SkipDuplicates: true}
286 + ds := mdagtest.Mock()
287 + opts := Options{Order: BFS, SkipDuplicates: true, DAG: ds}
288
282 - testWalkOutputs(t, newFan(t), opts, []byte(`
289 + testWalkOutputs(t, newFan(t, ds), opts, []byte(`
290 0 /a
291 1 /a/aa
292 1 /a/ab
@@ -287,7 +294,7 @@ func TestBFSSkip(t *testing.T) {
294 1 /a/ad
295 `))
296
290 - testWalkOutputs(t, newLinkedList(t), opts, []byte(`
297 + testWalkOutputs(t, newLinkedList(t, ds), opts, []byte(`
298 0 /a
299 1 /a/aa
300 2 /a/aa/aaa
@@ -295,7 +302,7 @@ func TestBFSSkip(t *testing.T) {
302 4 /a/aa/aaa/aaaa/aaaaa
303 `))
304
298 - testWalkOutputs(t, newBinaryTree(t), opts, []byte(`
305 + testWalkOutputs(t, newBinaryTree(t, ds), opts, []byte(`
306 0 /a
307 1 /a/aa
308 1 /a/ab
@@ -305,7 +312,7 @@ func TestBFSSkip(t *testing.T) {
312 2 /a/ab/abb
313 `))
314
308 - testWalkOutputs(t, newBinaryDAG(t), opts, []byte(`
315 + testWalkOutputs(t, newBinaryDAG(t, ds), opts, []byte(`
316 0 /a
317 1 /a/aa
318 2 /a/aa/aaa
@@ -341,57 +348,68 @@ func testWalkOutputs(t *testing.T, root *mdag.Node, opts Options, expect []byte)
348 }
349 }
350
344 -func newFan(t *testing.T) *mdag.Node {
351 +func newFan(t *testing.T, ds mdag.DAGService) *mdag.Node {
352 a := &mdag.Node{Data: []byte("/a")}
346 - addChild(t, a, "aa")
347 - addChild(t, a, "ab")
348 - addChild(t, a, "ac")
349 - addChild(t, a, "ad")
353 + addLink(t, ds, a, child(t, ds, a, "aa"))
354 + addLink(t, ds, a, child(t, ds, a, "ab"))
355 + addLink(t, ds, a, child(t, ds, a, "ac"))
356 + addLink(t, ds, a, child(t, ds, a, "ad"))
357 return a
358 }
359
353 -func newLinkedList(t *testing.T) *mdag.Node {
360 +func newLinkedList(t *testing.T, ds mdag.DAGService) *mdag.Node {
361 a := &mdag.Node{Data: []byte("/a")}
355 - aa := addChild(t, a, "aa")
356 - aaa := addChild(t, aa, "aaa")
357 - aaaa := addChild(t, aaa, "aaaa")
358 - addChild(t, aaaa, "aaaaa")
362 + aa := child(t, ds, a, "aa")
363 + aaa := child(t, ds, aa, "aaa")
364 + aaaa := child(t, ds, aaa, "aaaa")
365 + aaaaa := child(t, ds, aaaa, "aaaaa")
366 + addLink(t, ds, aaaa, aaaaa)
367 + addLink(t, ds, aaa, aaaa)
368 + addLink(t, ds, aa, aaa)
369 + addLink(t, ds, a, aa)
370 return a
371 }
372
362 -func newBinaryTree(t *testing.T) *mdag.Node {
373 +func newBinaryTree(t *testing.T, ds mdag.DAGService) *mdag.Node {
374 a := &mdag.Node{Data: []byte("/a")}
364 - aa := addChild(t, a, "aa")
365 - ab := addChild(t, a, "ab")
366 - addChild(t, aa, "aaa")
367 - addChild(t, aa, "aab")
368 - addChild(t, ab, "aba")
369 - addChild(t, ab, "abb")
375 + aa := child(t, ds, a, "aa")
376 + ab := child(t, ds, a, "ab")
377 + addLink(t, ds, aa, child(t, ds, aa, "aaa"))
378 + addLink(t, ds, aa, child(t, ds, aa, "aab"))
379 + addLink(t, ds, ab, child(t, ds, ab, "aba"))
380 + addLink(t, ds, ab, child(t, ds, ab, "abb"))
381 + addLink(t, ds, a, aa)
382 + addLink(t, ds, a, ab)
383 return a
384 }
385
373 -func newBinaryDAG(t *testing.T) *mdag.Node {
386 +func newBinaryDAG(t *testing.T, ds mdag.DAGService) *mdag.Node {
387 a := &mdag.Node{Data: []byte("/a")}
375 - aa := addChild(t, a, "aa")
376 - aaa := addChild(t, aa, "aaa")
377 - aaaa := addChild(t, aaa, "aaaa")
378 - aaaaa := addChild(t, aaaa, "aaaaa")
379 - addLink(t, a, aa)
380 - addLink(t, aa, aaa)
381 - addLink(t, aaa, aaaa)
382 - addLink(t, aaaa, aaaaa)
388 + aa := child(t, ds, a, "aa")
389 + aaa := child(t, ds, aa, "aaa")
390 + aaaa := child(t, ds, aaa, "aaaa")
391 + aaaaa := child(t, ds, aaaa, "aaaaa")
392 + addLink(t, ds, aaaa, aaaaa)
393 + addLink(t, ds, aaaa, aaaaa)
394 + addLink(t, ds, aaa, aaaa)
395 + addLink(t, ds, aaa, aaaa)
396 + addLink(t, ds, aa, aaa)
397 + addLink(t, ds, aa, aaa)
398 + addLink(t, ds, a, aa)
399 + addLink(t, ds, a, aa)
400 return a
401 }
402
386 -func addLink(t *testing.T, a, b *mdag.Node) {
403 +func addLink(t *testing.T, ds mdag.DAGService, a, b *mdag.Node) {
404 to := string(a.Data) + "2" + string(b.Data)
405 + if _, err := ds.Add(b); err != nil {
406 + t.Error(err)
407 + }
408 if err := a.AddNodeLink(to, b); err != nil {
409 t.Error(err)
410 }
411 }
412
393 -func addChild(t *testing.T, a *mdag.Node, name string) *mdag.Node {
394 - c := &mdag.Node{Data: []byte(string(a.Data) + "/" + name)}
395 - addLink(t, a, c)
396 - return c
413 +func child(t *testing.T, ds mdag.DAGService, a *mdag.Node, name string) *mdag.Node {
414 + return &mdag.Node{Data: []byte(string(a.Data) + "/" + name)}
415 }