@@ -901,6 +901,37 @@ mod test {
901
901
almost_filled
902
902
}
903
903
904
+ #[ test]
905
+ fn remove ( ) {
906
+ let mut src = almost_filled_map ( ) ;
907
+ // key doesn't exist
908
+ let k = 0 ;
909
+ let r = src. remove ( & k) ;
910
+ assert ! ( r. is_none( ) ) ;
911
+
912
+ let k = 5 ;
913
+ let v = 5 ;
914
+ let r = src. remove ( & k) ;
915
+ assert_eq ! ( r, Some ( v) ) ;
916
+ let r = src. remove ( & k) ;
917
+ assert ! ( r. is_none( ) ) ;
918
+ assert_eq ! ( src. len( ) , MAP_SLOTS - 2 ) ;
919
+ }
920
+
921
+ #[ test]
922
+ fn replace ( ) {
923
+ let mut src = almost_filled_map ( ) ;
924
+ src. insert ( 10 , 1000 ) . unwrap ( ) ;
925
+ let v = src. get ( & 10 ) . unwrap ( ) ;
926
+ assert_eq ! ( * v, 1000 ) ;
927
+
928
+ let mut src = almost_filled_map ( ) ;
929
+ let v = src. get_mut ( & 10 ) . unwrap ( ) ;
930
+ * v = 500 ;
931
+ let v = src. get ( & 10 ) . unwrap ( ) ;
932
+ assert_eq ! ( * v, 500 ) ;
933
+ }
934
+
904
935
#[ test]
905
936
fn entry_find ( ) {
906
937
let key = 0 ;
@@ -949,6 +980,31 @@ mod test {
949
980
assert_eq ! ( value, * src. get( & key) . unwrap( ) ) ;
950
981
}
951
982
983
+ #[ test]
984
+ fn entry_vacant_full_insert ( ) {
985
+ let mut src = almost_filled_map ( ) ;
986
+
987
+ // fill the map
988
+ let key = MAP_SLOTS * 2 ;
989
+ let value = key;
990
+ src. insert ( key, value) . unwrap ( ) ;
991
+ assert_eq ! ( MAP_SLOTS , src. len( ) ) ;
992
+
993
+ let key = 0 ;
994
+ let value = 0 ;
995
+ let entry = src. entry ( key) ;
996
+ match entry {
997
+ Entry :: Occupied ( _) => {
998
+ panic ! ( "Entry found when missing" ) ;
999
+ }
1000
+ Entry :: Vacant ( v) => {
1001
+ // Value is returned since the map is full
1002
+ assert_eq ! ( value, v. insert( value) . unwrap_err( ) ) ;
1003
+ }
1004
+ } ;
1005
+ assert ! ( src. get( & key) . is_none( ) ) ;
1006
+ }
1007
+
952
1008
#[ test]
953
1009
fn entry_occupied_insert ( ) {
954
1010
let key = 0 ;
@@ -986,6 +1042,7 @@ mod test {
986
1042
}
987
1043
} ;
988
1044
assert_eq ! ( MAP_SLOTS - 1 , src. len( ) ) ;
1045
+ assert ! ( !src. contains_key( & key) ) ;
989
1046
}
990
1047
991
1048
#[ test]
0 commit comments