Skip to content

Commit 000098f

Browse files
author
MarcoFalke
committed
test: Use throwing variant accessor
It does not matter if the tests fail due to a BOOST_CHECK failure or due to a thrown exception. Prefer the exception because it is less code. Example fail with the throwing accessor: unknown location(0): fatal error: in "script_standard_tests/script_standard_ExtractDestinations": std::bad_variant_access: std::get: wrong index for variant test/script_standard_tests.cpp(314): last checkpoint *** 1 failure is detected in the test module "Bitcoin Core Test Suite"
1 parent fa2197c commit 000098f

File tree

1 file changed

+11
-19
lines changed

1 file changed

+11
-19
lines changed

src/test/script_standard_tests.cpp

Lines changed: 11 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -199,23 +199,20 @@ BOOST_AUTO_TEST_CASE(script_standard_ExtractDestination)
199199
s.clear();
200200
s << ToByteVector(pubkey) << OP_CHECKSIG;
201201
BOOST_CHECK(ExtractDestination(s, address));
202-
BOOST_CHECK(std::get_if<PKHash>(&address) &&
203-
*std::get_if<PKHash>(&address) == PKHash(pubkey));
202+
BOOST_CHECK(std::get<PKHash>(address) == PKHash(pubkey));
204203

205204
// TxoutType::PUBKEYHASH
206205
s.clear();
207206
s << OP_DUP << OP_HASH160 << ToByteVector(pubkey.GetID()) << OP_EQUALVERIFY << OP_CHECKSIG;
208207
BOOST_CHECK(ExtractDestination(s, address));
209-
BOOST_CHECK(std::get_if<PKHash>(&address) &&
210-
*std::get_if<PKHash>(&address) == PKHash(pubkey));
208+
BOOST_CHECK(std::get<PKHash>(address) == PKHash(pubkey));
211209

212210
// TxoutType::SCRIPTHASH
213211
CScript redeemScript(s); // initialize with leftover P2PKH script
214212
s.clear();
215213
s << OP_HASH160 << ToByteVector(CScriptID(redeemScript)) << OP_EQUAL;
216214
BOOST_CHECK(ExtractDestination(s, address));
217-
BOOST_CHECK(std::get_if<ScriptHash>(&address) &&
218-
*std::get_if<ScriptHash>(&address) == ScriptHash(redeemScript));
215+
BOOST_CHECK(std::get<ScriptHash>(address) == ScriptHash(redeemScript));
219216

220217
// TxoutType::MULTISIG
221218
s.clear();
@@ -233,15 +230,15 @@ BOOST_AUTO_TEST_CASE(script_standard_ExtractDestination)
233230
BOOST_CHECK(ExtractDestination(s, address));
234231
WitnessV0KeyHash keyhash;
235232
CHash160().Write(pubkey).Finalize(keyhash);
236-
BOOST_CHECK(std::get_if<WitnessV0KeyHash>(&address) && *std::get_if<WitnessV0KeyHash>(&address) == keyhash);
233+
BOOST_CHECK(std::get<WitnessV0KeyHash>(address) == keyhash);
237234

238235
// TxoutType::WITNESS_V0_SCRIPTHASH
239236
s.clear();
240237
WitnessV0ScriptHash scripthash;
241238
CSHA256().Write(redeemScript.data(), redeemScript.size()).Finalize(scripthash.begin());
242239
s << OP_0 << ToByteVector(scripthash);
243240
BOOST_CHECK(ExtractDestination(s, address));
244-
BOOST_CHECK(std::get_if<WitnessV0ScriptHash>(&address) && *std::get_if<WitnessV0ScriptHash>(&address) == scripthash);
241+
BOOST_CHECK(std::get<WitnessV0ScriptHash>(address) == scripthash);
245242

