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
}