Skip to content

Commit

Permalink
Add [u8; N] impl, more tests
Browse files Browse the repository at this point in the history
  • Loading branch information
optout21 committed Aug 29, 2024
1 parent db20b0f commit 82ac2c6
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 2 deletions.
8 changes: 8 additions & 0 deletions lightning-invoice/src/de.rs
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,14 @@ impl FromBase32 for Vec<u8> {
}
}

impl<const N: usize> FromBase32 for [u8; N] {
type Err = CheckedHrpstringError;

fn from_base32(data: &[Fe32]) -> Result<Self, Self::Err> {
Ok(data.iter().copied().fes_to_bytes().collect::<Vec<_>>().try_into().unwrap())
}
}

impl FromBase32 for PaymentSecret {
type Err = CheckedHrpstringError;

Expand Down
29 changes: 27 additions & 2 deletions lightning-invoice/src/test_ser_de.rs
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,15 @@ fn vec_u8() {
ser_de_test_len(vec![255, 254, 253, 252, 251, 250, 249, 248, 247, 246], "lll0ml8mltul3alk");
}

#[test]
fn array_u8() {
ser_de_test_len([0], "qq");
ser_de_test_len([255], "lu");
ser_de_test_len([0, 1], "qqqs");
ser_de_test_len([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], "qqqsyqcyq5rqwzqf");
ser_de_test_len([255, 254, 253, 252, 251, 250, 249, 248, 247, 246], "lll0ml8mltul3alk");
}

#[test]
fn payment_secret() {
let payment_secret = PaymentSecret([7; 32]);
Expand All @@ -66,8 +75,24 @@ fn positive_timestamp() {
fn bolt11_invoice_features() {
use crate::Bolt11InvoiceFeatures;

let features = Bolt11InvoiceFeatures::from_le_bytes(vec![1, 2, 3, 4, 5, 42, 100, 101]);
ser_de_test_len(features, "x2ep2q5zqxqsp");
// Test few values, lengths, and paddings
ser_de_test_len(Bolt11InvoiceFeatures::from_le_bytes(vec![1, 2, 3, 4, 5, 42, 100, 101]), "x2ep2q5zqxqsp");
ser_de_test_len(Bolt11InvoiceFeatures::from_le_bytes(vec![]), "");
ser_de_test_len(Bolt11InvoiceFeatures::from_le_bytes(vec![0]), "");
ser_de_test_len(Bolt11InvoiceFeatures::from_le_bytes(vec![1]), "p");
ser_de_test_len(Bolt11InvoiceFeatures::from_le_bytes(vec![31]), "l");
ser_de_test_len(Bolt11InvoiceFeatures::from_le_bytes(vec![100]), "ry");
ser_de_test_len(Bolt11InvoiceFeatures::from_le_bytes(vec![255]), "8l");
ser_de_test_len(Bolt11InvoiceFeatures::from_le_bytes(vec![1]), "p");
ser_de_test_len(Bolt11InvoiceFeatures::from_le_bytes(vec![1, 2]), "sp");
ser_de_test_len(Bolt11InvoiceFeatures::from_le_bytes(vec![1, 2, 3]), "xqsp");
ser_de_test_len(Bolt11InvoiceFeatures::from_le_bytes(vec![1, 2, 3, 4]), "zqxqsp");
ser_de_test_len(Bolt11InvoiceFeatures::from_le_bytes(vec![1, 2, 3, 4, 5]), "5zqxqsp");
ser_de_test_len(Bolt11InvoiceFeatures::from_le_bytes(vec![255, 254, 253, 252, 251]), "l070mlhl");
ser_de_test_len(Bolt11InvoiceFeatures::from_le_bytes(vec![100, 0]), "ry");
ser_de_test_len(Bolt11InvoiceFeatures::from_le_bytes(vec![100, 0, 0, 0]), "ry");
ser_de_test_len(Bolt11InvoiceFeatures::from_le_bytes(vec![0, 100]), "eqq");
ser_de_test_len(Bolt11InvoiceFeatures::from_le_bytes(vec![0, 0, 0, 100]), "pjqqqqq");
}

#[test]
Expand Down

0 comments on commit 82ac2c6

Please sign in to comment.