@@ -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 ,
@@ -1960,6 +1960,34 @@ mod tests {
1960
1960
}
1961
1961
}
1962
1962
1963
+ #[ test]
1964
+ fn parses_offer_with_experimental_tlv_records ( ) {
1965
+ let offer = OfferBuilder :: new ( pubkey ( 42 ) ) . build ( ) . unwrap ( ) ;
1966
+
1967
+ let mut encoded_offer = Vec :: new ( ) ;
1968
+ offer. write ( & mut encoded_offer) . unwrap ( ) ;
1969
+ BigSize ( EXPERIMENTAL_OFFER_TYPES . start + 1 ) . write ( & mut encoded_offer) . unwrap ( ) ;
1970
+ BigSize ( 32 ) . write ( & mut encoded_offer) . unwrap ( ) ;
1971
+ [ 42u8 ; 32 ] . write ( & mut encoded_offer) . unwrap ( ) ;
1972
+
1973
+ if let Err ( e) = Offer :: try_from ( encoded_offer) {
1974
+ panic ! ( "error parsing offer: {:?}" , e) ;
1975
+ }
1976
+
1977
+ let offer = OfferBuilder :: new ( pubkey ( 42 ) ) . build ( ) . unwrap ( ) ;
1978
+
1979
+ let mut encoded_offer = Vec :: new ( ) ;
1980
+ offer. write ( & mut encoded_offer) . unwrap ( ) ;
1981
+ BigSize ( EXPERIMENTAL_OFFER_TYPES . start ) . write ( & mut encoded_offer) . unwrap ( ) ;
1982
+ BigSize ( 32 ) . write ( & mut encoded_offer) . unwrap ( ) ;
1983
+ [ 42u8 ; 32 ] . write ( & mut encoded_offer) . unwrap ( ) ;
1984
+
1985
+ match Offer :: try_from ( encoded_offer) {
1986
+ Ok ( _) => panic ! ( "expected error" ) ,
1987
+ Err ( e) => assert_eq ! ( e, Bolt12ParseError :: Decode ( DecodeError :: UnknownRequiredFeature ) ) ,
1988
+ }
1989
+ }
1990
+
1963
1991
#[ test]
1964
1992
fn fails_parsing_offer_with_out_of_range_tlv_records ( ) {
1965
1993
let offer = OfferBuilder :: new ( pubkey ( 42 ) ) . build ( ) . unwrap ( ) ;
@@ -1974,6 +2002,19 @@ mod tests {
1974
2002
Ok ( _) => panic ! ( "expected error" ) ,
1975
2003
Err ( e) => assert_eq ! ( e, Bolt12ParseError :: Decode ( DecodeError :: InvalidValue ) ) ,
1976
2004
}
2005
+
2006
+ let offer = OfferBuilder :: new ( pubkey ( 42 ) ) . build ( ) . unwrap ( ) ;
2007
+
2008
+ let mut encoded_offer = Vec :: new ( ) ;
2009
+ offer. write ( & mut encoded_offer) . unwrap ( ) ;
2010
+ BigSize ( EXPERIMENTAL_OFFER_TYPES . end ) . write ( & mut encoded_offer) . unwrap ( ) ;
2011
+ BigSize ( 32 ) . write ( & mut encoded_offer) . unwrap ( ) ;
2012
+ [ 42u8 ; 32 ] . write ( & mut encoded_offer) . unwrap ( ) ;
2013
+
2014
+ match Offer :: try_from ( encoded_offer) {
2015
+ Ok ( _) => panic ! ( "expected error" ) ,
2016
+ Err ( e) => assert_eq ! ( e, Bolt12ParseError :: Decode ( DecodeError :: InvalidValue ) ) ,
2017
+ }
1977
2018
}
1978
2019
}
1979
2020
0 commit comments