diff options
| author | Keita Nonaka <iKonnyaku40@gmail.com> | 2022-04-14 23:40:05 -0700 |
|---|---|---|
| committer | Keita Nonaka <iKonnyaku40@gmail.com> | 2022-04-14 23:40:05 -0700 |
| commit | 4117e8c2d328a7615c2dc294d939b610d4e22dca (patch) | |
| tree | 6df73699f32e7142deb431516d95fae55c9fe0fb /library/alloc/src/collections | |
| parent | f387c930ee7c84357f8fa9f4c38903c00404ac46 (diff) | |
| download | rust-4117e8c2d328a7615c2dc294d939b610d4e22dca.tar.gz rust-4117e8c2d328a7615c2dc294d939b610d4e22dca.zip | |
test: add pop_first() pop_last() test cases for BTreeSet
Diffstat (limited to 'library/alloc/src/collections')
| -rw-r--r-- | library/alloc/src/collections/btree/map/tests.rs | 86 |
1 files changed, 77 insertions, 9 deletions
diff --git a/library/alloc/src/collections/btree/map/tests.rs b/library/alloc/src/collections/btree/map/tests.rs index cc986e93698..acc49799a73 100644 --- a/library/alloc/src/collections/btree/map/tests.rs +++ b/library/alloc/src/collections/btree/map/tests.rs @@ -791,7 +791,11 @@ fn test_range_finding_ill_order_in_range_ord() { impl Ord for EvilTwin { fn cmp(&self, other: &Self) -> Ordering { let ord = self.0.cmp(&other.0); - if COMPARES.fetch_add(1, SeqCst) > 0 { ord.reverse() } else { ord } + if COMPARES.fetch_add(1, SeqCst) > 0 { + ord.reverse() + } else { + ord + } } } @@ -943,13 +947,12 @@ mod test_drain_filter { fn mutating_and_keeping() { let pairs = (0..3).map(|i| (i, i)); let mut map = BTreeMap::from_iter(pairs); - assert!( - map.drain_filter(|_, v| { + assert!(map + .drain_filter(|_, v| { *v += 6; false }) - .eq(iter::empty()) - ); + .eq(iter::empty())); assert!(map.keys().copied().eq(0..3)); assert!(map.values().copied().eq(6..9)); map.check(); @@ -960,13 +963,12 @@ mod test_drain_filter { fn mutating_and_removing() { let pairs = (0..3).map(|i| (i, i)); let mut map = BTreeMap::from_iter(pairs); - assert!( - map.drain_filter(|_, v| { + assert!(map + .drain_filter(|_, v| { *v += 6; true }) - .eq((0..3).map(|i| (i, i + 6))) - ); + .eq((0..3).map(|i| (i, i + 6)))); assert!(map.is_empty()); map.check(); } @@ -1879,6 +1881,72 @@ fn test_first_last_entry() { } #[test] +fn test_pop_first_last() { + let mut map = BTreeMap::new(); + assert_eq!(map.pop_first(), None); + assert_eq!(map.pop_last(), None); + + map.insert(1, 10); + map.insert(2, 20); + map.insert(3, 30); + map.insert(4, 40); + + assert_eq!(map.len(), 4); + + let (key, val) = map.pop_first().unwrap(); + assert_eq!(key, 1); + assert_eq!(val, 10); + assert_eq!(map.len(), 3); + + let (key, val) = map.pop_first().unwrap(); + assert_eq!(key, 2); + assert_eq!(val, 20); + assert_eq!(map.len(), 2); + let (key, val) = map.pop_last().unwrap(); + assert_eq!(key, 4); + assert_eq!(val, 40); + assert_eq!(map.len(), 1); + + map.insert(5, 50); + map.insert(6, 60); + assert_eq!(map.len(), 3); + + let (key, val) = map.pop_first().unwrap(); + assert_eq!(key, 3); + assert_eq!(val, 30); + assert_eq!(map.len(), 2); + + let (key, val) = map.pop_last().unwrap(); + assert_eq!(key, 6); + assert_eq!(val, 60); + assert_eq!(map.len(), 1); + + let (key, val) = map.pop_last().unwrap(); + assert_eq!(key, 5); + assert_eq!(val, 50); + assert_eq!(map.len(), 0); + + assert_eq!(map.pop_first(), None); + assert_eq!(map.pop_last(), None); + + map.insert(7, 70); + map.insert(8, 80); + + let (key, val) = map.pop_last().unwrap(); + assert_eq!(key, 8); + assert_eq!(val, 80); + assert_eq!(map.len(), 1); + + let (key, val) = map.pop_last().unwrap(); + assert_eq!(key, 7); + assert_eq!(val, 70); + assert_eq!(map.len(), 0); + + assert_eq!(map.pop_first(), None); + assert_eq!(map.pop_last(), None); +} + +#[test] fn test_insert_into_full_height_0() { let size = node::CAPACITY; for pos in 0..=size { |
