@@ -929,6 +929,37 @@ mod test {
929
929
almost_filled
930
930
}
931
931
932
+ #[ test]
933
+ fn remove ( ) {
934
+ let mut src = almost_filled_map ( ) ;
935
+ // key doesn't exist
936
+ let k = 0 ;
937
+ let r = src. remove ( & k) ;
938
+ assert ! ( r. is_none( ) ) ;
939
+
940
+ let k = 5 ;
941
+ let v = 5 ;
942
+ let r = src. remove ( & k) ;
943
+ assert_eq ! ( r, Some ( v) ) ;
944
+ let r = src. remove ( & k) ;
945
+ assert ! ( r. is_none( ) ) ;
946
+ assert_eq ! ( src. len( ) , MAP_SLOTS - 2 ) ;
947
+ }
948
+
949
+ #[ test]
950
+ fn replace ( ) {
951
+ let mut src = almost_filled_map ( ) ;
952
+ src. insert ( 10 , 1000 ) . unwrap ( ) ;
953
+ let v = src. get ( & 10 ) . unwrap ( ) ;
954
+ assert_eq ! ( * v, 1000 ) ;
955
+
956
+ let mut src = almost_filled_map ( ) ;
957
+ let v = src. get_mut ( & 10 ) . unwrap ( ) ;
958
+ * v = 500 ;
959
+ let v = src. get ( & 10 ) . unwrap ( ) ;
960
+ assert_eq ! ( * v, 500 ) ;
961
+ }
962
+
932
963
#[ test]
933
964
fn entry_find ( ) {
934
965
let key = 0 ;
@@ -977,6 +1008,31 @@ mod test {
977
1008
assert_eq ! ( value, * src. get( & key) . unwrap( ) ) ;
978
1009
}
979
1010
1011
+ #[ test]
1012
+ fn entry_vacant_full_insert ( ) {
1013
+ let mut src = almost_filled_map ( ) ;
1014
+
1015
+ // fill the map
1016
+ let key = MAP_SLOTS * 2 ;
1017
+ let value = key;
1018
+ src. insert ( key, value) . unwrap ( ) ;
1019
+ assert_eq ! ( MAP_SLOTS , src. len( ) ) ;
1020
+
1021
+ let key = 0 ;
1022
+ let value = 0 ;
1023
+ let entry = src. entry ( key) ;
1024
+ match entry {
1025
+ Entry :: Occupied ( _) => {
1026
+ panic ! ( "Entry found when missing" ) ;
1027
+ }
1028
+ Entry :: Vacant ( v) => {
1029
+ // Value is returned since the map is full
1030
+ assert_eq ! ( value, v. insert( value) . unwrap_err( ) ) ;
1031
+ }
1032
+ } ;
1033
+ assert ! ( src. get( & key) . is_none( ) ) ;
1034
+ }
1035
+
980
1036
#[ test]
981
1037
fn entry_occupied_insert ( ) {
982
1038
let key = 0 ;
@@ -1014,6 +1070,7 @@ mod test {
1014
1070
}
1015
1071
} ;
1016
1072
assert_eq ! ( MAP_SLOTS - 1 , src. len( ) ) ;
1073
+ assert ! ( !src. contains_key( & key) ) ;
1017
1074
}
1018
1075
1019
1076
#[ test]
0 commit comments