@@ -241,6 +241,8 @@ macro_rules! invoice_request_builder_methods { (
241241 InvoiceRequestContentsWithoutPayerSigningPubkey {
242242 payer: PayerContents ( metadata) , offer, chain: None , amount_msats: None ,
243243 features: InvoiceRequestFeatures :: empty( ) , quantity: None , payer_note: None ,
244+ #[ cfg( test) ]
245+ experimental_bar: None ,
244246 }
245247 }
246248
@@ -404,6 +406,12 @@ macro_rules! invoice_request_builder_test_methods { (
404406 $return_value
405407 }
406408
409+ #[ cfg_attr( c_bindings, allow( dead_code) ) ]
410+ pub ( super ) fn experimental_bar( $( $self_mut) * $self: $self_type, experimental_bar: u64 ) -> $return_type {
411+ $self. invoice_request. experimental_bar = Some ( experimental_bar) ;
412+ $return_value
413+ }
414+
407415 #[ cfg_attr( c_bindings, allow( dead_code) ) ]
408416 pub ( super ) fn build_unchecked( $self: $self_type) -> UnsignedInvoiceRequest {
409417 $self. build_without_checks( ) . 0
@@ -691,6 +699,8 @@ pub(super) struct InvoiceRequestContentsWithoutPayerSigningPubkey {
691699 features : InvoiceRequestFeatures ,
692700 quantity : Option < u64 > ,
693701 payer_note : Option < String > ,
702+ #[ cfg( test) ]
703+ experimental_bar : Option < u64 > ,
694704}
695705
696706macro_rules! invoice_request_accessors { ( $self: ident, $contents: expr) => {
@@ -994,7 +1004,9 @@ impl VerifiedInvoiceRequest {
9941004 let InvoiceRequestContents {
9951005 payer_signing_pubkey,
9961006 inner : InvoiceRequestContentsWithoutPayerSigningPubkey {
997- payer : _, offer : _, chain : _, amount_msats : _, features : _, quantity, payer_note
1007+ payer : _, offer : _, chain : _, amount_msats : _, features : _, quantity, payer_note,
1008+ #[ cfg( test) ]
1009+ experimental_bar : _,
9981010 } ,
9991011 } = & self . inner . contents ;
10001012
@@ -1076,7 +1088,10 @@ impl InvoiceRequestContentsWithoutPayerSigningPubkey {
10761088 paths : None ,
10771089 } ;
10781090
1079- let experimental_invoice_request = ExperimentalInvoiceRequestTlvStreamRef { } ;
1091+ let experimental_invoice_request = ExperimentalInvoiceRequestTlvStreamRef {
1092+ #[ cfg( test) ]
1093+ experimental_bar : self . experimental_bar ,
1094+ } ;
10801095
10811096 ( payer, offer, invoice_request, experimental_offer, experimental_invoice_request)
10821097 }
@@ -1133,11 +1148,20 @@ tlv_stream!(InvoiceRequestTlvStream, InvoiceRequestTlvStreamRef<'a>, INVOICE_REQ
11331148pub ( super ) const EXPERIMENTAL_INVOICE_REQUEST_TYPES : core:: ops:: Range < u64 > =
11341149 2_000_000_000 ..3_000_000_000 ;
11351150
1151+ #[ cfg( not( test) ) ]
11361152tlv_stream ! (
11371153 ExperimentalInvoiceRequestTlvStream , ExperimentalInvoiceRequestTlvStreamRef ,
11381154 EXPERIMENTAL_INVOICE_REQUEST_TYPES , { }
11391155) ;
11401156
1157+ #[ cfg( test) ]
1158+ tlv_stream ! (
1159+ ExperimentalInvoiceRequestTlvStream , ExperimentalInvoiceRequestTlvStreamRef ,
1160+ EXPERIMENTAL_INVOICE_REQUEST_TYPES , {
1161+ ( 2_999_999_999 , experimental_bar: ( u64 , HighZeroBytesDroppedBigSize ) ) ,
1162+ }
1163+ ) ;
1164+
11411165type FullInvoiceRequestTlvStream = (
11421166 PayerTlvStream , OfferTlvStream , InvoiceRequestTlvStream , SignatureTlvStream ,
11431167 ExperimentalOfferTlvStream , ExperimentalInvoiceRequestTlvStream ,
@@ -1244,7 +1268,10 @@ impl TryFrom<PartialInvoiceRequestTlvStream> for InvoiceRequestContents {
12441268 chain, amount, features, quantity, payer_id, payer_note, paths,
12451269 } ,
12461270 experimental_offer_tlv_stream,
1247- ExperimentalInvoiceRequestTlvStream { } ,
1271+ ExperimentalInvoiceRequestTlvStream {
1272+ #[ cfg( test) ]
1273+ experimental_bar,
1274+ } ,
12481275 ) = tlv_stream;
12491276
12501277 let payer = match metadata {
@@ -1278,6 +1305,8 @@ impl TryFrom<PartialInvoiceRequestTlvStream> for InvoiceRequestContents {
12781305 Ok ( InvoiceRequestContents {
12791306 inner : InvoiceRequestContentsWithoutPayerSigningPubkey {
12801307 payer, offer, chain, amount_msats : amount, features, quantity, payer_note,
1308+ #[ cfg( test) ]
1309+ experimental_bar,
12811310 } ,
12821311 payer_signing_pubkey,
12831312 } )
@@ -1460,7 +1489,9 @@ mod tests {
14601489 ExperimentalOfferTlvStreamRef {
14611490 experimental_foo: None ,
14621491 } ,
1463- ExperimentalInvoiceRequestTlvStreamRef { } ,
1492+ ExperimentalInvoiceRequestTlvStreamRef {
1493+ experimental_bar: None ,
1494+ } ,
14641495 ) ,
14651496 ) ;
14661497
@@ -1513,6 +1544,7 @@ mod tests {
15131544 let invoice_request = offer
15141545 . request_invoice_deriving_metadata ( signing_pubkey, & expanded_key, nonce, payment_id)
15151546 . unwrap ( )
1547+ . experimental_bar ( 42 )
15161548 . build ( ) . unwrap ( )
15171549 . sign ( payer_sign) . unwrap ( ) ;
15181550 assert_eq ! ( invoice_request. payer_signing_pubkey( ) , payer_pubkey( ) ) ;
@@ -1603,6 +1635,7 @@ mod tests {
16031635 let invoice_request = offer
16041636 . request_invoice_deriving_signing_pubkey ( & expanded_key, nonce, & secp_ctx, payment_id)
16051637 . unwrap ( )
1638+ . experimental_bar ( 42 )
16061639 . build_and_sign ( )
16071640 . unwrap ( ) ;
16081641
0 commit comments