246243
// TxoutType::WITNESS_UNKNOWN with unknown version
247244
s.clear();
@@ -251,7 +248,7 @@ BOOST_AUTO_TEST_CASE(script_standard_ExtractDestination)
251248
unk.length = 33;
252249
unk.version = 1;
253250
std::copy(pubkey.begin(), pubkey.end(), unk.program);
254-
BOOST_CHECK(std::get_if<WitnessUnknown>(&address) && *std::get_if<WitnessUnknown>(&address) == unk);
251+
BOOST_CHECK(std::get<WitnessUnknown>(address) == unk);
255252
}
256253

257254
BOOST_AUTO_TEST_CASE(script_standard_ExtractDestinations)
@@ -275,8 +272,7 @@ BOOST_AUTO_TEST_CASE(script_standard_ExtractDestinations)
275272
BOOST_CHECK_EQUAL(whichType, TxoutType::PUBKEY);
276273
BOOST_CHECK_EQUAL(addresses.size(), 1U);
277274
BOOST_CHECK_EQUAL(nRequired, 1);
278-
BOOST_CHECK(std::get_if<PKHash>(&addresses[0]) &&
279-
*std::get_if<PKHash>(&addresses[0]) == PKHash(pubkeys[0]));
275+
BOOST_CHECK(std::get<PKHash>(addresses[0]) == PKHash(pubkeys[0]));
280276

281277
// TxoutType::PUBKEYHASH
282278
s.clear();
@@ -285,8 +281,7 @@ BOOST_AUTO_TEST_CASE(script_standard_ExtractDestinations)
285281
BOOST_CHECK_EQUAL(whichType, TxoutType::PUBKEYHASH);
286282
BOOST_CHECK_EQUAL(addresses.size(), 1U);
287283
BOOST_CHECK_EQUAL(nRequired, 1);
288-
BOOST_CHECK(std::get_if<PKHash>(&addresses[0]) &&
289-
*std::get_if<PKHash>(&addresses[0]) == PKHash(pubkeys[0]));
284+
BOOST_CHECK(std::get<PKHash>(addresses[0]) == PKHash(pubkeys[0]));
290285

291286
// TxoutType::SCRIPTHASH
292287
CScript redeemScript(s); // initialize with leftover P2PKH script
@@ -296,8 +291,7 @@ BOOST_AUTO_TEST_CASE(script_standard_ExtractDestinations)
296291
BOOST_CHECK_EQUAL(whichType, TxoutType::SCRIPTHASH);
297292
BOOST_CHECK_EQUAL(addresses.size(), 1U);
298293
BOOST_CHECK_EQUAL(nRequired, 1);
299-
BOOST_CHECK(std::get_if<ScriptHash>(&addresses[0]) &&
300-
*std::get_if<ScriptHash>(&addresses[0]) == ScriptHash(redeemScript));
294+
BOOST_CHECK(std::get<ScriptHash>(addresses[0]) == ScriptHash(redeemScript));
301295

302296
// TxoutType::MULTISIG
303297
s.clear();
@@ -309,10 +303,8 @@ BOOST_AUTO_TEST_CASE(script_standard_ExtractDestinations)
309303
BOOST_CHECK_EQUAL(whichType, TxoutType::MULTISIG);
310304
BOOST_CHECK_EQUAL(addresses.size(), 2U);
311305
BOOST_CHECK_EQUAL(nRequired, 2);
312-
BOOST_CHECK(std::get_if<PKHash>(&addresses[0]) &&
313-
*std::get_if<PKHash>(&addresses[0]) == PKHash(pubkeys[0]));
314-
BOOST_CHECK(std::get_if<PKHash>(&addresses[1]) &&
315-
*std::get_if<PKHash>(&addresses[1]) == PKHash(pubkeys[1]));
306+
BOOST_CHECK(std::get<PKHash>(addresses[0]) == PKHash(pubkeys[0]));
307+
BOOST_CHECK(std::get<PKHash>(addresses[1]) == PKHash(pubkeys[1]));
316308

317309
// TxoutType::NULL_DATA
318310
s.clear();

0 commit comments

Comments
 (0)