@@ -1234,7 +1234,7 @@ impl core::fmt::Display for Offer {
1234
1234
1235
1235
#[ cfg( test) ]
1236
1236
mod tests {
1237
- use super :: { Amount , ExperimentalOfferTlvStreamRef , OFFER_TYPES , Offer , OfferTlvStreamRef , Quantity } ;
1237
+ use super :: { Amount , EXPERIMENTAL_OFFER_TYPES , ExperimentalOfferTlvStreamRef , OFFER_TYPES , Offer , OfferTlvStreamRef , Quantity } ;
1238
1238
#[ cfg( not( c_bindings) ) ]
1239
1239
use {
1240
1240
super :: OfferBuilder ,
@@ -1962,6 +1962,35 @@ mod tests {
1962
1962
}
1963
1963
}
1964
1964
1965
+ #[ test]
1966
+ fn parses_offer_with_experimental_tlv_records ( ) {
1967
+ let offer = OfferBuilder :: new ( pubkey ( 42 ) ) . build ( ) . unwrap ( ) ;
1968
+
1969
+ let mut encoded_offer = Vec :: new ( ) ;
1970
+ offer. write ( & mut encoded_offer) . unwrap ( ) ;
1971
+ BigSize ( EXPERIMENTAL_OFFER_TYPES . start + 1 ) . write ( & mut encoded_offer) . unwrap ( ) ;
1972
+ BigSize ( 32 ) . write ( & mut encoded_offer) . unwrap ( ) ;
1973
+ [ 42u8 ; 32 ] . write ( & mut encoded_offer) . unwrap ( ) ;
1974
+
1975
+ match Offer :: try_from ( encoded_offer. clone ( ) ) {
1976
+ Ok ( offer) => assert_eq ! ( offer. bytes, encoded_offer) ,
1977
+ Err ( e) => panic ! ( "error parsing offer: {:?}" , e) ,
1978
+ }
1979
+
1980
+ let offer = OfferBuilder :: new ( pubkey ( 42 ) ) . build ( ) . unwrap ( ) ;
1981
+
1982
+ let mut encoded_offer = Vec :: new ( ) ;
1983
+ offer. write ( & mut encoded_offer) . unwrap ( ) ;
1984
+ BigSize ( EXPERIMENTAL_OFFER_TYPES . start ) . write ( & mut encoded_offer) . unwrap ( ) ;
1985
+ BigSize ( 32 ) . write ( & mut encoded_offer) . unwrap ( ) ;
1986
+ [ 42u8 ; 32 ] . write ( & mut encoded_offer) . unwrap ( ) ;
1987
+
1988
+ match Offer :: try_from ( encoded_offer) {
1989
+ Ok ( _) => panic ! ( "expected error" ) ,
1990
+ Err ( e) => assert_eq ! ( e, Bolt12ParseError :: Decode ( DecodeError :: UnknownRequiredFeature ) ) ,
1991
+ }
1992
+ }
1993
+
1965
1994
#[ test]
1966
1995
fn fails_parsing_offer_with_out_of_range_tlv_records ( ) {
1967
1996
let offer = OfferBuilder :: new ( pubkey ( 42 ) ) . build ( ) . unwrap ( ) ;
@@ -1976,6 +2005,19 @@ mod tests {
1976
2005
Ok ( _) => panic ! ( "expected error" ) ,
1977
2006
Err ( e) => assert_eq ! ( e, Bolt12ParseError :: Decode ( DecodeError :: InvalidValue ) ) ,
1978
2007
}
2008
+
2009
+ let offer = OfferBuilder :: new ( pubkey ( 42 ) ) . build ( ) . unwrap ( ) ;
2010
+
2011
+ let mut encoded_offer = Vec :: new ( ) ;
2012
+ offer. write ( & mut encoded_offer) . unwrap ( ) ;
2013
+ BigSize ( EXPERIMENTAL_OFFER_TYPES . end ) . write ( & mut encoded_offer) . unwrap ( ) ;
2014
+ BigSize ( 32 ) . write ( & mut encoded_offer) . unwrap ( ) ;
2015
+ [ 42u8 ; 32 ] . write ( & mut encoded_offer) . unwrap ( ) ;
2016
+
2017
+ match Offer :: try_from ( encoded_offer) {
2018
+ Ok ( _) => panic ! ( "expected error" ) ,
2019
+ Err ( e) => assert_eq ! ( e, Bolt12ParseError :: Decode ( DecodeError :: InvalidValue ) ) ,
2020
+ }
1979
2021
}
1980
2022
}
1981
2023
0 commit comments