Make maintain_single_recipient return a Result
preferable to panicking.
This commit is contained in:
parent
33426d4c3a
commit
dbf8cf7674
@ -2543,7 +2543,8 @@ mod test {
|
|||||||
let mut builder = wallet.build_fee_bump(txid).unwrap();
|
let mut builder = wallet.build_fee_bump(txid).unwrap();
|
||||||
builder
|
builder
|
||||||
.fee_rate(FeeRate::from_sat_per_vb(2.5))
|
.fee_rate(FeeRate::from_sat_per_vb(2.5))
|
||||||
.maintain_single_recipient();
|
.maintain_single_recipient()
|
||||||
|
.unwrap();
|
||||||
let (psbt, details) = builder.finish().unwrap();
|
let (psbt, details) = builder.finish().unwrap();
|
||||||
|
|
||||||
assert_eq!(details.sent, original_details.sent);
|
assert_eq!(details.sent, original_details.sent);
|
||||||
@ -2584,7 +2585,10 @@ mod test {
|
|||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
let mut builder = wallet.build_fee_bump(txid).unwrap();
|
let mut builder = wallet.build_fee_bump(txid).unwrap();
|
||||||
builder.maintain_single_recipient().fee_absolute(300);
|
builder
|
||||||
|
.maintain_single_recipient()
|
||||||
|
.unwrap()
|
||||||
|
.fee_absolute(300);
|
||||||
let (psbt, details) = builder.finish().unwrap();
|
let (psbt, details) = builder.finish().unwrap();
|
||||||
|
|
||||||
assert_eq!(details.sent, original_details.sent);
|
assert_eq!(details.sent, original_details.sent);
|
||||||
@ -2643,6 +2647,7 @@ mod test {
|
|||||||
builder
|
builder
|
||||||
.drain_wallet()
|
.drain_wallet()
|
||||||
.maintain_single_recipient()
|
.maintain_single_recipient()
|
||||||
|
.unwrap()
|
||||||
.fee_rate(FeeRate::from_sat_per_vb(5.0));
|
.fee_rate(FeeRate::from_sat_per_vb(5.0));
|
||||||
let (_, details) = builder.finish().unwrap();
|
let (_, details) = builder.finish().unwrap();
|
||||||
assert_eq!(details.sent, 75_000);
|
assert_eq!(details.sent, 75_000);
|
||||||
|
@ -514,12 +514,13 @@ impl<'a, B, D: BatchDatabase> TxBuilder<'a, B, D, DefaultCoinSelectionAlgorithm,
|
|||||||
/// Fails if the transaction has more than one outputs.
|
/// Fails if the transaction has more than one outputs.
|
||||||
///
|
///
|
||||||
/// [`add_utxo`]: Self::add_utxo
|
/// [`add_utxo`]: Self::add_utxo
|
||||||
pub fn maintain_single_recipient(&mut self) -> &mut Self {
|
pub fn maintain_single_recipient(&mut self) -> Result<&mut Self, Error> {
|
||||||
let mut recipients = self.params.recipients.drain(..).collect::<Vec<_>>();
|
let mut recipients = self.params.recipients.drain(..).collect::<Vec<_>>();
|
||||||
assert_eq!(recipients.len(), 1, "maintain_single_recipient must not be called while bumping a transactions with more than one output");
|
if recipients.len() != 1 {
|
||||||
|
return Err(Error::SingleRecipientMultipleOutputs);
|
||||||
|
}
|
||||||
self.params.single_recipient = Some(recipients.pop().unwrap().0);
|
self.params.single_recipient = Some(recipients.pop().unwrap().0);
|
||||||
// Since we are fee bumping and maintaining a single recipient we never want to add any more non-manual inputs.
|
Ok(self)
|
||||||
self
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user