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: &[(_, _)]| {
52 s.into_iter().map(|e| e.0).collect::<Vec<u32>>()
55 for start in 0 .. 11 {
61 let mut expected = vec![1, 3, 6, 9];
62 expected.retain(|&x| x >= start && x < end);
64 assert_eq!(keys(map.range(start..end)), expected, "range = {}..{}", start, end);
71 fn test_offset_keys() {
72 let mut map = SortedMap::new();
77 map.offset_keys(|k| *k += 1);
79 let mut expected = SortedMap::new();
80 expected.insert(2, 1);
81 expected.insert(4, 3);
82 expected.insert(7, 6);
84 assert_eq!(map, expected);
87 fn keys(s: SortedMap<u32, u32>) -> Vec<u32> {
88 s.into_iter().map(|(k, _)| k).collect::<Vec<u32>>()
91 fn elements(s: SortedMap<u32, u32>) -> Vec<(u32, u32)> {
92 s.into_iter().collect::<Vec<(u32, u32)>>()
96 fn test_remove_range() {
97 let mut map = SortedMap::new();
103 for start in 0 .. 11 {
109 let mut expected = vec![1, 3, 6, 9];
110 expected.retain(|&x| x < start || x >= end);
112 let mut map = map.clone();
113 map.remove_range(start .. end);
115 assert_eq!(keys(map), expected, "range = {}..{}", start, end);
122 let mut map = SortedMap::new();
123 let mut expected = Vec::new();
127 expected.push((x, x));
131 let mut map = map.clone();
132 let mut expected = expected.clone();
134 assert_eq!(map.remove(&x), Some(x));
135 expected.remove(x as usize);
137 assert_eq!(map.iter().cloned().collect::<Vec<_>>(), expected);
142 fn test_insert_presorted_non_overlapping() {
143 let mut map = SortedMap::new();
147 map.insert_presorted(vec![(3, 0), (7, 0)]);
149 let expected = vec![2, 3, 7, 8];
150 assert_eq!(keys(map), expected);
154 fn test_insert_presorted_first_elem_equal() {
155 let mut map = SortedMap::new();
159 map.insert_presorted(vec![(2, 0), (7, 7)]);
161 let expected = vec![(2, 0), (7, 7), (8, 8)];
162 assert_eq!(elements(map), expected);
166 fn test_insert_presorted_last_elem_equal() {
167 let mut map = SortedMap::new();
171 map.insert_presorted(vec![(3, 3), (8, 0)]);
173 let expected = vec![(2, 2), (3, 3), (8, 0)];
174 assert_eq!(elements(map), expected);
178 fn test_insert_presorted_shuffle() {
179 let mut map = SortedMap::new();
183 map.insert_presorted(vec![(1, 1), (3, 3), (8, 8)]);
185 let expected = vec![(1, 1), (2, 2), (3, 3), (7, 7), (8, 8)];
186 assert_eq!(elements(map), expected);
190 fn test_insert_presorted_at_end() {
191 let mut map = SortedMap::new();
195 map.insert_presorted(vec![(3, 3), (8, 8)]);
197 let expected = vec![(1, 1), (2, 2), (3, 3), (8, 8)];
198 assert_eq!(elements(map), expected);