@@ -895,6 +895,37 @@ mod test {
895
895
almost_filled
896
896
}
897
897
898
+ #[ test]
899
+ fn remove ( ) {
900
+ let mut src = almost_filled_map ( ) ;
901
+ // key doesn't exist
902
+ let k = 0 ;
903
+ let r = src. remove ( & k) ;
904
+ assert ! ( r. is_none( ) ) ;
905
+
906
+ let k = 5 ;
907
+ let v = 5 ;
908
+ let r = src. remove ( & k) ;
909
+ assert_eq ! ( r, Some ( v) ) ;
910
+ let r = src. remove ( & k) ;
911
+ assert ! ( r. is_none( ) ) ;
912
+ assert_eq ! ( src. len( ) , MAP_SLOTS - 2 ) ;
913
+ }
914
+
915
+ #[ test]
916
+ fn replace ( ) {
917
+ let mut src = almost_filled_map ( ) ;
918
+ src. insert ( 10 , 1000 ) . unwrap ( ) ;
919
+ let v = src. get ( & 10 ) . unwrap ( ) ;
920
+ assert_eq ! ( * v, 1000 ) ;
921
+
922
+ let mut src = almost_filled_map ( ) ;
923
+ let v = src. get_mut ( & 10 ) . unwrap ( ) ;
924
+ * v = 500 ;
925
+ let v = src. get ( & 10 ) . unwrap ( ) ;
926
+ assert_eq ! ( * v, 500 ) ;
927
+ }
928
+
898
929
#[ test]
899
930
fn entry_find ( ) {
900
931
let key = 0 ;
@@ -943,6 +974,31 @@ mod test {
943
974
assert_eq ! ( value, * src. get( & key) . unwrap( ) ) ;
944
975
}
945
976
977
+ #[ test]
978
+ fn entry_vacant_full_insert ( ) {
979
+ let mut src = almost_filled_map ( ) ;
980
+
981
+ // fill the map
982
+ let key = MAP_SLOTS * 2 ;
983
+ let value = key;
984
+ src. insert ( key, value) . unwrap ( ) ;
985
+ assert_eq ! ( MAP_SLOTS , src. len( ) ) ;
986
+
987
+ let key = 0 ;
988
+ let value = 0 ;
989
+ let entry = src. entry ( key) ;
990
+ match entry {
991
+ Entry :: Occupied ( _) => {
992
+ panic ! ( "Entry found when missing" ) ;
993
+ }
994
+ Entry :: Vacant ( v) => {
995
+ // Value is returned since the map is full
996
+ assert_eq ! ( value, v. insert( value) . unwrap_err( ) ) ;
997
+ }
998
+ } ;
999
+ assert ! ( src. get( & key) . is_none( ) ) ;
1000
+ }
1001
+
946
1002
#[ test]
947
1003
fn entry_occupied_insert ( ) {
948
1004
let key = 0 ;
@@ -980,6 +1036,7 @@ mod test {
980
1036
}
981
1037
} ;
982
1038
assert_eq ! ( MAP_SLOTS - 1 , src. len( ) ) ;
1039
+ assert ! ( !src. contains_key( & key) ) ;
983
1040
}
984
1041
985
1042
#[ test]
0 commit comments