4 fn insert_collapses() {
5 let mut set = IntervalSet::<u32>::new(10000);
6 set.insert_range(9831..=9837);
7 set.insert_range(43..=9830);
8 assert_eq!(set.iter_intervals().collect::<Vec<_>>(), [43..9838]);
13 let mut set = IntervalSet::new(300);
15 assert!(set.contains(0));
16 set.insert_range(0..10);
17 assert!(set.contains(9));
18 assert!(!set.contains(10));
19 set.insert_range(10..11);
20 assert!(set.contains(10));
26 let mut set = IntervalSet::new(300);
30 assert!(set.contains(k));
35 let mut set = IntervalSet::new(300);
36 set.insert_range(0..1u32);
37 assert!(set.contains(0), "{:?}", set.map);
38 assert!(!set.contains(1));
39 set.insert_range(1..1);
40 assert!(set.contains(0));
41 assert!(!set.contains(1));
43 let mut set = IntervalSet::new(300);
44 set.insert_range(4..5u32);
45 set.insert_range(5..10);
46 assert_eq!(set.iter().collect::<Vec<_>>(), [4, 5, 6, 7, 8, 9]);
47 set.insert_range(3..7);
48 assert_eq!(set.iter().collect::<Vec<_>>(), [3, 4, 5, 6, 7, 8, 9]);
50 let mut set = IntervalSet::new(300);
51 set.insert_range(0..10u32);
52 set.insert_range(3..5);
53 assert_eq!(set.iter().collect::<Vec<_>>(), [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]);
55 let mut set = IntervalSet::new(300);
56 set.insert_range(0..10u32);
57 set.insert_range(0..3);
58 assert_eq!(set.iter().collect::<Vec<_>>(), [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]);
60 let mut set = IntervalSet::new(300);
61 set.insert_range(0..10u32);
62 set.insert_range(0..10);
63 assert_eq!(set.iter().collect::<Vec<_>>(), [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]);
65 let mut set = IntervalSet::new(300);
66 set.insert_range(0..10u32);
67 set.insert_range(5..10);
68 assert_eq!(set.iter().collect::<Vec<_>>(), [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]);
70 let mut set = IntervalSet::new(300);
71 set.insert_range(0..10u32);
72 set.insert_range(5..13);
73 assert_eq!(set.iter().collect::<Vec<_>>(), [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]);
81 R: RangeBounds<usize> + Clone + IntoIterator<Item = usize> + std::fmt::Debug,
83 let mut set = IntervalSet::new(300);
84 set.insert_range(range.clone());
86 assert!(range.contains(&i));
88 for i in range.clone() {
89 assert!(set.contains(i), "A: {} in {:?}, inserted {:?}", i, set, range);
91 set.insert_range(range.clone());
93 assert!(range.contains(&i), "{} in {:?}", i, set);
95 for i in range.clone() {
96 assert!(set.contains(i), "B: {} in {:?}, inserted {:?}", i, set, range);
122 fn insert_range_dual() {
123 let mut set = IntervalSet::<u32>::new(300);
124 set.insert_range(0..3);
125 assert_eq!(set.iter().collect::<Vec<_>>(), [0, 1, 2]);
126 set.insert_range(5..7);
127 assert_eq!(set.iter().collect::<Vec<_>>(), [0, 1, 2, 5, 6]);
128 set.insert_range(3..4);
129 assert_eq!(set.iter().collect::<Vec<_>>(), [0, 1, 2, 3, 5, 6]);
130 set.insert_range(3..5);
131 assert_eq!(set.iter().collect::<Vec<_>>(), [0, 1, 2, 3, 4, 5, 6]);
135 fn last_set_before_adjacent() {
136 let mut set = IntervalSet::<u32>::new(300);
137 set.insert_range(0..3);
138 set.insert_range(3..5);
139 assert_eq!(set.last_set_in(0..3), Some(2));
140 assert_eq!(set.last_set_in(0..5), Some(4));
141 assert_eq!(set.last_set_in(3..5), Some(4));
142 set.insert_range(2..5);
143 assert_eq!(set.last_set_in(0..3), Some(2));
144 assert_eq!(set.last_set_in(0..5), Some(4));
145 assert_eq!(set.last_set_in(3..5), Some(4));
150 fn easy(set: &IntervalSet<usize>, needle: impl RangeBounds<usize>) -> Option<usize> {
151 let mut last_leq = None;
152 for e in set.iter() {
153 if needle.contains(&e) {
161 fn cmp(set: &IntervalSet<usize>, needle: impl RangeBounds<usize> + Clone + std::fmt::Debug) {
163 set.last_set_in(needle.clone()),
164 easy(set, needle.clone()),
170 let mut set = IntervalSet::new(300);
175 cmp(&set, 0..=64 - 1);
186 let mut set = IntervalSet::new(100);