@@ -1228,7 +1228,7 @@ impl core::fmt::Display for Offer {
1228
1228
1229
1229
#[ cfg( test) ]
1230
1230
mod tests {
1231
- use super :: { Amount , ExperimentalOfferTlvStreamRef , OFFER_TYPES , Offer , OfferTlvStreamRef , Quantity } ;
1231
+ use super :: { Amount , EXPERIMENTAL_OFFER_TYPES , ExperimentalOfferTlvStreamRef , OFFER_TYPES , Offer , OfferTlvStreamRef , Quantity } ;
1232
1232
#[ cfg( not( c_bindings) ) ]
1233
1233
use {
1234
1234
super :: OfferBuilder ,
@@ -1955,6 +1955,34 @@ mod tests {
1955
1955
}
1956
1956
}
1957
1957
1958
+ #[ test]
1959
+ fn parses_offer_with_experimental_tlv_records ( ) {
1960
+ let offer = OfferBuilder :: new ( pubkey ( 42 ) ) . build ( ) . unwrap ( ) ;
1961
+
1962
+ let mut encoded_offer = Vec :: new ( ) ;
1963
+ offer. write ( & mut encoded_offer) . unwrap ( ) ;
1964
+ BigSize ( EXPERIMENTAL_OFFER_TYPES . start + 1 ) . write ( & mut encoded_offer) . unwrap ( ) ;
1965
+ BigSize ( 32 ) . write ( & mut encoded_offer) . unwrap ( ) ;
1966
+ [ 42u8 ; 32 ] . write ( & mut encoded_offer) . unwrap ( ) ;
1967
+
1968
+ if let Err ( e) = Offer :: try_from ( encoded_offer) {
1969
+ panic ! ( "error parsing offer: {:?}" , e) ;
1970
+ }
1971
+
1972
+ let offer = OfferBuilder :: new ( pubkey ( 42 ) ) . build ( ) . unwrap ( ) ;
1973
+
1974
+ let mut encoded_offer = Vec :: new ( ) ;
1975
+ offer. write ( & mut encoded_offer) . unwrap ( ) ;
1976
+ BigSize ( EXPERIMENTAL_OFFER_TYPES . start ) . write ( & mut encoded_offer) . unwrap ( ) ;
1977
+ BigSize ( 32 ) . write ( & mut encoded_offer) . unwrap ( ) ;
1978
+ [ 42u8 ; 32 ] . write ( & mut encoded_offer) . unwrap ( ) ;
1979
+
1980
+ match Offer :: try_from ( encoded_offer) {
1981
+ Ok ( _) => panic ! ( "expected error" ) ,
1982
+ Err ( e) => assert_eq ! ( e, Bolt12ParseError :: Decode ( DecodeError :: UnknownRequiredFeature ) ) ,
1983
+ }
1984
+ }
1985
+
1958
1986
#[ test]
1959
1987
fn fails_parsing_offer_with_out_of_range_tlv_records ( ) {
1960
1988
let offer = OfferBuilder :: new ( pubkey ( 42 ) ) . build ( ) . unwrap ( ) ;
@@ -1969,6 +1997,19 @@ mod tests {
1969
1997
Ok ( _) => panic ! ( "expected error" ) ,
1970
1998
Err ( e) => assert_eq ! ( e, Bolt12ParseError :: Decode ( DecodeError :: InvalidValue ) ) ,
1971
1999
}
2000
+
2001
+ let offer = OfferBuilder :: new ( pubkey ( 42 ) ) . build ( ) . unwrap ( ) ;
2002
+
2003
+ let mut encoded_offer = Vec :: new ( ) ;
2004
+ offer. write ( & mut encoded_offer) . unwrap ( ) ;
2005
+ BigSize ( EXPERIMENTAL_OFFER_TYPES . end ) . write ( & mut encoded_offer) . unwrap ( ) ;
2006
+ BigSize ( 32 ) . write ( & mut encoded_offer) . unwrap ( ) ;
2007
+ [ 42u8 ; 32 ] . write ( & mut encoded_offer) . unwrap ( ) ;
2008
+
2009
+ match Offer :: try_from ( encoded_offer) {
2010
+ Ok ( _) => panic ! ( "expected error" ) ,
2011
+ Err ( e) => assert_eq ! ( e, Bolt12ParseError :: Decode ( DecodeError :: InvalidValue ) ) ,
2012
+ }
1972
2013
}
1973
2014
}
1974
2015
0 commit comments