mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-11-11 06:28:31 +01:00
Replace scriptnum_test's normative ScriptNum implementation
Compare against the scriptnum from Bitcoin Core 0.10 instead of OpenSSL. Closes #7086.
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
// Distributed under the MIT software license, see the accompanying
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
#include "bignum.h"
|
||||
#include "scriptnum10.h"
|
||||
#include "script/script.h"
|
||||
#include "test/test_bitcoin.h"
|
||||
|
||||
@@ -16,45 +16,48 @@ static const int64_t values[] = \
|
||||
{ 0, 1, CHAR_MIN, CHAR_MAX, UCHAR_MAX, SHRT_MIN, USHRT_MAX, INT_MIN, INT_MAX, UINT_MAX, LONG_MIN, LONG_MAX };
|
||||
static const int64_t offsets[] = { 1, 0x79, 0x80, 0x81, 0xFF, 0x7FFF, 0x8000, 0xFFFF, 0x10000};
|
||||
|
||||
static bool verify(const CBigNum& bignum, const CScriptNum& scriptnum)
|
||||
static bool verify(const CScriptNum10& bignum, const CScriptNum& scriptnum)
|
||||
{
|
||||
return bignum.getvch() == scriptnum.getvch() && bignum.getint() == scriptnum.getint();
|
||||
}
|
||||
|
||||
static void CheckCreateVch(const int64_t& num)
|
||||
{
|
||||
CBigNum bignum(num);
|
||||
CScriptNum10 bignum(num);
|
||||
CScriptNum scriptnum(num);
|
||||
BOOST_CHECK(verify(bignum, scriptnum));
|
||||
|
||||
CBigNum bignum2(bignum.getvch());
|
||||
std::vector<unsigned char> vch = bignum.getvch();
|
||||
|
||||
CScriptNum10 bignum2(bignum.getvch(), false);
|
||||
vch = scriptnum.getvch();
|
||||
CScriptNum scriptnum2(scriptnum.getvch(), false);
|
||||
BOOST_CHECK(verify(bignum2, scriptnum2));
|
||||
|
||||
CBigNum bignum3(scriptnum2.getvch());
|
||||
CScriptNum10 bignum3(scriptnum2.getvch(), false);
|
||||
CScriptNum scriptnum3(bignum2.getvch(), false);
|
||||
BOOST_CHECK(verify(bignum3, scriptnum3));
|
||||
}
|
||||
|
||||
static void CheckCreateInt(const int64_t& num)
|
||||
{
|
||||
CBigNum bignum(num);
|
||||
CScriptNum10 bignum(num);
|
||||
CScriptNum scriptnum(num);
|
||||
BOOST_CHECK(verify(bignum, scriptnum));
|
||||
BOOST_CHECK(verify(bignum.getint(), CScriptNum(scriptnum.getint())));
|
||||
BOOST_CHECK(verify(scriptnum.getint(), CScriptNum(bignum.getint())));
|
||||
BOOST_CHECK(verify(CBigNum(scriptnum.getint()).getint(), CScriptNum(CScriptNum(bignum.getint()).getint())));
|
||||
BOOST_CHECK(verify(CScriptNum10(bignum.getint()), CScriptNum(scriptnum.getint())));
|
||||
BOOST_CHECK(verify(CScriptNum10(scriptnum.getint()), CScriptNum(bignum.getint())));
|
||||
BOOST_CHECK(verify(CScriptNum10(CScriptNum10(scriptnum.getint()).getint()), CScriptNum(CScriptNum(bignum.getint()).getint())));
|
||||
}
|
||||
|
||||
|
||||
static void CheckAdd(const int64_t& num1, const int64_t& num2)
|
||||
{
|
||||
const CBigNum bignum1(num1);
|
||||
const CBigNum bignum2(num2);
|
||||
const CScriptNum10 bignum1(num1);
|
||||
const CScriptNum10 bignum2(num2);
|
||||
const CScriptNum scriptnum1(num1);
|
||||
const CScriptNum scriptnum2(num2);
|
||||
CBigNum bignum3(num1);
|
||||
CBigNum bignum4(num1);
|
||||
CScriptNum10 bignum3(num1);
|
||||
CScriptNum10 bignum4(num1);
|
||||
CScriptNum scriptnum3(num1);
|
||||
CScriptNum scriptnum4(num1);
|
||||
|
||||
@@ -71,7 +74,7 @@ static void CheckAdd(const int64_t& num1, const int64_t& num2)
|
||||
|
||||
static void CheckNegate(const int64_t& num)
|
||||
{
|
||||
const CBigNum bignum(num);
|
||||
const CScriptNum10 bignum(num);
|
||||
const CScriptNum scriptnum(num);
|
||||
|
||||
// -INT64_MIN is undefined
|
||||
@@ -81,8 +84,8 @@ static void CheckNegate(const int64_t& num)
|
||||
|
||||
static void CheckSubtract(const int64_t& num1, const int64_t& num2)
|
||||
{
|
||||
const CBigNum bignum1(num1);
|
||||
const CBigNum bignum2(num2);
|
||||
const CScriptNum10 bignum1(num1);
|
||||
const CScriptNum10 bignum2(num2);
|
||||
const CScriptNum scriptnum1(num1);
|
||||
const CScriptNum scriptnum2(num2);
|
||||
bool invalid = false;
|
||||
@@ -107,8 +110,8 @@ static void CheckSubtract(const int64_t& num1, const int64_t& num2)
|
||||
|
||||
static void CheckCompare(const int64_t& num1, const int64_t& num2)
|
||||
{
|
||||
const CBigNum bignum1(num1);
|
||||
const CBigNum bignum2(num2);
|
||||
const CScriptNum10 bignum1(num1);
|
||||
const CScriptNum10 bignum2(num2);
|
||||
const CScriptNum scriptnum1(num1);
|
||||
const CScriptNum scriptnum2(num2);
|
||||
|
||||
@@ -149,7 +152,7 @@ static void RunCreate(const int64_t& num)
|
||||
CheckCreateVch(num);
|
||||
else
|
||||
{
|
||||
BOOST_CHECK_THROW (CheckCreateVch(num), scriptnum_error);
|
||||
BOOST_CHECK_THROW (CheckCreateVch(num), scriptnum10_error);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user