@@ -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