@@ -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]
18821972fn 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+
19072012macro_rules! create_append_test {
19082013 ( $name: ident, $len: expr) => {
19092014 #[ test]
0 commit comments