MCPcopy Create free account
hub / github.com/ElementsProject/elements / BOOST_AUTO_TEST_CASE

Function BOOST_AUTO_TEST_CASE

src/test/blockencodings_tests.cpp:55–109  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

53constexpr long SHARED_TX_OFFSET{3};
54
55BOOST_AUTO_TEST_CASE(SimpleRoundTripTest)
56{
57 CTxMemPool pool;
58 TestMemPoolEntryHelper entry;
59 CBlock block(BuildBlockTestCase());
60
61 LOCK2(cs_main, pool.cs);
62 pool.addUnchecked(entry.FromTx(block.vtx[2]));
63 BOOST_CHECK_EQUAL(pool.mapTx.find(block.vtx[2]->GetHash())->GetSharedTx().use_count(), SHARED_TX_OFFSET + 0);
64
65 // Do a simple ShortTxIDs RT
66 {
67 CBlockHeaderAndShortTxIDs shortIDs(block, true);
68
69 CDataStream stream(SER_NETWORK, PROTOCOL_VERSION);
70 stream << shortIDs;
71
72 CBlockHeaderAndShortTxIDs shortIDs2;
73 stream >> shortIDs2;
74
75 PartiallyDownloadedBlock partialBlock(&pool);
76 BOOST_CHECK(partialBlock.InitData(shortIDs2, extra_txn) == READ_STATUS_OK);
77 BOOST_CHECK( partialBlock.IsTxAvailable(0));
78 BOOST_CHECK(!partialBlock.IsTxAvailable(1));
79 BOOST_CHECK( partialBlock.IsTxAvailable(2));
80
81 BOOST_CHECK_EQUAL(pool.mapTx.find(block.vtx[2]->GetHash())->GetSharedTx().use_count(), SHARED_TX_OFFSET + 1);
82
83 size_t poolSize = pool.size();
84 pool.removeRecursive(*block.vtx[2], MemPoolRemovalReason::REPLACED);
85 BOOST_CHECK_EQUAL(pool.size(), poolSize - 1);
86
87 CBlock block2;
88 {
89 PartiallyDownloadedBlock tmp = partialBlock;
90 BOOST_CHECK(partialBlock.FillBlock(block2, {}) == READ_STATUS_INVALID); // No transactions
91 partialBlock = tmp;
92 }
93
94 // Wrong transaction
95 {
96 PartiallyDownloadedBlock tmp = partialBlock;
97 partialBlock.FillBlock(block2, {block.vtx[2]}); // Current implementation doesn't check txn here, but don't require that
98 partialBlock = tmp;
99 }
100 bool mutated;
101 BOOST_CHECK(block.hashMerkleRoot != BlockMerkleRoot(block2, &mutated));
102
103 CBlock block3;
104 BOOST_CHECK(partialBlock.FillBlock(block3, {block.vtx[1]}) == READ_STATUS_OK);
105 BOOST_CHECK_EQUAL(block.GetHash().ToString(), block3.GetHash().ToString());
106 BOOST_CHECK_EQUAL(block.hashMerkleRoot.ToString(), BlockMerkleRoot(block3, &mutated).ToString());
107 BOOST_CHECK(!mutated);
108 }
109}
110
111class TestHeaderAndShortIDs {
112 // Utility to encode custom CBlockHeaderAndShortTxIDs

Callers

nothing calls this directly

Calls 15

BuildBlockTestCaseFunction · 0.85
BlockMerkleRootFunction · 0.85
InsecureRand256Function · 0.85
CheckProofOfWorkFunction · 0.85
WriteCompactSizeFunction · 0.85
addUncheckedMethod · 0.80
FromTxMethod · 0.80
GetSharedTxMethod · 0.80
findMethod · 0.80
InitDataMethod · 0.80
IsTxAvailableMethod · 0.80
removeRecursiveMethod · 0.80

Tested by

no test coverage detected