Skip to content

Commit be42af6

Browse files
authored
Rollup merge of rust-lang#96070 - Gumichocopengin8:test/btree-map, r=thomcc
[test] Add test cases for untested functions for BTreeMap - add `pop_first()`, `pop_last()`, `get_key_value()` and `try_insert()` test cases
2 parents 10e8a2a + 3f46ba6 commit be42af6

File tree

1 file changed

+105
-0
lines changed
  • library/alloc/src/collections/btree/map

1 file changed

+105
-0
lines changed

library/alloc/src/collections/btree/map/tests.rs

+105
Original file line numberDiff line numberDiff line change
@@ -1878,6 +1878,96 @@ fn test_first_last_entry() {
18781878
a.check();
18791879
}
18801880

1881+
#[test]
1882+
fn test_pop_first_last() {
1883+
let mut map = BTreeMap::new();
1884+
assert_eq!(map.pop_first(), None);
1885+
assert_eq!(map.pop_last(), None);
1886+
1887+
map.insert(1, 10);
1888+
map.insert(2, 20);
1889+
map.insert(3, 30);
1890+
map.insert(4, 40);
1891+
1892+
assert_eq!(map.len(), 4);
1893+
1894+
let (key, val) = map.pop_first().unwrap();
1895+
assert_eq!(key, 1);
1896+
assert_eq!(val, 10);
1897+
assert_eq!(map.len(), 3);
1898+
1899+
let (key, val) = map.pop_first().unwrap();
1900+
assert_eq!(key, 2);
1901+
assert_eq!(val, 20);
1902+
assert_eq!(map.len(), 2);
1903+
let (key, val) = map.pop_last().unwrap();
1904+
assert_eq!(key, 4);
1905+
assert_eq!(val, 40);
1906+
assert_eq!(map.len(), 1);
1907+
1908+
map.insert(5, 50);
1909+
map.insert(6, 60);
1910+
assert_eq!(map.len(), 3);
1911+
1912+
let (key, val) = map.pop_first().unwrap();
1913+
assert_eq!(key, 3);
1914+
assert_eq!(val, 30);
1915+
assert_eq!(map.len(), 2);
1916+
1917+
let (key, val) = map.pop_last().unwrap();
1918+
assert_eq!(key, 6);
1919+
assert_eq!(val, 60);
1920+
assert_eq!(map.len(), 1);
1921+
1922+
let (key, val) = map.pop_last().unwrap();
1923+
assert_eq!(key, 5);
1924+
assert_eq!(val, 50);
1925+
assert_eq!(map.len(), 0);
1926+
1927+
assert_eq!(map.pop_first(), None);
1928+
assert_eq!(map.pop_last(), None);
1929+
1930+
map.insert(7, 70);
1931+
map.insert(8, 80);
1932+
1933+
let (key, val) = map.pop_last().unwrap();
1934+
assert_eq!(key, 8);
1935+
assert_eq!(val, 80);
1936+
assert_eq!(map.len(), 1);
1937+
1938+
let (key, val) = map.pop_last().unwrap();
1939+
assert_eq!(key, 7);
1940+
assert_eq!(val, 70);
1941+
assert_eq!(map.len(), 0);
1942+
1943+
assert_eq!(map.pop_first(), None);
1944+
assert_eq!(map.pop_last(), None);
1945+
}
1946+
1947+
#[test]
1948+
fn test_get_key_value() {
1949+
let mut map = BTreeMap::new();
1950+
1951+
assert!(map.is_empty());
1952+
assert_eq!(map.get_key_value(&1), None);
1953+
assert_eq!(map.get_key_value(&2), None);
1954+
1955+
map.insert(1, 10);
1956+
map.insert(2, 20);
1957+
map.insert(3, 30);
1958+
1959+
assert_eq!(map.len(), 3);
1960+
assert_eq!(map.get_key_value(&1), Some((&1, &10)));
1961+
assert_eq!(map.get_key_value(&3), Some((&3, &30)));
1962+
assert_eq!(map.get_key_value(&4), None);
1963+
1964+
map.remove(&3);
1965+
1966+
assert_eq!(map.len(), 2);
1967+
assert_eq!(map.get_key_value(&3), None);
1968+
assert_eq!(map.get_key_value(&2), Some((&2, &20)));
1969+
}
1970+
18811971
#[test]
18821972
fn test_insert_into_full_height_0() {
18831973
let size = node::CAPACITY;
@@ -1904,6 +1994,21 @@ fn test_insert_into_full_height_1() {
19041994
}
19051995
}
19061996

1997+
#[test]
1998+
fn test_try_insert() {
1999+
let mut map = BTreeMap::new();
2000+
2001+
assert!(map.is_empty());
2002+
2003+
assert_eq!(map.try_insert(1, 10).unwrap(), &10);
2004+
assert_eq!(map.try_insert(2, 20).unwrap(), &20);
2005+
2006+
let err = map.try_insert(2, 200).unwrap_err();
2007+
assert_eq!(err.entry.key(), &2);
2008+
assert_eq!(err.entry.get(), &20);
2009+
assert_eq!(err.value, 200);
2010+
}
2011+
19072012
macro_rules! create_append_test {
19082013
($name:ident, $len:expr) => {
19092014
#[test]

0 commit comments

Comments
 (0)