@@ -475,16 +475,63 @@ fn invoice_features_encoding() {
475
475
assert_eq ! ( features, features_deserialized) ;
476
476
}
477
477
478
+ use core:: fmt:: Debug ;
479
+
480
+ /// Test base32 encode and decode
481
+ fn ser_de_test < T > ( o : T , expected_str : & str ) where T : ToBase32 + FromBase32 + Eq + Debug , T :: Err : Debug {
482
+ let serialized_32 = o. to_base32 ( ) ;
483
+ assert_eq ! ( serialized_32. len( ) , expected_str. len( ) ) ;
484
+
485
+ let serialized_str = serialized_32. iter ( ) . map ( |f| f. to_char ( ) ) . collect :: < String > ( ) ;
486
+ assert_eq ! ( serialized_str, expected_str) ;
487
+
488
+ // deserialize back
489
+ let o2 = T :: from_base32 ( & serialized_32) . unwrap ( ) ;
490
+ assert_eq ! ( o, o2) ;
491
+ }
492
+
493
+ /// Test base32 encode and decode, and also length hint
494
+ fn ser_de_test_len < T > ( o : T , expected_str : & str , opt_expected_len_hint : Option < usize > ) where T : ToBase32 + FromBase32 + Base32Len + Eq + Debug , T :: Err : Debug {
495
+ let expected_len_hint = opt_expected_len_hint. unwrap_or ( expected_str. len ( ) ) ;
496
+ assert_eq ! ( o. base32_len( ) , expected_len_hint) ;
497
+
498
+ ser_de_test ( o, expected_str)
499
+ }
500
+
501
+ #[ test]
502
+ fn vec_u8 ( ) {
503
+ let v = vec ! [ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ] ;
504
+ ser_de_test_len ( v, "qqqsyqcyq5rqwzqf" , Some ( 17 ) ) ; // 16 or 17 ?
505
+ }
506
+
507
+ #[ test]
508
+ fn payment_secret ( ) {
509
+ let payment_secret = PaymentSecret ( [ 7 ; 32 ] ) ;
510
+ ser_de_test_len ( payment_secret, "qurswpc8qurswpc8qurswpc8qurswpc8qurswpc8qurswpc8qurs" , None ) ;
511
+ }
512
+
513
+ #[ test]
514
+ fn raw_data_part ( ) {
515
+ use crate :: TaggedField :: PaymentHash ;
516
+
517
+ let raw_data_part = RawDataPart {
518
+ timestamp : PositiveTimestamp :: from_unix_timestamp ( 10000 ) . unwrap ( ) ,
519
+ tagged_fields : vec ! [
520
+ PaymentHash ( Sha256 ( sha256:: Hash :: from_str(
521
+ "0001020304050607080900010203040506070809000102030405060708090102"
522
+ ) . unwrap( ) ) ) . into( ) ,
523
+ ] ,
524
+ } ;
525
+ ser_de_test ( raw_data_part, "qqqqfcspp5qqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqqqsyqcyq5rqwzqfqypq" ) ;
526
+ }
527
+
478
528
#[ test]
479
- fn payeepubkey_ser_de ( ) {
529
+ fn payeepubkey ( ) {
480
530
use bitcoin:: key:: Secp256k1 ;
481
531
use bitcoin:: secp256k1:: { PublicKey , SecretKey } ;
482
532
483
533
let secp = Secp256k1 :: new ( ) ;
484
534
let dummy_secret_key = SecretKey :: from_slice ( & [ 1 ; 32 ] ) . unwrap ( ) ;
485
535
let payee_pub_key = PayeePubKey ( PublicKey :: from_secret_key ( & secp, & dummy_secret_key) ) ;
486
- let serialized32 = payee_pub_key. to_base32 ( ) ;
487
- assert_eq ! ( serialized32. len( ) , 53 ) ;
488
- let payee_pub_key2 = PayeePubKey :: from_base32 ( & serialized32) . unwrap ( ) ;
489
- assert_eq ! ( payee_pub_key, payee_pub_key2) ;
536
+ ser_de_test_len ( payee_pub_key, "qvdcf32k0vfxgsyet5ldt246q4jaw8scx3sysx0lnstlt6w4m5rc7" , None ) ;
490
537
}
0 commit comments