test: Reproduce #660 conditions
Issue #660 has been fixed by 32ae95f463f62c42c6d6aec62c1832a30298fce4, when we moved the change calculation inside the coin selection. This commit just adds a test to make sure that the problem is fixed.
This commit is contained in:
parent
50af51da5a
commit
2756411ef7
@ -4050,6 +4050,38 @@ pub(crate) mod test {
|
||||
builder.finish().unwrap();
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_fee_amount_negative_drain_val() {
|
||||
// While building the transaction, bdk would calculate the drain_value
|
||||
// as
|
||||
// current_delta - fee_amount - drain_fee
|
||||
// using saturating_sub, meaning that if the result would end up negative,
|
||||
// it'll remain to zero instead.
|
||||
// This caused a bug in master where we would calculate the wrong fee
|
||||
// for a transaction.
|
||||
// See https://github.com/bitcoindevkit/bdk/issues/660
|
||||
let (wallet, descriptors, _) = get_funded_wallet(get_test_wpkh());
|
||||
let send_to = Address::from_str("tb1ql7w62elx9ucw4pj5lgw4l028hmuw80sndtntxt").unwrap();
|
||||
let fee_rate = FeeRate::from_sat_per_vb(2.01);
|
||||
let incoming_txid = crate::populate_test_db!(
|
||||
wallet.database.borrow_mut(),
|
||||
testutils! (@tx ( (@external descriptors, 0) => 8859 ) (@confirmations 1)),
|
||||
Some(100),
|
||||
);
|
||||
|
||||
let mut builder = wallet.build_tx();
|
||||
builder
|
||||
.add_recipient(send_to.script_pubkey(), 8630)
|
||||
.add_utxo(OutPoint::new(incoming_txid, 0))
|
||||
.unwrap()
|
||||
.enable_rbf()
|
||||
.fee_rate(fee_rate);
|
||||
let (psbt, details) = builder.finish().unwrap();
|
||||
|
||||
assert!(psbt.inputs.len() == 1);
|
||||
assert_fee_rate!(psbt, details.fee.unwrap_or(0), fee_rate, @add_signature);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_sign_single_xprv() {
|
||||
let (wallet, _, _) = get_funded_wallet("wpkh(tprv8ZgxMBicQKsPd3EupYiPRhaMooHKUHJxNsTfYuScep13go8QFfHdtkG9nRkFGb7busX4isf6X9dURGCoKgitaApQ6MupRhZMcELAxTBRJgS/*)");
|
||||
|
Loading…
x
Reference in New Issue
Block a user