diff --git a/src/compiler/rust/bitset.rs b/src/compiler/rust/bitset.rs index dd422f9c92d..af6191f274d 100644 --- a/src/compiler/rust/bitset.rs +++ b/src/compiler/rust/bitset.rs @@ -252,3 +252,50 @@ impl<'a> Iterator for BitSetIter<'a> { None } } + +#[cfg(test)] +mod tests { + use super::*; + + fn to_vec(set: &BitSet) -> Vec { + set.iter().collect() + } + + #[test] + fn test_basic() { + let mut set = BitSet::new(); + + assert_eq!(to_vec(&set), &[]); + assert!(set.is_empty()); + + set.insert(0); + + assert_eq!(to_vec(&set), &[0]); + + set.insert(73); + set.insert(1); + + assert_eq!(to_vec(&set), &[0, 1, 73]); + assert!(!set.is_empty()); + + assert!(set.get(73)); + assert!(!set.get(197)); + + assert!(set.remove(1)); + assert!(!set.remove(7)); + + let mut set2 = set.clone(); + assert_eq!(to_vec(&set), &[0, 73]); + assert!(!set.is_empty()); + + assert!(set.remove(0)); + assert!(set.remove(73)); + assert!(set.is_empty()); + + set.clear(); + assert!(set.is_empty()); + + set2.clear(); + assert!(set2.is_empty()); + } +}