@@ -301,27 +301,7 @@ mod sealed {
301301 set_shutdown_any_segwit_required) ;
302302
303303 #[ cfg( test) ]
304- define_context ! ( TestingContext {
305- required_features: [
306- // Byte 0
307- ,
308- // Byte 1
309- ,
310- // Byte 2
311- UnknownFeature ,
312- ] ,
313- optional_features: [
314- // Byte 0
315- ,
316- // Byte 1
317- ,
318- // Byte 2
319- ,
320- ] ,
321- } ) ;
322-
323- #[ cfg( test) ]
324- define_feature ! ( 23 , UnknownFeature , [ TestingContext ] ,
304+ define_feature ! ( 123456789 , UnknownFeature , [ NodeContext , ChannelContext , InvoiceContext ] ,
325305 "Feature flags for an unknown feature used in testing." , set_unknown_feature_optional,
326306 set_unknown_feature_required) ;
327307}
@@ -553,21 +533,6 @@ impl<T: sealed::Context> Features<T> {
553533 pub ( crate ) fn byte_count ( & self ) -> usize {
554534 self . flags . len ( )
555535 }
556-
557- #[ cfg( test) ]
558- pub ( crate ) fn set_required_unknown_bits ( & mut self ) {
559- <sealed:: TestingContext as sealed:: UnknownFeature >:: set_required_bit ( & mut self . flags ) ;
560- }
561-
562- #[ cfg( test) ]
563- pub ( crate ) fn set_optional_unknown_bits ( & mut self ) {
564- <sealed:: TestingContext as sealed:: UnknownFeature >:: set_optional_bit ( & mut self . flags ) ;
565- }
566-
567- #[ cfg( test) ]
568- pub ( crate ) fn clear_unknown_bits ( & mut self ) {
569- <sealed:: TestingContext as sealed:: UnknownFeature >:: clear_bits ( & mut self . flags ) ;
570- }
571536}
572537
573538impl < T : sealed:: DataLossProtect > Features < T > {
@@ -765,19 +730,15 @@ mod tests {
765730
766731 #[ test]
767732 fn sanity_test_unknown_bits ( ) {
768- let mut features = ChannelFeatures :: empty ( ) ;
733+ let features = ChannelFeatures :: empty ( ) ;
769734 assert ! ( !features. requires_unknown_bits( ) ) ;
770735 assert ! ( !features. supports_unknown_bits( ) ) ;
771736
772- features. set_required_unknown_bits ( ) ;
737+ let features = ChannelFeatures :: empty ( ) . set_unknown_feature_required ( ) ;
773738 assert ! ( features. requires_unknown_bits( ) ) ;
774739 assert ! ( features. supports_unknown_bits( ) ) ;
775740
776- features. clear_unknown_bits ( ) ;
777- assert ! ( !features. requires_unknown_bits( ) ) ;
778- assert ! ( !features. supports_unknown_bits( ) ) ;
779-
780- features. set_optional_unknown_bits ( ) ;
741+ let features = ChannelFeatures :: empty ( ) . set_unknown_feature_optional ( ) ;
781742 assert ! ( !features. requires_unknown_bits( ) ) ;
782743 assert ! ( features. supports_unknown_bits( ) ) ;
783744 }
@@ -813,6 +774,16 @@ mod tests {
813774 assert ! ( !init_features. supports_gossip_queries( ) ) ;
814775 }
815776
777+ #[ test]
778+ fn convert_to_context_with_unknown_flags ( ) {
779+ // Ensure the `from` context has fewer known feature bytes than the `to` context.
780+ assert ! ( InvoiceFeatures :: known( ) . byte_count( ) < NodeFeatures :: known( ) . byte_count( ) ) ;
781+ let invoice_features = InvoiceFeatures :: known ( ) . set_unknown_feature_optional ( ) ;
782+ assert ! ( invoice_features. supports_unknown_bits( ) ) ;
783+ let node_features: NodeFeatures = invoice_features. to_context ( ) ;
784+ assert ! ( !node_features. supports_unknown_bits( ) ) ;
785+ }
786+
816787 #[ test]
817788 fn set_feature_bits ( ) {
818789 let features = InvoiceFeatures :: empty ( )
0 commit comments