Fixed deletes

This commit is contained in:
Vitalik Buterin 2017-08-01 08:49:08 -04:00
parent 210cae3fed
commit 6707f00277
2 changed files with 11 additions and 3 deletions

View File

@ -56,7 +56,10 @@ def _get(db, node, keypath):
def _update(db, node, keypath, val): def _update(db, node, keypath, val):
if not keypath: if not keypath:
return hash_and_save(db, val) if val:
return hash_and_save(db, val)
else:
return b''
if not node: if not node:
return hash_and_save(db, encode_kv_node(keypath, hash_and_save(db, val))) return hash_and_save(db, encode_kv_node(keypath, hash_and_save(db, val)))
L, R, nodetype = parse_node(db.get(node)) L, R, nodetype = parse_node(db.get(node))

View File

@ -21,12 +21,17 @@ for i in range(3):
#print(t.to_dict()) #print(t.to_dict())
t.update(k, v) t.update(k, v)
assert t.get(k) == v assert t.get(k) == v
#t.print_nodes() if not random.randrange(100):
t.to_dict()
assert r1 is None or t.root == r1 assert r1 is None or t.root == r1
r1 = t.root r1 = t.root
t.update(kvpairs[0][0], kvpairs[0][1]) t.update(kvpairs[0][0], kvpairs[0][1])
assert t.root == r1 assert t.root == r1
print(t.get_branch(kvpairs[0][0])) print(t.get_branch(kvpairs[0][0]))
print(encode_hex(t.root)) print(encode_hex(t.root))
for k, v in shuffle_in_place(kvpairs):
t.update(k, b'')
if not random.randrange(100):
t.to_dict()
assert t.root == b''
t.to_dict()