def test_root_3(self): merkle_tree = MerkleTree() merkle_tree.add(elements[0]) merkle_tree.add(elements[1]) merkle_tree.add(elements[2]) H01 = H(elements[0] + elements[1]) self.assertEqual(merkle_tree.root, H(H01 + elements[2]))
def test_proof(self): merkle_tree = MerkleTree() for el in elements: merkle_tree.add(el) H01 = H(elements[0] + elements[1]) H45 = H(elements[4] + elements[5]) p = merkle_tree.prove_leaf(3) # H('of') self.assertEqual(p[0], elements[2]) # sibling of leaf 3 self.assertEqual(p[1], H01) self.assertEqual(p[2], H45)
def test_set(self): new_el = H("something new") for i in range(len(elements)): # check if the Merkle trees obtained by adding the first i elements, and then setting the i # or constructing directing with the first i elements, are identical. mt1 = MerkleTree(elements) mt1.set(i, new_el) elements_modified = elements[:i] + [new_el] + elements[i + 1:] mt2 = MerkleTree(elements_modified) self.assertMerkleTreesEqual(mt1, mt2)
import unittest from accumulator.common import H from accumulator.smart_accumulator import SmartAccumulatorFactory, SmartProver from .base import BaseAccumulatorTestSuite plain_elements = ["some", "small", "list", "of", "distinct", "elements"] elements = [H(el) for el in plain_elements] class SmartAccumulatorTestSuite(BaseAccumulatorTestSuite, unittest.TestCase): """Smart accumulator test cases.""" def get_instances(self): factory = SmartAccumulatorFactory() return factory.create_accumulator() def test_prover_store_roots(self): # Test that SmartProver actually stores the accumulators for all the added elements acc, prover, _ = self.get_instances() roots = dict() for i in range(len(elements)): acc.add(elements[i]) roots[i + 1] = acc.get_root() # comparing the roots is enough for i in range(1, len(elements) + 1): self.assertEqual(prover.R[i], roots[i]) def test_prover_make_tree_indexes(self): self.assertListEqual(SmartProver.make_tree_indexes(4), [3, 2, 4]) self.assertListEqual(SmartProver.make_tree_indexes(5), [5, 2, 4]) self.assertListEqual(SmartProver.make_tree_indexes(7), [7, 6, 4])