git ssb

0+

wanderer🌟 / js-dfinity-radix-tree



Tree: 8c69b0f11212bb2c638df784054352a8f974a63b

Files: 8c69b0f11212bb2c638df784054352a8f974a63b / tests / index.js

2705 bytesRaw
1const tape = require('tape')
2const IPFS = require('ipfs')
3const RadixTree = require('../')
4
5// start ipfs
6const node = new IPFS({
7 start: false
8})
9
10node.on('ready', () => {
11 tape('set and get', async t => {
12 const tree = new RadixTree({
13 dag: node.dag
14 })
15 try {
16 await tree.set('test', 'cat')
17 let val = await tree.get('test')
18 t.equals(val, 'cat')
19 await tree.set('te', 'blop')
20 val = await tree.get('test')
21 t.equals(val, 'cat')
22
23 val = await tree.get('te')
24 t.equals(val, 'blop')
25
26 await tree.set('rad', 'cat2')
27
28 val = await tree.get('rad')
29 t.equals(val, 'cat2')
30
31 await tree.set('test', 'cat111')
32 val = await tree.get('test')
33 t.equals(val, 'cat111')
34 } catch (e) {
35 console.log(e)
36 }
37 t.end()
38 })
39
40 tape('branch nodes', async t => {
41 const tree = new RadixTree({
42 dag: node.dag
43 })
44 try {
45 let key0 = new RadixTree.ArrayConstructor([1, 1, 0, 0])
46 await tree.set(key0, 'cat')
47 let key1 = new RadixTree.ArrayConstructor([0, 1, 0, 1])
48 await tree.set(key1, 'cat2')
49 let val = await tree.get(key0)
50 t.equals(val, 'cat')
51
52 val = await tree.get(key1)
53 t.equals(val, 'cat2')
54
55 let key3 = new RadixTree.ArrayConstructor([0, 1, 0, 1, 1])
56 await tree.set(key3, 'test')
57 val = await tree.get(key3)
58
59 t.equals(val, 'test')
60
61 let key4 = new RadixTree.ArrayConstructor([0, 1, 0, 0, 0])
62 await tree.set(key4, 'dog')
63 val = await tree.get(key4)
64 t.equals(val, 'dog')
65 } catch (e) {
66 console.log(e)
67 }
68 t.end()
69 })
70
71 tape('delete', async t => {
72 const tree = new RadixTree({
73 dag: node.dag
74 })
75 try {
76 await tree.set('test', 'cat')
77 await tree.set('ter', 'cat3')
78 await tree.delete('te')
79 await tree.delete('test')
80 await tree.delete('ter')
81 t.equals(tree.root['/'], null)
82
83 // tests delete midle branchs
84 await tree.set('test', 'cat')
85 await tree.set('te', 'cat2')
86 await tree.set('ter', 'cat3')
87 await tree.delete('te')
88 let val = await tree.get('test')
89 t.equals(val, 'cat')
90
91 // tests delete end branchs
92 await tree.set('te', 'cat2')
93 await tree.delete('ter')
94 await tree.delete('te')
95 await tree.delete('test')
96 t.equals(tree.root['/'], null)
97 } catch (e) {
98 console.log(e)
99 }
100 t.end()
101 })
102
103 tape('large values', async t => {
104 const tree = new RadixTree({
105 dag: node.dag
106 })
107 const saved = new Buffer(33).fill(1)
108 await tree.set('test', saved)
109 const value = await tree.get('test')
110 t.equals(value.toString(), saved.toString())
111 t.end()
112 })
113})
114

Built with git-ssb-web