Skip to content

Commit 9362766

Browse files
committed
f test feature flags transitions
1 parent 552cdf4 commit 9362766

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

lightning-types/src/features.rs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1464,4 +1464,27 @@ mod tests {
14641464
empty_features.hash(&mut empty_hash);
14651465
assert_eq!(zerod_hash.finish(), empty_hash.finish());
14661466
}
1467+
1468+
#[test]
1469+
fn test_feature_flags_transitions() {
1470+
// Tests transitions from stack to heap and back in `FeatureFlags`
1471+
let mut flags = FeatureFlags::empty();
1472+
assert!(matches!(flags, FeatureFlags::Held { .. }));
1473+
1474+
flags.resize(DIRECT_ALLOC_BYTES, 42);
1475+
assert_eq!(flags.len(), DIRECT_ALLOC_BYTES);
1476+
assert!(flags.iter().take(DIRECT_ALLOC_BYTES).all(|b| *b == 42));
1477+
assert!(matches!(flags, FeatureFlags::Held { .. }));
1478+
1479+
flags.resize(DIRECT_ALLOC_BYTES * 2, 43);
1480+
assert_eq!(flags.len(), DIRECT_ALLOC_BYTES * 2);
1481+
assert!(flags.iter().take(DIRECT_ALLOC_BYTES).all(|b| *b == 42));
1482+
assert!(flags.iter().skip(DIRECT_ALLOC_BYTES).all(|b| *b == 43));
1483+
assert!(matches!(flags, FeatureFlags::Heap(_)));
1484+
1485+
flags.resize(DIRECT_ALLOC_BYTES, 0);
1486+
assert_eq!(flags.len(), DIRECT_ALLOC_BYTES);
1487+
assert!(flags.iter().take(DIRECT_ALLOC_BYTES).all(|b| *b == 42));
1488+
assert!(matches!(flags, FeatureFlags::Held { .. }));
1489+
}
14671490
}

0 commit comments

Comments
 (0)