Skip to content

Commit 7d89868

Browse files
committed
Add unit test coverage for package::weight_{offered,received}_htlc
1 parent 03420ea commit 7d89868

File tree

1 file changed

+45
-7
lines changed

1 file changed

+45
-7
lines changed

lightning/src/chain/package.rs

Lines changed: 45 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -842,7 +842,7 @@ fn feerate_bump<F: Deref, L: Deref>(predicted_weight: usize, input_amounts: u64,
842842

843843
#[cfg(test)]
844844
mod tests {
845-
use chain::package::{CounterpartyReceivedHTLCOutput, HolderHTLCOutput, PackageTemplate, PackageSolvingData, RevokedOutput, WEIGHT_REVOKED_OUTPUT};
845+
use chain::package::{CounterpartyOfferedHTLCOutput, CounterpartyReceivedHTLCOutput, HolderHTLCOutput, PackageTemplate, PackageSolvingData, RevokedOutput, WEIGHT_REVOKED_OUTPUT, weight_offered_htlc, weight_received_htlc};
846846
use chain::Txid;
847847
use ln::chan_utils::HTLCOutputInCommitment;
848848
use ln::{PaymentPreimage, PaymentHash};
@@ -878,6 +878,19 @@ mod tests {
878878
}
879879
}
880880

881+
macro_rules! dumb_counterparty_offered_output {
882+
($secp_ctx: expr, $amt: expr) => {
883+
{
884+
let dumb_scalar = SecretKey::from_slice(&hex::decode("0101010101010101010101010101010101010101010101010101010101010101").unwrap()[..]).unwrap();
885+
let dumb_point = PublicKey::from_secret_key(&$secp_ctx, &dumb_scalar);
886+
let hash = PaymentHash([1; 32]);
887+
let preimage = PaymentPreimage([2;32]);
888+
let htlc = HTLCOutputInCommitment { offered: false, amount_msat: $amt, cltv_expiry: 1000, payment_hash: hash, transaction_output_index: None };
889+
PackageSolvingData::CounterpartyOfferedHTLCOutput(CounterpartyOfferedHTLCOutput::build(dumb_point, dumb_point, dumb_point, preimage, htlc))
890+
}
891+
}
892+
}
893+
881894
macro_rules! dumb_htlc_output {
882895
() => {
883896
{
@@ -1042,13 +1055,38 @@ mod tests {
10421055
fn test_package_weight() {
10431056
let txid = Txid::from_hex("c2d4449afa8d26140898dd54d3390b057ba2a5afcf03ba29d7dc0d8b9ffe966e").unwrap();
10441057
let secp_ctx = Secp256k1::new();
1045-
let revk_outp = dumb_revk_output!(secp_ctx);
10461058

1047-
let package = PackageTemplate::build_package(txid, 0, revk_outp, 0, true, 100);
1048-
// (nVersion (4) + nLocktime (4) + count_tx_in (1) + prevout (36) + sequence (4) + script_length (1) + count_tx_out (1) + value (8) + var_int (1)) * WITNESS_SCALE_FACTOR
1049-
// + witness marker (2) + WEIGHT_REVOKED_OUTPUT
1050-
for &opt_anchors in [false, true].iter() {
1051-
assert_eq!(package.package_weight(&Script::new(), opt_anchors), (4 + 4 + 1 + 36 + 4 + 1 + 1 + 8 + 1) * WITNESS_SCALE_FACTOR + 2 + WEIGHT_REVOKED_OUTPUT as usize);
1059+
// (nVersion (4) + nLocktime (4) + count_tx_in (1) + prevout (36) + sequence (4) + script_length (1) + count_tx_out (1) + value (8) + var_int (1)) * WITNESS_SCALE_FACTOR + witness marker (2)
1060+
let weight_sans_output = (4 + 4 + 1 + 36 + 4 + 1 + 1 + 8 + 1) * WITNESS_SCALE_FACTOR + 2;
1061+
1062+
{
1063+
let revk_outp = dumb_revk_output!(secp_ctx);
1064+
let package = PackageTemplate::build_package(txid, 0, revk_outp, 0, true, 100);
1065+
// (nVersion (4) + nLocktime (4) + count_tx_in (1) + prevout (36) + sequence (4) + script_length (1) + count_tx_out (1) + value (8) + var_int (1)) * WITNESS_SCALE_FACTOR
1066+
// + witness marker (2) + WEIGHT_REVOKED_OUTPUT
1067+
for &opt_anchors in [false, true].iter() {
1068+
assert_eq!(package.package_weight(&Script::new(), opt_anchors), weight_sans_output + WEIGHT_REVOKED_OUTPUT as usize);
1069+
}
1070+
}
1071+
1072+
{
1073+
let counterparty_outp = dumb_counterparty_output!(secp_ctx, 1_000_000);
1074+
let package = PackageTemplate::build_package(txid, 0, counterparty_outp, 1000, true, 100);
1075+
// (nVersion (4) + nLocktime (4) + count_tx_in (1) + prevout (36) + sequence (4) + script_length (1) + count_tx_out (1) + value (8) + var_int (1)) * WITNESS_SCALE_FACTOR
1076+
// + witness marker (2) + weight_received_htlc(opt_anchors)
1077+
for &opt_anchors in [false, true].iter() {
1078+
assert_eq!(package.package_weight(&Script::new(), opt_anchors), weight_sans_output + weight_received_htlc(opt_anchors) as usize);
1079+
}
1080+
}
1081+
1082+
{
1083+
let counterparty_outp = dumb_counterparty_offered_output!(secp_ctx, 1_000_000);
1084+
let package = PackageTemplate::build_package(txid, 0, counterparty_outp, 1000, true, 100);
1085+
// (nVersion (4) + nLocktime (4) + count_tx_in (1) + prevout (36) + sequence (4) + script_length (1) + count_tx_out (1) + value (8) + var_int (1)) * WITNESS_SCALE_FACTOR
1086+
// + witness marker (2) + weight_offered_htlc(opt_anchors)
1087+
for &opt_anchors in [false, true].iter() {
1088+
assert_eq!(package.package_weight(&Script::new(), opt_anchors), weight_sans_output + weight_offered_htlc(opt_anchors) as usize);
1089+
}
10521090
}
10531091
}
10541092
}

0 commit comments

Comments
 (0)