CI: added more tests to improve code coverage
This commit is contained in:
@@ -181,14 +181,14 @@ bool get_merkle_proof(const std::vector<std::vector<hash>>& tree, const hash& h,
|
||||
|
||||
root_hash get_root_from_proof(hash h, const std::vector<hash>& proof, size_t index, size_t count)
|
||||
{
|
||||
if (count == 1) {
|
||||
return root_hash(h);
|
||||
}
|
||||
|
||||
if (index >= count) {
|
||||
return root_hash();
|
||||
}
|
||||
|
||||
if (count == 1) {
|
||||
return root_hash(h);
|
||||
}
|
||||
|
||||
hash tmp[2];
|
||||
|
||||
if (count == 2) {
|
||||
|
||||
@@ -93,6 +93,15 @@ TEST(merkle, tree)
|
||||
|
||||
auto check_full_tree = [&hashes, &root]() {
|
||||
std::vector<std::vector<hash>> tree;
|
||||
|
||||
{
|
||||
hash h;
|
||||
std::vector<hash> proof;
|
||||
uint32_t path;
|
||||
|
||||
ASSERT_FALSE(get_merkle_proof(tree, h, proof, path));
|
||||
}
|
||||
|
||||
merkle_hash_full_tree(hashes, tree);
|
||||
|
||||
ASSERT_GE(tree.size(), 1);
|
||||
@@ -127,12 +136,15 @@ TEST(merkle, tree)
|
||||
}
|
||||
}
|
||||
|
||||
const hash empty_hash;
|
||||
|
||||
for (size_t i = 0, n = hashes.size(); i < n; ++i) {
|
||||
const hash& h = hashes[i];
|
||||
std::vector<hash> proof;
|
||||
uint32_t path;
|
||||
|
||||
ASSERT_TRUE(get_merkle_proof(tree, h, proof, path));
|
||||
ASSERT_FALSE(get_merkle_proof(tree, empty_hash, proof, path));
|
||||
|
||||
uint32_t path_monero;
|
||||
ASSERT_TRUE(tree_path(n, i, &path_monero));
|
||||
@@ -140,6 +152,18 @@ TEST(merkle, tree)
|
||||
|
||||
ASSERT_TRUE(verify_merkle_proof(h, proof, i, n, root));
|
||||
ASSERT_TRUE(verify_merkle_proof(h, proof, path, root));
|
||||
|
||||
ASSERT_FALSE(verify_merkle_proof(h, proof, n, n, root));
|
||||
ASSERT_FALSE(verify_merkle_proof(empty_hash, proof, i, n, root));
|
||||
ASSERT_FALSE(verify_merkle_proof(empty_hash, proof, path, root));
|
||||
|
||||
while (!proof.empty()) {
|
||||
proof.pop_back();
|
||||
|
||||
ASSERT_FALSE(verify_merkle_proof(h, proof, i, n, root));
|
||||
ASSERT_FALSE(verify_merkle_proof(h, proof, path, root));
|
||||
}
|
||||
|
||||
ASSERT_EQ(get_position_from_path(n, path), i);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -53,6 +53,19 @@ TEST(pool_block, deserialize)
|
||||
|
||||
ASSERT_EQ(b.deserialize(buf.data(), buf.size(), sidechain, nullptr, false), 0);
|
||||
|
||||
{
|
||||
const PoolBlock::full_id id = b.get_full_id();
|
||||
|
||||
ASSERT_EQ(memcmp(id.data(), b.m_sidechainId.h, HASH_SIZE), 0);
|
||||
ASSERT_EQ(memcmp(id.data() + HASH_SIZE, &b.m_nonce, NONCE_SIZE), 0);
|
||||
ASSERT_EQ(memcmp(id.data() + HASH_SIZE + NONCE_SIZE, &b.m_extraNonce, EXTRA_NONCE_SIZE), 0);
|
||||
}
|
||||
|
||||
ASSERT_EQ(b.get_payout(Wallet("4B4aCvEcZr6GcusVJfEds2LXixCeJ2dQBaDUCguWmzi5L7PW5tVXfAnE4cn1mQdiNzH6zWcEPMQTiYTsNcX44ryxCJWZKZH")), 17411468548U);
|
||||
ASSERT_EQ(b.get_payout(Wallet("43VbH7CQCJqhH1d327TBenCs9hFN3zvcgX5YZdGyJfEE5rabasAtKhyPsKmbYSU9AmMReACZrz9j5U2Ba6WXWoQpVi38AJn")), 1404738424U);
|
||||
ASSERT_EQ(b.get_payout(Wallet("46r3PD45TYH9jVf8sEejW9JdK1EgNe6BeYLdGyJTU1MRctoevAHXpzSjBMJhdkLirGXwiWdZejSRZ8MZP72artSD17LprKY")), 1419699645U);
|
||||
ASSERT_EQ(b.get_payout(Wallet("44MnN1f3Eto8DZYUWuE5XZNUtE3vcRzt2j6PzqWpPau34e6Cf4fAxt6X2MBmrm6F9YMEiMNjN6W4Shn4pLcfNAja621jwyg")), 0U);
|
||||
|
||||
size_t header_size, miner_tx_size;
|
||||
int outputs_offset, outputs_blob_size;
|
||||
const std::vector<uint8_t> mainchain_data = b.serialize_mainchain_data(&header_size, &miner_tx_size, &outputs_offset, &outputs_blob_size);
|
||||
|
||||
Reference in New Issue
Block a user