Branch data Line data Source code
# 1 : : // Copyright (c) 2021 The Bitcoin Core developers
# 2 : : // Distributed under the MIT software license, see the accompanying
# 3 : : // file COPYING or http://www.opensource.org/licenses/mit-license.php.
# 4 : :
# 5 : : #include <core_io.h>
# 6 : : #include <script/script.h>
# 7 : : #include <util/strencodings.h>
# 8 : : #include <test/util/setup_common.h>
# 9 : :
# 10 : : #include <boost/test/unit_test.hpp>
# 11 : :
# 12 : : BOOST_AUTO_TEST_SUITE(script_parse_tests)
# 13 : : BOOST_AUTO_TEST_CASE(parse_script)
# 14 : 2 : {
# 15 : 2 : const std::vector<std::pair<std::string,std::string>> IN_OUT{
# 16 : : // {IN: script string , OUT: hex string }
# 17 : 2 : {"", ""},
# 18 : 2 : {"0", "00"},
# 19 : 2 : {"1", "51"},
# 20 : 2 : {"2", "52"},
# 21 : 2 : {"3", "53"},
# 22 : 2 : {"4", "54"},
# 23 : 2 : {"5", "55"},
# 24 : 2 : {"6", "56"},
# 25 : 2 : {"7", "57"},
# 26 : 2 : {"8", "58"},
# 27 : 2 : {"9", "59"},
# 28 : 2 : {"10", "5a"},
# 29 : 2 : {"11", "5b"},
# 30 : 2 : {"12", "5c"},
# 31 : 2 : {"13", "5d"},
# 32 : 2 : {"14", "5e"},
# 33 : 2 : {"15", "5f"},
# 34 : 2 : {"16", "60"},
# 35 : 2 : {"17", "0111"},
# 36 : 2 : {"-9", "0189"},
# 37 : 2 : {"0x17", "17"},
# 38 : 2 : {"'17'", "023137"},
# 39 : 2 : {"ELSE", "67"},
# 40 : 2 : {"NOP10", "b9"},
# 41 : 2 : };
# 42 : 2 : std::string all_in;
# 43 : 2 : std::string all_out;
# 44 [ + + ]: 48 : for (const auto& [in, out] : IN_OUT) {
# 45 : 48 : BOOST_CHECK_EQUAL(HexStr(ParseScript(in)), out);
# 46 : 48 : all_in += " " + in + " ";
# 47 : 48 : all_out += out;
# 48 : 48 : }
# 49 : 2 : BOOST_CHECK_EQUAL(HexStr(ParseScript(all_in)), all_out);
# 50 : :
# 51 : 2 : BOOST_CHECK_EXCEPTION(ParseScript("11111111111111111111"), std::runtime_error, HasReason("script parse error: decimal numeric value only allowed in the range -0xFFFFFFFF...0xFFFFFFFF"));
# 52 : 2 : BOOST_CHECK_EXCEPTION(ParseScript("11111111111"), std::runtime_error, HasReason("script parse error: decimal numeric value only allowed in the range -0xFFFFFFFF...0xFFFFFFFF"));
# 53 : 2 : BOOST_CHECK_EXCEPTION(ParseScript("OP_CHECKSIGADD"), std::runtime_error, HasReason("script parse error: unknown opcode"));
# 54 : 2 : }
# 55 : : BOOST_AUTO_TEST_SUITE_END()
|