Skip to content

Commit 1f1d7c6

Browse files
authored
Merge pull request #1003 from jkczyz/2021-known-features-mask
Expand tests for Features::to_context
2 parents ccd7b6c + 8723348 commit 1f1d7c6

File tree

2 files changed

+15
-45
lines changed

2 files changed

+15
-45
lines changed

lightning/src/ln/features.rs

Lines changed: 14 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -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

573538
impl<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()

lightning/src/routing/router.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1992,8 +1992,7 @@ mod tests {
19921992
let (_, our_id, privkeys, nodes) = get_nodes(&secp_ctx);
19931993

19941994
// Disable nodes 1, 2, and 8 by requiring unknown feature bits
1995-
let mut unknown_features = NodeFeatures::known();
1996-
unknown_features.set_required_unknown_bits();
1995+
let unknown_features = NodeFeatures::known().set_unknown_feature_required();
19971996
add_or_update_node(&net_graph_msg_handler, &secp_ctx, &privkeys[0], unknown_features.clone(), 1);
19981997
add_or_update_node(&net_graph_msg_handler, &secp_ctx, &privkeys[1], unknown_features.clone(), 1);
19991998
add_or_update_node(&net_graph_msg_handler, &secp_ctx, &privkeys[7], unknown_features.clone(), 1);

0 commit comments

Comments
 (0)