diff --git a/src/coin_grinder.rs b/src/coin_grinder.rs index 2df946d..80d603d 100644 --- a/src/coin_grinder.rs +++ b/src/coin_grinder.rs @@ -124,6 +124,7 @@ pub fn select_coins( weighted_utxos: &[Utxo], ) -> Option> { let mut w_utxos = calc_effective_values::(weighted_utxos, fee_rate); + let available_value = w_utxos.clone().into_iter().map(|(ev, _)| ev).checked_sum()?; // descending sort by effective_value using weight as tie breaker. @@ -382,4 +383,23 @@ mod tests { assert_coin_select_params(¶ms, None); } + + #[test] + fn max_weight_exceeded () { + let mut wu = Vec::new(); + for i in 0..10 { + wu.push("1 BTC/272"); + wu.push("2 BTC/272"); + } + + let params = ParamsStr { + target: "29.5 BTC", + change_target: "1000000 sats", + max_weight: "3000", + fee_rate: "5", + weighted_utxos: wu + }; + + assert_coin_select_params(¶ms, None); + } }