X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Flibrustc_data_structures%2Fsorted_map%2Ftests.rs;h=7d91e1fdcef6a3f1db929218752e9a8cfa316416;hb=6fc73bc10a72d0e4475f8ab60e9902bddc03c1f6;hp=f970409cc3d587ae2953effbbf55cb5c219d9194;hpb=2d3d0b7e934509327a757f467b89f1059a1f45c1;p=rust.git diff --git a/src/librustc_data_structures/sorted_map/tests.rs b/src/librustc_data_structures/sorted_map/tests.rs index f970409cc3d..7d91e1fdcef 100644 --- a/src/librustc_data_structures/sorted_map/tests.rs +++ b/src/librustc_data_structures/sorted_map/tests.rs @@ -1,11 +1,37 @@ -use super::SortedMap; +use super::{SortedIndexMultiMap, SortedMap}; + +#[test] +fn test_sorted_index_multi_map() { + let entries: Vec<_> = vec![(2, 0), (1, 0), (2, 1), (3, 0), (2, 2)]; + let set: SortedIndexMultiMap = entries.iter().copied().collect(); + + // Insertion order is preserved. + assert!(entries.iter().map(|(ref k, ref v)| (k, v)).eq(set.iter())); + + // Indexing + for (i, expect) in entries.iter().enumerate() { + assert_eq!(set[i], expect.1); + } + + // `get_by_key` works. + assert_eq!(set.get_by_key(&3).copied().collect::>(), vec![0]); + assert!(set.get_by_key(&4).next().is_none()); + + // `get_by_key` returns items in insertion order. + let twos: Vec<_> = set.get_by_key_enumerated(&2).collect(); + let idxs: Vec = twos.iter().map(|(i, _)| *i).collect(); + let values: Vec = twos.iter().map(|(_, &v)| v).collect(); + + assert_eq!(idxs, vec![0, 2, 4]); + assert_eq!(values, vec![0, 1, 2]); +} #[test] fn test_insert_and_iter() { let mut map = SortedMap::new(); let mut expected = Vec::new(); - for x in 0 .. 100 { + for x in 0..100 { assert_eq!(map.iter().cloned().collect::>(), expected); let x = 1000 - x * 2; @@ -19,7 +45,7 @@ fn test_get_and_index() { let mut map = SortedMap::new(); let mut expected = Vec::new(); - for x in 0 .. 100 { + for x in 0..100 { let x = 1000 - x; if x & 1 == 0 { map.insert(x, x); @@ -48,14 +74,12 @@ fn test_range() { map.insert(6, 6); map.insert(9, 9); - let keys = |s: &[(_, _)]| { - s.into_iter().map(|e| e.0).collect::>() - }; + let keys = |s: &[(_, _)]| s.into_iter().map(|e| e.0).collect::>(); - for start in 0 .. 11 { - for end in 0 .. 11 { + for start in 0..11 { + for end in 0..11 { if end < start { - continue + continue; } let mut expected = vec![1, 3, 6, 9]; @@ -66,7 +90,6 @@ fn test_range() { } } - #[test] fn test_offset_keys() { let mut map = SortedMap::new(); @@ -100,17 +123,17 @@ fn test_remove_range() { map.insert(6, 6); map.insert(9, 9); - for start in 0 .. 11 { - for end in 0 .. 11 { + for start in 0..11 { + for end in 0..11 { if end < start { - continue + continue; } let mut expected = vec![1, 3, 6, 9]; expected.retain(|&x| x < start || x >= end); let mut map = map.clone(); - map.remove_range(start .. end); + map.remove_range(start..end); assert_eq!(keys(map), expected, "range = {}..{}", start, end); } @@ -127,7 +150,7 @@ fn test_remove() { expected.push((x, x)); } - for x in 0 .. 10 { + for x in 0..10 { let mut map = map.clone(); let mut expected = expected.clone();