Changeset View
Changeset View
Standalone View
Standalone View
src/test/feerate_tests.cpp
// Copyright (c) 2016 The Bitcoin Core developers | // Copyright (c) 2016 The Bitcoin Core developers | ||||
// Distributed under the MIT software license, see the accompanying | // Distributed under the MIT software license, see the accompanying | ||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php. | // file COPYING or http://www.opensource.org/licenses/mit-license.php. | ||||
#include <amount.h> | #include <amount.h> | ||||
#include <test/test_bitcoin.h> | #include <test/test_bitcoin.h> | ||||
#include <boost/test/unit_test.hpp> | #include <boost/test/unit_test.hpp> | ||||
#include <array> | #include <array> | ||||
BOOST_FIXTURE_TEST_SUITE(feerate_tests, BasicTestingSetup) | BOOST_FIXTURE_TEST_SUITE(feerate_tests, BasicTestingSetup) | ||||
BOOST_AUTO_TEST_CASE(GetFeeTest) { | BOOST_AUTO_TEST_CASE(GetFeeTest) { | ||||
CFeeRate feeRate; | CFeeRate feeRate, altFeeRate; | ||||
feeRate = CFeeRate(Amount::zero()); | feeRate = CFeeRate(Amount::zero()); | ||||
// Must always return 0 | // Must always return 0 | ||||
BOOST_CHECK_EQUAL(feeRate.GetFee(0), Amount::zero()); | BOOST_CHECK_EQUAL(feeRate.GetFee(0), Amount::zero()); | ||||
BOOST_CHECK_EQUAL(feeRate.GetFee(1e5), Amount::zero()); | BOOST_CHECK_EQUAL(feeRate.GetFee(1e5), Amount::zero()); | ||||
feeRate = CFeeRate(1000 * SATOSHI); | feeRate = CFeeRate(1000 * SATOSHI); | ||||
// Must always just return the arg | // Must always just return the arg | ||||
Show All 35 Lines | BOOST_AUTO_TEST_CASE(GetFeeTest) { | ||||
// Check ceiling results | // Check ceiling results | ||||
feeRate = CFeeRate(18 * SATOSHI); | feeRate = CFeeRate(18 * SATOSHI); | ||||
// Truncates the result, if not integer | // Truncates the result, if not integer | ||||
BOOST_CHECK_EQUAL(feeRate.GetFeeCeiling(0), Amount::zero()); | BOOST_CHECK_EQUAL(feeRate.GetFeeCeiling(0), Amount::zero()); | ||||
BOOST_CHECK_EQUAL(feeRate.GetFeeCeiling(100), 2 * SATOSHI); | BOOST_CHECK_EQUAL(feeRate.GetFeeCeiling(100), 2 * SATOSHI); | ||||
BOOST_CHECK_EQUAL(feeRate.GetFeeCeiling(200), 4 * SATOSHI); | BOOST_CHECK_EQUAL(feeRate.GetFeeCeiling(200), 4 * SATOSHI); | ||||
BOOST_CHECK_EQUAL(feeRate.GetFeeCeiling(1000), 18 * SATOSHI); | BOOST_CHECK_EQUAL(feeRate.GetFeeCeiling(1000), 18 * SATOSHI); | ||||
// Check alternate constructor | |||||
feeRate = CFeeRate(1000 * SATOSHI); | |||||
altFeeRate = CFeeRate(feeRate); | |||||
BOOST_CHECK_EQUAL(feeRate.GetFee(100), altFeeRate.GetFee(100)); | |||||
// Check full constructor | // Check full constructor | ||||
// default value | // default value | ||||
BOOST_CHECK(CFeeRate(-SATOSHI, 1000) == CFeeRate(-SATOSHI)); | BOOST_CHECK(CFeeRate(-SATOSHI, 1000) == CFeeRate(-SATOSHI)); | ||||
BOOST_CHECK(CFeeRate(Amount::zero(), 1000) == CFeeRate(Amount::zero())); | BOOST_CHECK(CFeeRate(Amount::zero(), 1000) == CFeeRate(Amount::zero())); | ||||
BOOST_CHECK(CFeeRate(SATOSHI, 1000) == CFeeRate(SATOSHI)); | BOOST_CHECK(CFeeRate(SATOSHI, 1000) == CFeeRate(SATOSHI)); | ||||
// lost precision (can only resolve satoshis per kB) | // lost precision (can only resolve satoshis per kB) | ||||
BOOST_CHECK(CFeeRate(SATOSHI, 1001) == CFeeRate(Amount::zero())); | BOOST_CHECK(CFeeRate(SATOSHI, 1001) == CFeeRate(Amount::zero())); | ||||
BOOST_CHECK(CFeeRate(2 * SATOSHI, 1001) == CFeeRate(SATOSHI)); | BOOST_CHECK(CFeeRate(2 * SATOSHI, 1001) == CFeeRate(SATOSHI)); | ||||
// some more integer checks | // some more integer checks | ||||
BOOST_CHECK(CFeeRate(26 * SATOSHI, 789) == CFeeRate(32 * SATOSHI)); | BOOST_CHECK(CFeeRate(26 * SATOSHI, 789) == CFeeRate(32 * SATOSHI)); | ||||
BOOST_CHECK(CFeeRate(27 * SATOSHI, 789) == CFeeRate(34 * SATOSHI)); | BOOST_CHECK(CFeeRate(27 * SATOSHI, 789) == CFeeRate(34 * SATOSHI)); | ||||
// Maximum size in bytes, should not crash | // Maximum size in bytes, should not crash | ||||
CFeeRate(MAX_MONEY, std::numeric_limits<size_t>::max() >> 1).GetFeePerK(); | CFeeRate(MAX_MONEY, std::numeric_limits<size_t>::max() >> 1).GetFeePerK(); | ||||
} | } | ||||
BOOST_AUTO_TEST_SUITE_END() | BOOST_AUTO_TEST_SUITE_END() |