@@ -475,16 +475,63 @@ fn invoice_features_encoding() {
475475 assert_eq ! ( features, features_deserialized) ;
476476}
477477
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+
478528#[ test]
479- fn payeepubkey_ser_de ( ) {
529+ fn payeepubkey ( ) {
480530 use bitcoin:: key:: Secp256k1 ;
481531 use bitcoin:: secp256k1:: { PublicKey , SecretKey } ;
482532
483533 let secp = Secp256k1 :: new ( ) ;
484534 let dummy_secret_key = SecretKey :: from_slice ( & [ 1 ; 32 ] ) . unwrap ( ) ;
485535 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 ) ;
490537}
0 commit comments