feerounder_tests.cpp raw

   1  // Copyright (c) 2020-present The Bitcoin Core developers
   2  // Distributed under the MIT software license, see the accompanying
   3  // file COPYING or http://www.opensource.org/licenses/mit-license.php.
   4  
   5  #include <consensus/amount.h>
   6  #include <policy/fees/block_policy_estimator.h>
   7  
   8  #include <boost/test/unit_test.hpp>
   9  
  10  #include <set>
  11  
  12  BOOST_AUTO_TEST_SUITE(feerounder_tests)
  13  
  14  BOOST_AUTO_TEST_CASE(FeeRounder)
  15  {
  16      FastRandomContext rng{/*fDeterministic=*/true};
  17      FeeFilterRounder fee_rounder{CFeeRate{1000}, rng};
  18  
  19      // check that 1000 rounds to 974 or 1071
  20      std::set<CAmount> results;
  21      while (results.size() < 2) {
  22          results.emplace(fee_rounder.round(1000));
  23      }
  24      BOOST_CHECK_EQUAL(*results.begin(), 974);
  25      BOOST_CHECK_EQUAL(*++results.begin(), 1071);
  26  
  27      // check that negative amounts rounds to 0
  28      BOOST_CHECK_EQUAL(fee_rounder.round(-0), 0);
  29      BOOST_CHECK_EQUAL(fee_rounder.round(-1), 0);
  30  
  31      // check that MAX_MONEY rounds to 9170997
  32      BOOST_CHECK_EQUAL(fee_rounder.round(MAX_MONEY), 9170997);
  33  }
  34  
  35  BOOST_AUTO_TEST_SUITE_END()
  36