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