public void Can_get_proof_on_a_populated_trie_on_an_index(uint nodesCount) { MerkleTree merkleTree = new ShaMerkleTree(new MemDb()); for (int i = 0; i < nodesCount; i++) { merkleTree.Insert(_testLeaves[0]); } MerkleTreeNode[] proof = merkleTree.GetProof(0); proof.Should().HaveCount(MerkleTree.TreeDepth - 1); for (int proofLevel = 0; proofLevel < MerkleTree.TreeDepth - 1; proofLevel++) { if (nodesCount > 1 >> proofLevel) { proof[proofLevel].Should().NotBe(ShaMerkleTree.ZeroHashes[proofLevel], proofLevel.ToString()); } else { proof[proofLevel].Hash.Should().Be(Bytes32.Wrap(ShaMerkleTree.ZeroHashes[proofLevel]), proofLevel.ToString()); } } }
public void Throws_on_get_proof_on_the_leaf_index_out_of_bounds(uint leafIndex) { MerkleTree merkleTree = new ShaMerkleTree(new MemDb()); Assert.Throws <IndexOutOfRangeException>(() => merkleTree.GetProof(leafIndex)); }