git ssb

0+

wanderer🌟 / js-dfinity-radix-tree



Commit f9516195f8ab298aa8892fc99db3029a7a3d7742

fixed null

wanderer committed on 8/4/2017, 8:06:42 PM
Parent: 1bb0f712f235b45d52a42d0114f890762ece4602

Files changed

index.jschanged
tests/index.jschanged
index.jsView
@@ -9,9 +9,9 @@
99 const VALUE = 2
1010
1111 const RadixTree = module.exports = class RadixTree {
1212 constructor (opts) {
13- this.root = opts.root || {'/': null}
13 + this.root = opts.root || {'/': undefined}
1414 this.graph = opts.graph || new Graph(opts.dag)
1515 }
1616
1717 static get ArrayConstructor () {
@@ -100,9 +100,9 @@
100100 value = {'/': value}
101101 }
102102
103103 // initial set
104- if (this.root['/'] === null) {
104 + if (this.root['/'] === undefined) {
105105 this.root['/'] = createNode(key, [], value)['/']
106106 } else {
107107 const result = await this._get(key)
108108 let root = result.root
@@ -149,12 +149,12 @@
149149 if (getBranch(root).length) {
150150 joinNodes(root)
151151 } else {
152152 if (!parent) {
153- root['/'] = null
153 + root['/'] = undefined
154154 } else {
155155 let branch = getBranch(parent)
156- branch = branch.map(node => node === root ? null : node)
156 + branch = branch.map(node => node === root ? undefined : node)
157157 setBranch(parent, branch)
158158
159159 joinNodes(parent)
160160 }
@@ -188,9 +188,9 @@
188188 }
189189 }
190190 }
191191
192- flush () {
192 + createMerkleRoot () {
193193 return this.graph.flush(this.root)
194194 }
195195
196196 static formatKey (key) {
tests/index.jsView
@@ -1,5 +1,6 @@
11 const tape = require('tape')
2 +const crypto = require('crypto')
23 const IPFS = require('ipfs')
34 const RadixTree = require('../')
45
56 // start ipfs
@@ -11,8 +12,9 @@
1112 tape('set and get', async t => {
1213 let tree = new RadixTree({
1314 dag: node.dag
1415 })
16 +
1517 await tree.set('test', 'cat')
1618 let val = await tree.get('test')
1719 t.equals(val, 'cat')
1820 await tree.set('te', 'blop')
@@ -30,9 +32,9 @@
3032 await tree.set('test', 'cat111')
3133 val = await tree.get('test')
3234 t.equals(val, 'cat111')
3335
34- const stateRoot = await tree.flush()
36 + const stateRoot = await tree.createMerkleRoot()
3537
3638 // try reteriving node from ipfs
3739 tree = new RadixTree({
3840 dag: node.dag,
@@ -46,9 +48,9 @@
4648 t.equals(val, 'cat2')
4749
4850 val = await tree.get('test')
4951 t.equals(val, 'cat111')
50- console.log(JSON.stringify(tree.root, null, 2))
52 + // console.log(JSON.stringify(tree.root, null, 2))
5153
5254 t.end()
5355 })
5456
@@ -75,9 +77,19 @@
7577
7678 let key4 = new RadixTree.ArrayConstructor([0, 1, 0, 0, 0])
7779 await tree.set(key4, 'dog')
7880 val = await tree.get(key4)
79- t.equals(val, 'dog')
81 +
82 + let key5 = new RadixTree.ArrayConstructor([0, 1, 1, 0, 0])
83 + await tree.set(key5, 'dog2')
84 + val = await tree.get(key5)
85 + t.equals(val, 'dog2')
86 +
87 + await tree.delete(key0)
88 +
89 + console.log(JSON.stringify(tree.root, null, 2))
90 + val = await tree.get(key5)
91 + t.equals(val, 'dog2')
8092 t.end()
8193 })
8294
8395 tape('delete', async t => {
@@ -89,9 +101,9 @@
89101 await tree.set('ter', 'cat3')
90102 await tree.delete('te')
91103 await tree.delete('test')
92104 await tree.delete('ter')
93- t.equals(tree.root['/'], null)
105 + t.equals(tree.root['/'], undefined)
94106
95107 // tests delete midle branchs
96108 await tree.set('test', 'cat')
97109 await tree.set('te', 'cat2')
@@ -104,9 +116,9 @@
104116 await tree.set('te', 'cat2')
105117 await tree.delete('ter')
106118 await tree.delete('te')
107119 await tree.delete('test')
108- t.equals(tree.root['/'], null)
120 + t.equals(tree.root['/'], undefined)
109121 } catch (e) {
110122 console.log(e)
111123 }
112124 t.end()
@@ -121,5 +133,17 @@
121133 const value = await tree.get('test')
122134 t.equals(value.toString(), saved.toString())
123135 t.end()
124136 })
137 +
138 + tape('falures', async t => {
139 + const tree = new RadixTree({
140 + dag: node.dag
141 + })
142 + const key = crypto.createHash('sha256').update((0).toString()).digest().slice(0, 20)
143 + await tree.set(key, 0)
144 + const value = await tree.get(key)
145 + t.equals(value, 0)
146 +
147 + t.end()
148 + })
125149 })

Built with git-ssb-web