import random
from unittest import TestCase
from hashtree import HashTree
from . import RedirectedOutput
random.seed(17)
def build_tree(leaves):
tree = HashTree(len(leaves))
for l in leaves:
tree.insert_leaf(l)
tree.build_tree()
return tree
class TestMorevna(RedirectedOutput, TestCase):
def test_batch_update(self):
leaves = [b"a" for i in range(8)]
t1 = build_tree(leaves)
keys = list(range(8))
for i in range(8):
random.shuffle(keys)
for k in keys[:i+1]:
leaves[k] = bytes([random.randrange(256)])
t2 = build_tree(leaves)
t1.batch_update((k + t1.leaf_start, leaves[k]) for k in keys[:i + 1])
self.assertEqual(t1.store, t2.store)