Skip to content

Commit

Permalink
test: add missing segwitv1 test cases to script_standard_tests
Browse files Browse the repository at this point in the history
  • Loading branch information
theStack committed Nov 21, 2024
1 parent a0eafc1 commit 5521a08
Showing 1 changed file with 26 additions and 2 deletions.
28 changes: 26 additions & 2 deletions src/test/script_standard_tests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,9 @@ BOOST_AUTO_TEST_CASE(script_standard_Solver_failure)
s.clear();
s << OP_0 << std::vector<unsigned char>(19, 0x01);
BOOST_CHECK_EQUAL(Solver(s, solutions), TxoutType::NONSTANDARD);
s.clear();
s << OP_1 << std::vector<unsigned char>(33, 0x01);
BOOST_CHECK_EQUAL(Solver(s, solutions), TxoutType::WITNESS_UNKNOWN);

// TxoutType::ANCHOR but wrong witness version
s.clear();
Expand Down Expand Up @@ -268,11 +271,18 @@ BOOST_AUTO_TEST_CASE(script_standard_ExtractDestination)
BOOST_CHECK(ExtractDestination(s, address));
BOOST_CHECK(std::get<WitnessV0ScriptHash>(address) == scripthash);

// TxoutType::WITNESS_V1_TAPROOT
s.clear();
auto xpk = XOnlyPubKey(pubkey);
s << OP_1 << ToByteVector(xpk);
BOOST_CHECK(ExtractDestination(s, address));
BOOST_CHECK(std::get<WitnessV1Taproot>(address) == WitnessV1Taproot(xpk));

// TxoutType::WITNESS_UNKNOWN with unknown version
s.clear();
s << OP_1 << ToByteVector(pubkey);
s << OP_2 << ToByteVector(xpk);
BOOST_CHECK(ExtractDestination(s, address));
WitnessUnknown unk{1, ToByteVector(pubkey)};
WitnessUnknown unk{2, ToByteVector(xpk)};
BOOST_CHECK(std::get<WitnessUnknown>(address) == unk);
}

Expand Down Expand Up @@ -341,6 +351,20 @@ BOOST_AUTO_TEST_CASE(script_standard_GetScriptFor_)
expected << OP_0 << ToByteVector(scriptHash);
result = GetScriptForDestination(WitnessV0ScriptHash(witnessScript));
BOOST_CHECK(result == expected);

// WitnessV1Taproot
auto xpk = XOnlyPubKey(pubkeys[0]);
expected.clear();
expected << OP_1 << ToByteVector(xpk);
result = GetScriptForDestination(WitnessV1Taproot(xpk));
BOOST_CHECK(result == expected);

// PayToAnchor
std::vector<unsigned char> anchor_bytes{0x4e, 0x73};
expected.clear();
expected << OP_1 << ToByteVector(anchor_bytes);
result = GetScriptForDestination(PayToAnchor());
BOOST_CHECK(result == expected);
}

BOOST_AUTO_TEST_CASE(script_standard_taproot_builder)
Expand Down

0 comments on commit 5521a08

Please sign in to comment.