@@ -1878,6 +1878,96 @@ fn test_first_last_entry() {
1878
1878
a. check ( ) ;
1879
1879
}
1880
1880
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
+
1881
1971
#[ test]
1882
1972
fn test_insert_into_full_height_0 ( ) {
1883
1973
let size = node:: CAPACITY ;
@@ -1904,6 +1994,21 @@ fn test_insert_into_full_height_1() {
1904
1994
}
1905
1995
}
1906
1996
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
+
1907
2012
macro_rules! create_append_test {
1908
2013
( $name: ident, $len: expr) => {
1909
2014
#[ test]
0 commit comments