import random from unittest import TestCase from hashtree import HashTree from . import RedirectedOutput random.seed(17) def buildTree(leaves): tree = HashTree(len(leaves)) for l in leaves: tree.insertLeaf(l) tree.buildTree() return tree class TestMorevna(RedirectedOutput, TestCase): def test_batchUpdate(self): leaves = [b"a" for i in range(8)] t1 = buildTree(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 = buildTree(leaves) t1.batchUpdate((k+t1.leafStart, leaves[k]) for k in keys[:i+1]) self.assertEqual(t1.store, t2.store)