@@ -929,6 +929,37 @@ mod test {
929929 almost_filled
930930 }
931931
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+
932963 #[ test]
933964 fn entry_find ( ) {
934965 let key = 0 ;
@@ -977,6 +1008,31 @@ mod test {
9771008 assert_eq ! ( value, * src. get( & key) . unwrap( ) ) ;
9781009 }
9791010
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+
9801036 #[ test]
9811037 fn entry_occupied_insert ( ) {
9821038 let key = 0 ;
@@ -1014,6 +1070,7 @@ mod test {
10141070 }
10151071 } ;
10161072 assert_eq ! ( MAP_SLOTS - 1 , src. len( ) ) ;
1073+ assert ! ( !src. contains_key( & key) ) ;
10171074 }
10181075
10191076 #[ test]
0 commit comments