CI: added more tests to improve code coverage

This commit is contained in:
SChernykh
2025-06-20 19:49:30 +02:00
parent 3d1ef0d049
commit 6cd79b3a48
3 changed files with 41 additions and 4 deletions

View File

@@ -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) {

View File

@@ -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);
}
};

View File

@@ -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);