aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorlangerhans <[email protected]>2014-05-04 17:57:08 +0200
committerlangerhans <[email protected]>2014-05-04 17:57:08 +0200
commit887798122c62cd156b5d771d267f98fd125b54ca (patch)
tree39e5b832bb4efaddc7f27ba85091f9d43e9f92b4 /src
parentMerge pull request #506 from langerhans/1.7-oldfee (diff)
parentremove unit tests for new fee mode (diff)
downloaddiscoin-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.cpp135
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()