diff options
| author | langerhans <[email protected]> | 2014-05-04 17:57:08 +0200 |
|---|---|---|
| committer | langerhans <[email protected]> | 2014-05-04 17:57:08 +0200 |
| commit | 887798122c62cd156b5d771d267f98fd125b54ca (patch) | |
| tree | 39e5b832bb4efaddc7f27ba85091f9d43e9f92b4 /src | |
| parent | Merge pull request #506 from langerhans/1.7-oldfee (diff) | |
| parent | remove unit tests for new fee mode (diff) | |
| download | discoin-887798122c62cd156b5d771d267f98fd125b54ca.tar.xz discoin-887798122c62cd156b5d771d267f98fd125b54ca.zip | |
Merge pull request #503 from leofidus/fee-testsv1.7.0-RC-1
add unit tests for GetMinFee
Diffstat (limited to 'src')
| -rw-r--r-- | src/test/main_tests.cpp | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/src/test/main_tests.cpp b/src/test/main_tests.cpp index 453dc0b4a..794ff5290 100644 --- a/src/test/main_tests.cpp +++ b/src/test/main_tests.cpp @@ -96,4 +96,139 @@ BOOST_AUTO_TEST_CASE(subsidy_limit_test) BOOST_CHECK(nSubsidy <= expectedMaxSubsidy(nHeight)); } + +BOOST_AUTO_TEST_CASE(GetMinFee_test) +{ + uint64_t value = 1000 * COIN; + + CTransaction tx; + CTxOut txout1(value, (CScript)vector<unsigned char>(24, 0)); + tx.vout.push_back(txout1); + + if(CTransaction::nMinTxFee == CTransaction::nMinRelayTxFee) + CTransaction::nMinTxFee++; + + BOOST_CHECK(GetMinFee(tx, 100, false, GMF_RELAY) == CTransaction::nMinRelayTxFee); + BOOST_CHECK(GetMinFee(tx, 100, false, GMF_SEND) == CTransaction::nMinTxFee); + + BOOST_CHECK(GetMinFee(tx, 1, false, GMF_RELAY) == CTransaction::nMinRelayTxFee); + BOOST_CHECK(GetMinFee(tx, 1, false, GMF_SEND) == CTransaction::nMinTxFee); + + BOOST_CHECK(GetMinFee(tx, 999, false, GMF_RELAY) == CTransaction::nMinRelayTxFee); + BOOST_CHECK(GetMinFee(tx, 999, false, GMF_SEND) == CTransaction::nMinTxFee); + + BOOST_CHECK(GetMinFee(tx, 1000, false, GMF_RELAY) == 2 * CTransaction::nMinRelayTxFee); + BOOST_CHECK(GetMinFee(tx, 1000, false, GMF_SEND) == 2 * CTransaction::nMinTxFee); + + BOOST_CHECK(GetMinFee(tx, 2000, false, GMF_RELAY) == 3 * CTransaction::nMinRelayTxFee); + BOOST_CHECK(GetMinFee(tx, 2000, false, GMF_SEND) == 3 * CTransaction::nMinTxFee); + + BOOST_CHECK(GetMinFee(tx, MAX_STANDARD_TX_SIZE, false, GMF_RELAY) == (1+(MAX_STANDARD_TX_SIZE/1000))*CTransaction::nMinRelayTxFee); + BOOST_CHECK(GetMinFee(tx, MAX_STANDARD_TX_SIZE, false, GMF_SEND) == (1+(MAX_STANDARD_TX_SIZE/1000))*CTransaction::nMinTxFee); +} + +BOOST_AUTO_TEST_CASE(GetMinFee_dust_test) +{ + uint64_t value = 1000; + + CTransaction tx; + CTxOut txout1(value, (CScript)vector<unsigned char>(24, 0)); + tx.vout.push_back(txout1); + + if(CTransaction::nMinTxFee == CTransaction::nMinRelayTxFee) + CTransaction::nMinTxFee++; + + BOOST_CHECK(GetMinFee(tx, 1, false, GMF_RELAY) == 2 * CTransaction::nMinRelayTxFee); + BOOST_CHECK(GetMinFee(tx, 1, false, GMF_SEND) == 2 * CTransaction::nMinTxFee); + + BOOST_CHECK(GetMinFee(tx, 999, false, GMF_RELAY) == 2 * CTransaction::nMinRelayTxFee); + BOOST_CHECK(GetMinFee(tx, 999, false, GMF_SEND) == 2 * CTransaction::nMinTxFee); + + BOOST_CHECK(GetMinFee(tx, 1000, false, GMF_RELAY) == 3 * CTransaction::nMinRelayTxFee); + BOOST_CHECK(GetMinFee(tx, 1000, false, GMF_SEND) == 3 * CTransaction::nMinTxFee); + + BOOST_CHECK(GetMinFee(tx, 2000, false, GMF_RELAY) == 4 * CTransaction::nMinRelayTxFee); + BOOST_CHECK(GetMinFee(tx, 2000, false, GMF_SEND) == 4 * CTransaction::nMinTxFee); + + BOOST_CHECK(GetMinFee(tx, MAX_STANDARD_TX_SIZE, false, GMF_RELAY) == (2+(MAX_STANDARD_TX_SIZE/1000))*CTransaction::nMinRelayTxFee); + BOOST_CHECK(GetMinFee(tx, MAX_STANDARD_TX_SIZE, false, GMF_SEND) == (2+(MAX_STANDARD_TX_SIZE/1000))*CTransaction::nMinTxFee); +} + +BOOST_AUTO_TEST_CASE(GetMinFee_manydust_test) +{ + uint64_t value = 1000; + + CTransaction tx; + CTxOut txout1(1000 * COIN, (CScript)vector<unsigned char>(24, 0)); + tx.vout.push_back(txout1); + + for(int i=0; i<100; i++) { + CTxOut txoutn(value, (CScript)vector<unsigned char>(24, 0)); + tx.vout.push_back(txoutn); + } + + CTxOut txout101(1000 * COIN, (CScript)vector<unsigned char>(24, 0)); + tx.vout.push_back(txout101); + + if(CTransaction::nMinTxFee == CTransaction::nMinRelayTxFee) + CTransaction::nMinTxFee++; + + BOOST_CHECK(GetMinFee(tx, 1, false, GMF_RELAY) == 101 * CTransaction::nMinRelayTxFee); + BOOST_CHECK(GetMinFee(tx, 1, false, GMF_SEND) == 101 * CTransaction::nMinTxFee); + + BOOST_CHECK(GetMinFee(tx, 999, false, GMF_RELAY) == 101 * CTransaction::nMinRelayTxFee); + BOOST_CHECK(GetMinFee(tx, 999, false, GMF_SEND) == 101 * CTransaction::nMinTxFee); + + BOOST_CHECK(GetMinFee(tx, 1000, false, GMF_RELAY) == 102 * CTransaction::nMinRelayTxFee); + BOOST_CHECK(GetMinFee(tx, 1000, false, GMF_SEND) == 102 * CTransaction::nMinTxFee); + + BOOST_CHECK(GetMinFee(tx, 2000, false, GMF_RELAY) == 103 * CTransaction::nMinRelayTxFee); + BOOST_CHECK(GetMinFee(tx, 2000, false, GMF_SEND) == 103 * CTransaction::nMinTxFee); + + BOOST_CHECK(GetMinFee(tx, MAX_STANDARD_TX_SIZE, false, GMF_RELAY) == (101+(MAX_STANDARD_TX_SIZE/1000))*CTransaction::nMinRelayTxFee); + BOOST_CHECK(GetMinFee(tx, MAX_STANDARD_TX_SIZE, false, GMF_SEND) == (101+(MAX_STANDARD_TX_SIZE/1000))*CTransaction::nMinTxFee); +} + +BOOST_AUTO_TEST_CASE(GetMinFee_relayfree_test) +{ + uint64_t value = 1000 * COIN; + + CTransaction tx; + CTxOut txout1(value, (CScript)vector<unsigned char>(24, 0)); + tx.vout.push_back(txout1); + + if(CTransaction::nMinTxFee == CTransaction::nMinRelayTxFee) + CTransaction::nMinTxFee++; + + BOOST_CHECK(GetMinFee(tx, 100, true, GMF_RELAY) == 0); + BOOST_CHECK(GetMinFee(tx, 1000, true, GMF_RELAY) == 0); + BOOST_CHECK(GetMinFee(tx, 25999, true, GMF_RELAY) == 0); + + BOOST_CHECK(GetMinFee(tx, 26000, true, GMF_RELAY) > 0); + BOOST_CHECK(GetMinFee(tx, 26000, true, GMF_RELAY) == GetMinFee(tx, 26000, false, GMF_RELAY)); + + BOOST_CHECK(GetMinFee(tx, MAX_STANDARD_TX_SIZE, true, GMF_RELAY) == (1+(MAX_STANDARD_TX_SIZE/1000))*CTransaction::nMinRelayTxFee); +} + +BOOST_AUTO_TEST_CASE(GetMinFee_createFree_test) +{ + uint64_t value = 1000 * COIN; + + CTransaction tx; + CTxOut txout1(value, (CScript)vector<unsigned char>(24, 0)); + tx.vout.push_back(txout1); + + if(CTransaction::nMinTxFee == CTransaction::nMinRelayTxFee) + CTransaction::nMinTxFee++; + + BOOST_CHECK(GetMinFee(tx, 100, true, GMF_SEND) == 0); + BOOST_CHECK(GetMinFee(tx, 1000, true, GMF_SEND) == 0); + BOOST_CHECK(GetMinFee(tx, 25999, true, GMF_SEND) == 0); + + BOOST_CHECK(GetMinFee(tx, 26000, true, GMF_SEND) > 0); + BOOST_CHECK(GetMinFee(tx, 26000, true, GMF_SEND) == GetMinFee(tx, 26000, false, GMF_SEND)); + + BOOST_CHECK(GetMinFee(tx, MAX_STANDARD_TX_SIZE, true, GMF_SEND) == (1+(MAX_STANDARD_TX_SIZE/1000))*CTransaction::nMinTxFee); +} + BOOST_AUTO_TEST_SUITE_END() |