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)