@@ -115,7 +115,9 @@ BOOST_FIXTURE_TEST_CASE(version3_tests, RegTestingSetup)
115
115
const auto expected_error_str{strprintf (" non-v3 tx %s (wtxid=%s) cannot spend from v3 tx %s (wtxid=%s)" ,
116
116
tx_v2_from_v3->GetHash ().ToString (), tx_v2_from_v3->GetWitnessHash ().ToString (),
117
117
mempool_tx_v3->GetHash ().ToString (), mempool_tx_v3->GetWitnessHash ().ToString ())};
118
- BOOST_CHECK (*SingleV3Checks (tx_v2_from_v3, *ancestors_v2_from_v3, empty_conflicts_set, GetVirtualTransactionSize (*tx_v2_from_v3)) == expected_error_str);
118
+ auto result_v2_from_v3{SingleV3Checks (tx_v2_from_v3, *ancestors_v2_from_v3, empty_conflicts_set, GetVirtualTransactionSize (*tx_v2_from_v3))};
119
+ BOOST_CHECK_EQUAL (result_v2_from_v3->first , expected_error_str);
120
+ BOOST_CHECK_EQUAL (result_v2_from_v3->second , nullptr );
119
121
120
122
Package package_v3_v2{mempool_tx_v3, tx_v2_from_v3};
121
123
BOOST_CHECK_EQUAL (*PackageV3Checks (tx_v2_from_v3, GetVirtualTransactionSize (*tx_v2_from_v3), package_v3_v2, empty_ancestors), expected_error_str);
@@ -130,8 +132,9 @@ BOOST_FIXTURE_TEST_CASE(version3_tests, RegTestingSetup)
130
132
const auto expected_error_str_2{strprintf (" non-v3 tx %s (wtxid=%s) cannot spend from v3 tx %s (wtxid=%s)" ,
131
133
tx_v2_from_v2_and_v3->GetHash ().ToString (), tx_v2_from_v2_and_v3->GetWitnessHash ().ToString (),
132
134
mempool_tx_v3->GetHash ().ToString (), mempool_tx_v3->GetWitnessHash ().ToString ())};
133
- BOOST_CHECK (*SingleV3Checks (tx_v2_from_v2_and_v3, *ancestors_v2_from_both, empty_conflicts_set, GetVirtualTransactionSize (*tx_v2_from_v2_and_v3))
134
- == expected_error_str_2);
135
+ auto result_v2_from_both{SingleV3Checks (tx_v2_from_v2_and_v3, *ancestors_v2_from_both, empty_conflicts_set, GetVirtualTransactionSize (*tx_v2_from_v2_and_v3))};
136
+ BOOST_CHECK_EQUAL (result_v2_from_both->first , expected_error_str_2);
137
+ BOOST_CHECK_EQUAL (result_v2_from_both->second , nullptr );
135
138
136
139
Package package_v3_v2_v2{mempool_tx_v3, mempool_tx_v2, tx_v2_from_v2_and_v3};
137
140
BOOST_CHECK_EQUAL (*PackageV3Checks (tx_v2_from_v2_and_v3, GetVirtualTransactionSize (*tx_v2_from_v2_and_v3), package_v3_v2_v2, empty_ancestors), expected_error_str_2);
@@ -147,7 +150,9 @@ BOOST_FIXTURE_TEST_CASE(version3_tests, RegTestingSetup)
147
150
const auto expected_error_str{strprintf (" v3 tx %s (wtxid=%s) cannot spend from non-v3 tx %s (wtxid=%s)" ,
148
151
tx_v3_from_v2->GetHash ().ToString (), tx_v3_from_v2->GetWitnessHash ().ToString (),
149
152
mempool_tx_v2->GetHash ().ToString (), mempool_tx_v2->GetWitnessHash ().ToString ())};
150
- BOOST_CHECK (*SingleV3Checks (tx_v3_from_v2, *ancestors_v3_from_v2, empty_conflicts_set, GetVirtualTransactionSize (*tx_v3_from_v2)) == expected_error_str);
153
+ auto result_v3_from_v2{SingleV3Checks (tx_v3_from_v2, *ancestors_v3_from_v2, empty_conflicts_set, GetVirtualTransactionSize (*tx_v3_from_v2))};
154
+ BOOST_CHECK_EQUAL (result_v3_from_v2->first , expected_error_str);
155
+ BOOST_CHECK_EQUAL (result_v3_from_v2->second , nullptr );
151
156
152
157
Package package_v2_v3{mempool_tx_v2, tx_v3_from_v2};
153
158
BOOST_CHECK_EQUAL (*PackageV3Checks (tx_v3_from_v2, GetVirtualTransactionSize (*tx_v3_from_v2), package_v2_v3, empty_ancestors), expected_error_str);
@@ -162,8 +167,9 @@ BOOST_FIXTURE_TEST_CASE(version3_tests, RegTestingSetup)
162
167
const auto expected_error_str_2{strprintf (" v3 tx %s (wtxid=%s) cannot spend from non-v3 tx %s (wtxid=%s)" ,
163
168
tx_v3_from_v2_and_v3->GetHash ().ToString (), tx_v3_from_v2_and_v3->GetWitnessHash ().ToString (),
164
169
mempool_tx_v2->GetHash ().ToString (), mempool_tx_v2->GetWitnessHash ().ToString ())};
165
- BOOST_CHECK (*SingleV3Checks (tx_v3_from_v2_and_v3, *ancestors_v3_from_both, empty_conflicts_set, GetVirtualTransactionSize (*tx_v3_from_v2_and_v3))
166
- == expected_error_str_2);
170
+ auto result_v3_from_both{SingleV3Checks (tx_v3_from_v2_and_v3, *ancestors_v3_from_both, empty_conflicts_set, GetVirtualTransactionSize (*tx_v3_from_v2_and_v3))};
171
+ BOOST_CHECK_EQUAL (result_v3_from_both->first , expected_error_str_2);
172
+ BOOST_CHECK_EQUAL (result_v3_from_both->second , nullptr );
167
173
168
174
// tx_v3_from_v2_and_v3 also violates V3_ANCESTOR_LIMIT.
169
175
const auto expected_error_str_3{strprintf (" tx %s (wtxid=%s) would have too many ancestors" ,
@@ -215,8 +221,9 @@ BOOST_FIXTURE_TEST_CASE(version3_tests, RegTestingSetup)
215
221
BOOST_CHECK_EQUAL (ancestors->size (), 3 );
216
222
const auto expected_error_str{strprintf (" tx %s (wtxid=%s) would have too many ancestors" ,
217
223
tx_v3_multi_parent->GetHash ().ToString (), tx_v3_multi_parent->GetWitnessHash ().ToString ())};
218
- BOOST_CHECK_EQUAL (*SingleV3Checks (tx_v3_multi_parent, *ancestors, empty_conflicts_set, GetVirtualTransactionSize (*tx_v3_multi_parent)),
219
- expected_error_str);
224
+ auto result{SingleV3Checks (tx_v3_multi_parent, *ancestors, empty_conflicts_set, GetVirtualTransactionSize (*tx_v3_multi_parent))};
225
+ BOOST_CHECK_EQUAL (result->first , expected_error_str);
226
+ BOOST_CHECK_EQUAL (result->second , nullptr );
220
227
221
228
BOOST_CHECK_EQUAL (*PackageV3Checks (tx_v3_multi_parent, GetVirtualTransactionSize (*tx_v3_multi_parent), package_multi_parents, empty_ancestors),
222
229
expected_error_str);
@@ -239,8 +246,9 @@ BOOST_FIXTURE_TEST_CASE(version3_tests, RegTestingSetup)
239
246
auto ancestors{pool.CalculateMemPoolAncestors (entry.FromTx (tx_v3_multi_gen), m_limits)};
240
247
const auto expected_error_str{strprintf (" tx %s (wtxid=%s) would have too many ancestors" ,
241
248
tx_v3_multi_gen->GetHash ().ToString (), tx_v3_multi_gen->GetWitnessHash ().ToString ())};
242
- BOOST_CHECK_EQUAL (*SingleV3Checks (tx_v3_multi_gen, *ancestors, empty_conflicts_set, GetVirtualTransactionSize (*tx_v3_multi_gen)),
243
- expected_error_str);
249
+ auto result{SingleV3Checks (tx_v3_multi_gen, *ancestors, empty_conflicts_set, GetVirtualTransactionSize (*tx_v3_multi_gen))};
250
+ BOOST_CHECK_EQUAL (result->first , expected_error_str);
251
+ BOOST_CHECK_EQUAL (result->second , nullptr );
244
252
245
253
// Middle tx is what triggers a failure for the grandchild:
246
254
BOOST_CHECK_EQUAL (*PackageV3Checks (middle_tx, GetVirtualTransactionSize (*middle_tx), package_multi_gen, empty_ancestors), expected_error_str);
@@ -256,8 +264,9 @@ BOOST_FIXTURE_TEST_CASE(version3_tests, RegTestingSetup)
256
264
auto ancestors{pool.CalculateMemPoolAncestors (entry.FromTx (tx_v3_child_big), m_limits)};
257
265
const auto expected_error_str{strprintf (" v3 child tx %s (wtxid=%s) is too big: %u > %u virtual bytes" ,
258
266
tx_v3_child_big->GetHash ().ToString (), tx_v3_child_big->GetWitnessHash ().ToString (), vsize, V3_CHILD_MAX_VSIZE)};
259
- BOOST_CHECK_EQUAL (*SingleV3Checks (tx_v3_child_big, *ancestors, empty_conflicts_set, GetVirtualTransactionSize (*tx_v3_child_big)),
260
- expected_error_str);
267
+ auto result{SingleV3Checks (tx_v3_child_big, *ancestors, empty_conflicts_set, GetVirtualTransactionSize (*tx_v3_child_big))};
268
+ BOOST_CHECK_EQUAL (result->first , expected_error_str);
269
+ BOOST_CHECK_EQUAL (result->second , nullptr );
261
270
262
271
Package package_child_big{mempool_tx_v3, tx_v3_child_big};
263
272
BOOST_CHECK_EQUAL (*PackageV3Checks (tx_v3_child_big, GetVirtualTransactionSize (*tx_v3_child_big), package_child_big, empty_ancestors),
@@ -298,9 +307,10 @@ BOOST_FIXTURE_TEST_CASE(version3_tests, RegTestingSetup)
298
307
const auto expected_error_str{strprintf (" v3 child tx %s (wtxid=%s) is too big: %u > %u virtual bytes" ,
299
308
tx_many_sigops->GetHash ().ToString (), tx_many_sigops->GetWitnessHash ().ToString (),
300
309
total_sigops * DEFAULT_BYTES_PER_SIGOP / WITNESS_SCALE_FACTOR, V3_CHILD_MAX_VSIZE)};
301
- BOOST_CHECK_EQUAL (*SingleV3Checks (tx_many_sigops, *ancestors, empty_conflicts_set,
302
- GetVirtualTransactionSize (*tx_many_sigops, /* nSigOpCost=*/ total_sigops, /* bytes_per_sigop=*/ DEFAULT_BYTES_PER_SIGOP)),
303
- expected_error_str);
310
+ auto result{SingleV3Checks (tx_many_sigops, *ancestors, empty_conflicts_set,
311
+ GetVirtualTransactionSize (*tx_many_sigops, /* nSigOpCost=*/ total_sigops, /* bytes_per_sigop=*/ DEFAULT_BYTES_PER_SIGOP))};
312
+ BOOST_CHECK_EQUAL (result->first , expected_error_str);
313
+ BOOST_CHECK_EQUAL (result->second , nullptr );
304
314
305
315
Package package_child_sigops{mempool_tx_v3, tx_many_sigops};
306
316
BOOST_CHECK_EQUAL (*PackageV3Checks (tx_many_sigops, total_sigops * DEFAULT_BYTES_PER_SIGOP / WITNESS_SCALE_FACTOR, package_child_sigops, empty_ancestors),
@@ -326,8 +336,9 @@ BOOST_FIXTURE_TEST_CASE(version3_tests, RegTestingSetup)
326
336
auto ancestors{pool.CalculateMemPoolAncestors (entry.FromTx (tx_v3_child2), m_limits)};
327
337
const auto expected_error_str{strprintf (" tx %s (wtxid=%s) would exceed descendant count limit" ,
328
338
mempool_tx_v3->GetHash ().ToString (), mempool_tx_v3->GetWitnessHash ().ToString ())};
329
- BOOST_CHECK_EQUAL (*SingleV3Checks (tx_v3_child2, *ancestors, empty_conflicts_set, GetVirtualTransactionSize (*tx_v3_child2)),
330
- expected_error_str);
339
+ auto result{SingleV3Checks (tx_v3_child2, *ancestors, empty_conflicts_set, GetVirtualTransactionSize (*tx_v3_child2))};
340
+ BOOST_CHECK_EQUAL (result->first , expected_error_str);
341
+ BOOST_CHECK_EQUAL (result->second , nullptr );
331
342
// If replacing the child, make sure there is no double-counting.
332
343
BOOST_CHECK (SingleV3Checks (tx_v3_child2, *ancestors, {tx_mempool_v3_child->GetHash ()}, GetVirtualTransactionSize (*tx_v3_child2))
333
344
== std::nullopt);
0 commit comments