4 fn test_insert_and_iter() {
5 let mut map = SortedMap::new();
6 let mut expected = Vec::new();
9 assert_eq!(map.iter().cloned().collect::<Vec<_>>(), expected);
13 expected.insert(0, (x, x));
18 fn test_get_and_index() {
19 let mut map = SortedMap::new();
20 let mut expected = Vec::new();
30 for mut x in expected {
32 assert_eq!(map.get(&x), Some(&x));
33 assert_eq!(map.get_mut(&x), Some(&mut x));
34 assert_eq!(map[&x], x);
35 assert_eq!(&mut map[&x], &mut x);
37 assert_eq!(map.get(&x), None);
38 assert_eq!(map.get_mut(&x), None);
45 let mut map = SortedMap::new();
51 let keys = |s: &[(_, _)]| s.into_iter().map(|e| e.0).collect::<Vec<u32>>();
59 let mut expected = vec![1, 3, 6, 9];
60 expected.retain(|&x| x >= start && x < end);
62 assert_eq!(keys(map.range(start..end)), expected, "range = {}..{}", start, end);
68 fn test_offset_keys() {
69 let mut map = SortedMap::new();
74 map.offset_keys(|k| *k += 1);
76 let mut expected = SortedMap::new();
77 expected.insert(2, 1);
78 expected.insert(4, 3);
79 expected.insert(7, 6);
81 assert_eq!(map, expected);
84 fn keys(s: SortedMap<u32, u32>) -> Vec<u32> {
85 s.into_iter().map(|(k, _)| k).collect::<Vec<u32>>()
88 fn elements(s: SortedMap<u32, u32>) -> Vec<(u32, u32)> {
89 s.into_iter().collect::<Vec<(u32, u32)>>()
93 fn test_remove_range() {
94 let mut map = SortedMap::new();
106 let mut expected = vec![1, 3, 6, 9];
107 expected.retain(|&x| x < start || x >= end);
109 let mut map = map.clone();
110 map.remove_range(start..end);
112 assert_eq!(keys(map), expected, "range = {}..{}", start, end);
119 let mut map = SortedMap::new();
120 let mut expected = Vec::new();
124 expected.push((x, x));
128 let mut map = map.clone();
129 let mut expected = expected.clone();
131 assert_eq!(map.remove(&x), Some(x));
132 expected.remove(x as usize);
134 assert_eq!(map.iter().cloned().collect::<Vec<_>>(), expected);
139 fn test_insert_presorted_non_overlapping() {
140 let mut map = SortedMap::new();
144 map.insert_presorted(vec![(3, 0), (7, 0)]);
146 let expected = vec![2, 3, 7, 8];
147 assert_eq!(keys(map), expected);
151 fn test_insert_presorted_first_elem_equal() {
152 let mut map = SortedMap::new();
156 map.insert_presorted(vec![(2, 0), (7, 7)]);
158 let expected = vec![(2, 0), (7, 7), (8, 8)];
159 assert_eq!(elements(map), expected);
163 fn test_insert_presorted_last_elem_equal() {
164 let mut map = SortedMap::new();
168 map.insert_presorted(vec![(3, 3), (8, 0)]);
170 let expected = vec![(2, 2), (3, 3), (8, 0)];
171 assert_eq!(elements(map), expected);
175 fn test_insert_presorted_shuffle() {
176 let mut map = SortedMap::new();
180 map.insert_presorted(vec![(1, 1), (3, 3), (8, 8)]);
182 let expected = vec![(1, 1), (2, 2), (3, 3), (7, 7), (8, 8)];
183 assert_eq!(elements(map), expected);
187 fn test_insert_presorted_at_end() {
188 let mut map = SortedMap::new();
192 map.insert_presorted(vec![(3, 3), (8, 8)]);
194 let expected = vec![(1, 1), (2, 2), (3, 3), (8, 8)];
195 assert_eq!(elements(map), expected);