Skip to content
This repository was archived by the owner on Jan 6, 2025. It is now read-only.

Commit 77d9078

Browse files
committed
Add test for compute_opening_fee
1 parent b94b2fe commit 77d9078

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

src/lsps2/utils.rs

+26
Original file line numberDiff line numberDiff line change
@@ -54,3 +54,29 @@ pub fn compute_opening_fee(
5454
.and_then(|f| f.checked_div(1000000))
5555
.map(|f| core::cmp::max(f, opening_fee_min_fee_msat))
5656
}
57+
58+
#[cfg(test)]
59+
mod tests {
60+
use super::*;
61+
use proptest::prelude::*;
62+
63+
const MAX_VALUE_MSAT: u64 = 21_000_000_0000_0000_000;
64+
65+
fn arb_opening_fee_params() -> impl Strategy<Value = (u64, u64, u64)> {
66+
(0u64..MAX_VALUE_MSAT, 0u64..MAX_VALUE_MSAT, 0u64..MAX_VALUE_MSAT)
67+
}
68+
69+
proptest! {
70+
#[test]
71+
fn test_compute_opening_fee((payment_size_msat, opening_fee_min_fee_msat, opening_fee_proportional) in arb_opening_fee_params()) {
72+
if let Some(res) = compute_opening_fee(payment_size_msat, opening_fee_min_fee_msat, opening_fee_proportional) {
73+
assert!(res >= opening_fee_min_fee_msat);
74+
assert_eq!(res as f32, (payment_size_msat as f32 * opening_fee_proportional as f32));
75+
} else {
76+
// Check we actually overflowed.
77+
let max_value = u64::MAX as u128;
78+
assert!((payment_size_msat as u128 * opening_fee_proportional as u128) > max_value);
79+
}
80+
}
81+
}
82+
}

0 commit comments

Comments
 (0)