Changeset View
Changeset View
Standalone View
Standalone View
src/test/fuzz/integer.cpp
Show All 28 Lines | |||||
#include <util/strencodings.h> | #include <util/strencodings.h> | ||||
#include <util/string.h> | #include <util/string.h> | ||||
#include <util/system.h> | #include <util/system.h> | ||||
#include <util/time.h> | #include <util/time.h> | ||||
#include <version.h> | #include <version.h> | ||||
#include <test/fuzz/FuzzedDataProvider.h> | #include <test/fuzz/FuzzedDataProvider.h> | ||||
#include <test/fuzz/fuzz.h> | #include <test/fuzz/fuzz.h> | ||||
#include <test/fuzz/util.h> | |||||
#include <cassert> | #include <cassert> | ||||
#include <chrono> | #include <chrono> | ||||
#include <limits> | #include <limits> | ||||
#include <set> | |||||
#include <vector> | #include <vector> | ||||
void initialize() { | void initialize() { | ||||
SelectParams(CBaseChainParams::REGTEST); | SelectParams(CBaseChainParams::REGTEST); | ||||
} | } | ||||
void test_one_input(const std::vector<uint8_t> &buffer) { | void test_one_input(const std::vector<uint8_t> &buffer) { | ||||
if (buffer.size() < sizeof(uint256) + sizeof(uint160)) { | if (buffer.size() < sizeof(uint256) + sizeof(uint160)) { | ||||
▲ Show 20 Lines • Show All 47 Lines • ▼ Show 20 Lines | void test_one_input(const std::vector<uint8_t> &buffer) { | ||||
if (i64 != std::numeric_limits<int64_t>::min()) { | if (i64 != std::numeric_limits<int64_t>::min()) { | ||||
Amount parsed_money; | Amount parsed_money; | ||||
if (ParseMoney(FormatMoney(i64 * SATOSHI), parsed_money)) { | if (ParseMoney(FormatMoney(i64 * SATOSHI), parsed_money)) { | ||||
assert(parsed_money == i64 * SATOSHI); | assert(parsed_money == i64 * SATOSHI); | ||||
} | } | ||||
} | } | ||||
(void)GetSizeOfCompactSize(u64); | (void)GetSizeOfCompactSize(u64); | ||||
(void)GetSpecialScriptSize(u32); | (void)GetSpecialScriptSize(u32); | ||||
// function defined only for a subset of int64_t inputs | if (!MultiplicationOverflow(i64, static_cast<int64_t>(::nBytesPerSigOp)) && | ||||
// ()GetVirtualTransactionSize(i64, i64); | !AdditionOverflow(i64 * ::nBytesPerSigOp, static_cast<int64_t>(4))) { | ||||
// function defined only for a subset of int64_t/uint32_t inputs | (void)GetVirtualTransactionSize(i64, i64); | ||||
// ()GetVirtualTransactionSize(i64, i64, u32); | } | ||||
if (!MultiplicationOverflow(i64, static_cast<int64_t>(u32)) && | |||||
!AdditionOverflow(i64, static_cast<int64_t>(4)) && | |||||
!AdditionOverflow(i64 * u32, static_cast<int64_t>(4))) { | |||||
(void)GetVirtualTransactionSize(i64, i64, u32); | |||||
} | |||||
(void)HexDigit(ch); | (void)HexDigit(ch); | ||||
(void)MoneyRange(i64 * SATOSHI); | (void)MoneyRange(i64 * SATOSHI); | ||||
(void)ToString(i64); | (void)ToString(i64); | ||||
(void)IsDigit(ch); | (void)IsDigit(ch); | ||||
(void)IsSpace(ch); | (void)IsSpace(ch); | ||||
(void)IsSwitchChar(ch); | (void)IsSwitchChar(ch); | ||||
(void)memusage::DynamicUsage(ch); | (void)memusage::DynamicUsage(ch); | ||||
(void)memusage::DynamicUsage(i16); | (void)memusage::DynamicUsage(i16); | ||||
(void)memusage::DynamicUsage(i32); | (void)memusage::DynamicUsage(i32); | ||||
(void)memusage::DynamicUsage(i64); | (void)memusage::DynamicUsage(i64); | ||||
(void)memusage::DynamicUsage(i8); | (void)memusage::DynamicUsage(i8); | ||||
(void)memusage::DynamicUsage(u16); | (void)memusage::DynamicUsage(u16); | ||||
(void)memusage::DynamicUsage(u32); | (void)memusage::DynamicUsage(u32); | ||||
(void)memusage::DynamicUsage(u64); | (void)memusage::DynamicUsage(u64); | ||||
(void)memusage::DynamicUsage(u8); | (void)memusage::DynamicUsage(u8); | ||||
const uint8_t uch = static_cast<uint8_t>(u8); | const uint8_t uch = static_cast<uint8_t>(u8); | ||||
(void)memusage::DynamicUsage(uch); | (void)memusage::DynamicUsage(uch); | ||||
{ | |||||
const std::set<int64_t> i64s{i64, static_cast<int64_t>(u64)}; | |||||
const size_t dynamic_usage = memusage::DynamicUsage(i64s); | |||||
const size_t incremental_dynamic_usage = | |||||
memusage::IncrementalDynamicUsage(i64s); | |||||
assert(dynamic_usage == incremental_dynamic_usage * i64s.size()); | |||||
} | |||||
(void)MillisToTimeval(i64); | (void)MillisToTimeval(i64); | ||||
const double d = ser_uint64_to_double(u64); | const double d = ser_uint64_to_double(u64); | ||||
assert(ser_double_to_uint64(d) == u64); | assert(ser_double_to_uint64(d) == u64); | ||||
const float f = ser_uint32_to_float(u32); | const float f = ser_uint32_to_float(u32); | ||||
assert(ser_float_to_uint32(f) == u32); | assert(ser_float_to_uint32(f) == u32); | ||||
(void)SighashToStr(uch); | (void)SighashToStr(uch); | ||||
(void)SipHashUint256(u64, u64, u256); | (void)SipHashUint256(u64, u64, u256); | ||||
(void)SipHashUint256Extra(u64, u64, u256, u32); | (void)SipHashUint256Extra(u64, u64, u256, u32); | ||||
▲ Show 20 Lines • Show All 165 Lines • Show Last 20 Lines |