@@ -791,7 +791,11 @@ fn test_range_finding_ill_order_in_range_ord() {
791
791
impl Ord for EvilTwin {
792
792
fn cmp ( & self , other : & Self ) -> Ordering {
793
793
let ord = self . 0 . cmp ( & other. 0 ) ;
794
- if COMPARES . fetch_add ( 1 , SeqCst ) > 0 { ord. reverse ( ) } else { ord }
794
+ if COMPARES . fetch_add ( 1 , SeqCst ) > 0 {
795
+ ord. reverse ( )
796
+ } else {
797
+ ord
798
+ }
795
799
}
796
800
}
797
801
@@ -943,13 +947,12 @@ mod test_drain_filter {
943
947
fn mutating_and_keeping ( ) {
944
948
let pairs = ( 0 ..3 ) . map ( |i| ( i, i) ) ;
945
949
let mut map = BTreeMap :: from_iter ( pairs) ;
946
- assert ! (
947
- map . drain_filter( |_, v| {
950
+ assert ! ( map
951
+ . drain_filter( |_, v| {
948
952
* v += 6 ;
949
953
false
950
954
} )
951
- . eq( iter:: empty( ) )
952
- ) ;
955
+ . eq( iter:: empty( ) ) ) ;
953
956
assert ! ( map. keys( ) . copied( ) . eq( 0 ..3 ) ) ;
954
957
assert ! ( map. values( ) . copied( ) . eq( 6 ..9 ) ) ;
955
958
map. check ( ) ;
@@ -960,13 +963,12 @@ mod test_drain_filter {
960
963
fn mutating_and_removing ( ) {
961
964
let pairs = ( 0 ..3 ) . map ( |i| ( i, i) ) ;
962
965
let mut map = BTreeMap :: from_iter ( pairs) ;
963
- assert ! (
964
- map . drain_filter( |_, v| {
966
+ assert ! ( map
967
+ . drain_filter( |_, v| {
965
968
* v += 6 ;
966
969
true
967
970
} )
968
- . eq( ( 0 ..3 ) . map( |i| ( i, i + 6 ) ) )
969
- ) ;
971
+ . eq( ( 0 ..3 ) . map( |i| ( i, i + 6 ) ) ) ) ;
970
972
assert ! ( map. is_empty( ) ) ;
971
973
map. check ( ) ;
972
974
}
@@ -1878,6 +1880,72 @@ fn test_first_last_entry() {
1878
1880
a. check ( ) ;
1879
1881
}
1880
1882
1883
+ #[ test]
1884
+ fn test_pop_first_last ( ) {
1885
+ let mut map = BTreeMap :: new ( ) ;
1886
+ assert_eq ! ( map. pop_first( ) , None ) ;
1887
+ assert_eq ! ( map. pop_last( ) , None ) ;
1888
+
1889
+ map. insert ( 1 , 10 ) ;
1890
+ map. insert ( 2 , 20 ) ;
1891
+ map. insert ( 3 , 30 ) ;
1892
+ map. insert ( 4 , 40 ) ;
1893
+
1894
+ assert_eq ! ( map. len( ) , 4 ) ;
1895
+
1896
+ let ( key, val) = map. pop_first ( ) . unwrap ( ) ;
1897
+ assert_eq ! ( key, 1 ) ;
1898
+ assert_eq ! ( val, 10 ) ;
1899
+ assert_eq ! ( map. len( ) , 3 ) ;
1900
+
1901
+ let ( key, val) = map. pop_first ( ) . unwrap ( ) ;
1902
+ assert_eq ! ( key, 2 ) ;
1903
+ assert_eq ! ( val, 20 ) ;
1904
+ assert_eq ! ( map. len( ) , 2 ) ;
1905
+ let ( key, val) = map. pop_last ( ) . unwrap ( ) ;
1906
+ assert_eq ! ( key, 4 ) ;
1907
+ assert_eq ! ( val, 40 ) ;
1908
+ assert_eq ! ( map. len( ) , 1 ) ;
1909
+
1910
+ map. insert ( 5 , 50 ) ;
1911
+ map. insert ( 6 , 60 ) ;
1912
+ assert_eq ! ( map. len( ) , 3 ) ;
1913
+
1914
+ let ( key, val) = map. pop_first ( ) . unwrap ( ) ;
1915
+ assert_eq ! ( key, 3 ) ;
1916
+ assert_eq ! ( val, 30 ) ;
1917
+ assert_eq ! ( map. len( ) , 2 ) ;
1918
+
1919
+ let ( key, val) = map. pop_last ( ) . unwrap ( ) ;
1920
+ assert_eq ! ( key, 6 ) ;
1921
+ assert_eq ! ( val, 60 ) ;
1922
+ assert_eq ! ( map. len( ) , 1 ) ;
1923
+
1924
+ let ( key, val) = map. pop_last ( ) . unwrap ( ) ;
1925
+ assert_eq ! ( key, 5 ) ;
1926
+ assert_eq ! ( val, 50 ) ;
1927
+ assert_eq ! ( map. len( ) , 0 ) ;
1928
+
1929
+ assert_eq ! ( map. pop_first( ) , None ) ;
1930
+ assert_eq ! ( map. pop_last( ) , None ) ;
1931
+
1932
+ map. insert ( 7 , 70 ) ;
1933
+ map. insert ( 8 , 80 ) ;
1934
+
1935
+ let ( key, val) = map. pop_last ( ) . unwrap ( ) ;
1936
+ assert_eq ! ( key, 8 ) ;
1937
+ assert_eq ! ( val, 80 ) ;
1938
+ assert_eq ! ( map. len( ) , 1 ) ;
1939
+
1940
+ let ( key, val) = map. pop_last ( ) . unwrap ( ) ;
1941
+ assert_eq ! ( key, 7 ) ;
1942
+ assert_eq ! ( val, 70 ) ;
1943
+ assert_eq ! ( map. len( ) , 0 ) ;
1944
+
1945
+ assert_eq ! ( map. pop_first( ) , None ) ;
1946
+ assert_eq ! ( map. pop_last( ) , None ) ;
1947
+ }
1948
+
1881
1949
#[ test]
1882
1950
fn test_insert_into_full_height_0 ( ) {
1883
1951
let size = node:: CAPACITY ;
0 commit comments