LCOV - code coverage report
Current view: top level - src/util - fees.cpp (source / functions) Hit Total Coverage
Test: fuzz_coverage.info Lines: 35 37 94.6 %
Date: 2023-10-05 15:40:34 Functions: 9 9 100.0 %
Branches: 33 60 55.0 %

           Branch data     Line data    Source code
       1                 :            : // Copyright (c) 2009-2010 Satoshi Nakamoto
       2                 :            : // Copyright (c) 2009-2020 The Bitcoin Core developers
       3                 :            : // Distributed under the MIT software license, see the accompanying
       4                 :            : // file COPYING or http://www.opensource.org/licenses/mit-license.php.
       5                 :            : 
       6                 :            : #include <util/fees.h>
       7                 :            : 
       8                 :            : #include <policy/fees.h>
       9                 :            : #include <util/strencodings.h>
      10                 :            : #include <util/string.h>
      11                 :            : 
      12                 :            : #include <map>
      13                 :            : #include <string>
      14                 :            : #include <vector>
      15                 :            : #include <utility>
      16                 :            : 
      17         [ +  - ]:        231 : std::string StringForFeeReason(FeeReason reason)
      18         [ +  - ]:        173 : {
      19   [ +  +  -  +  :         58 :     static const std::map<FeeReason, std::string> fee_reason_strings = {
                   +  - ]
      20         [ +  - ]:          1 :         {FeeReason::NONE, "None"},
      21         [ +  - ]:          1 :         {FeeReason::HALF_ESTIMATE, "Half Target 60% Threshold"},
      22         [ +  - ]:          1 :         {FeeReason::FULL_ESTIMATE, "Target 85% Threshold"},
      23         [ +  - ]:          1 :         {FeeReason::DOUBLE_ESTIMATE, "Double Target 95% Threshold"},
      24         [ +  - ]:          1 :         {FeeReason::CONSERVATIVE, "Conservative Double Target longer horizon"},
      25         [ +  - ]:          1 :         {FeeReason::MEMPOOL_MIN, "Mempool Min Fee"},
      26         [ +  - ]:          1 :         {FeeReason::PAYTXFEE, "PayTxFee set"},
      27         [ +  - ]:          1 :         {FeeReason::FALLBACK, "Fallback fee"},
      28         [ +  - ]:          1 :         {FeeReason::REQUIRED, "Minimum Required Fee"},
      29                 :            :     };
      30                 :         58 :     auto reason_string = fee_reason_strings.find(reason);
      31                 :            : 
      32   [ -  +  #  # ]:         58 :     if (reason_string == fee_reason_strings.end()) return "Unknown";
      33                 :            : 
      34                 :         58 :     return reason_string->second;
      35                 :         58 : }
      36                 :            : 
      37                 :        428 : const std::vector<std::pair<std::string, FeeEstimateMode>>& FeeModeMap()
      38                 :            : {
      39   [ +  +  -  +  :        428 :     static const std::vector<std::pair<std::string, FeeEstimateMode>> FEE_MODES = {
                   +  - ]
      40         [ +  - ]:         18 :         {"unset", FeeEstimateMode::UNSET},
      41         [ +  - ]:         18 :         {"economical", FeeEstimateMode::ECONOMICAL},
      42         [ +  - ]:         18 :         {"conservative", FeeEstimateMode::CONSERVATIVE},
      43                 :            :     };
      44                 :        428 :     return FEE_MODES;
      45                 :          0 : }
      46                 :            : 
      47                 :         74 : std::string FeeModes(const std::string& delimiter)
      48                 :            : {
      49                 :        296 :     return Join(FeeModeMap(), delimiter, [&](const std::pair<std::string, FeeEstimateMode>& i) { return i.first; });
      50                 :            : }
      51                 :            : 
      52                 :         18 : std::string InvalidEstimateModeErrorMessage()
      53                 :            : {
      54   [ +  -  +  -  :         18 :     return "Invalid estimate_mode parameter, must be one of: \"" + FeeModes("\", \"") + "\"";
             +  -  -  + ]
      55                 :          0 : }
      56                 :            : 
      57                 :        354 : bool FeeModeFromString(const std::string& mode_string, FeeEstimateMode& fee_estimate_mode)
      58                 :            : {
      59                 :        354 :     auto searchkey = ToUpper(mode_string);
      60   [ +  -  +  + ]:       1411 :     for (const auto& pair : FeeModeMap()) {
      61   [ +  -  +  + ]:       1059 :         if (ToUpper(pair.first) == searchkey) {
      62                 :          2 :             fee_estimate_mode = pair.second;
      63                 :          2 :             return true;
      64                 :            :         }
      65                 :            :     }
      66                 :        352 :     return false;
      67                 :        354 : }

Generated by: LCOV version 1.14