aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorbrunoerg <brunoely.gc@gmail.com>2023-08-03 16:42:05 -0300
committerbrunoerg <brunoely.gc@gmail.com>2023-08-23 14:48:27 -0300
commitb2eb55840778515d61465acc8106b27e16af1c88 (patch)
treeb27d6051a6b236ca7b266af6a56d86dc28be9538 /src
parent0df0438c60e27df1aced6d31a192d6f334cef2d1 (diff)
fuzz: coinselection, compare `GetSelectedValue` with target
The valid results should have a target below the sum of the selected inputs amounts. Also, it increases the minimum value for target to make it more realistic.
Diffstat (limited to 'src')
-rw-r--r--src/wallet/test/fuzz/coinselection.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/wallet/test/fuzz/coinselection.cpp b/src/wallet/test/fuzz/coinselection.cpp
index 5281d19e23..0c65835ec6 100644
--- a/src/wallet/test/fuzz/coinselection.cpp
+++ b/src/wallet/test/fuzz/coinselection.cpp
@@ -115,12 +115,14 @@ FUZZ_TARGET(coinselection)
// Run coinselection algorithms
auto result_bnb = SelectCoinsBnB(group_pos, target, coin_params.m_cost_of_change, MAX_STANDARD_TX_WEIGHT);
if (result_bnb) {
+ assert(result_bnb->GetSelectedValue() >= target);
(void)result_bnb->GetShuffledInputVector();
(void)result_bnb->GetInputSet();
}
auto result_srd = SelectCoinsSRD(group_pos, target, coin_params.m_change_fee, fast_random_context, MAX_STANDARD_TX_WEIGHT);
if (result_srd) {
+ assert(result_srd->GetSelectedValue() >= target);
assert(result_srd->GetChange(CHANGE_LOWER, coin_params.m_change_fee) > 0); // Demonstrate that SRD creates change of at least CHANGE_LOWER
result_srd->ComputeAndSetWaste(coin_params.min_viable_change, coin_params.m_cost_of_change, coin_params.m_change_fee);
(void)result_srd->GetShuffledInputVector();
@@ -130,6 +132,7 @@ FUZZ_TARGET(coinselection)
CAmount change_target{GenerateChangeTarget(target, coin_params.m_change_fee, fast_random_context)};
auto result_knapsack = KnapsackSolver(group_all, target, change_target, fast_random_context, MAX_STANDARD_TX_WEIGHT);
if (result_knapsack) {
+ assert(result_knapsack->GetSelectedValue() >= target);
result_knapsack->ComputeAndSetWaste(coin_params.min_viable_change, coin_params.m_cost_of_change, coin_params.m_change_fee);
(void)result_knapsack->GetShuffledInputVector();
(void)result_knapsack->GetInputSet();