@@ -82,6 +82,65 @@ fn test_entries_replacing() {
82
82
assert_eq ! ( map[ "a" ] , 20 ) ;
83
83
}
84
84
85
+ #[ test]
86
+ fn test_entries_remove ( ) {
87
+ let mut map = LinkedHashMap :: new ( ) ;
88
+ map. insert ( "a" , 10 ) ;
89
+ map. insert ( "b" , 20 ) ;
90
+ map. insert ( "c" , 30 ) ;
91
+ map. insert ( "d" , 40 ) ;
92
+
93
+ // remove middle
94
+ {
95
+ let mut iter = map. entries ( ) ;
96
+ iter. next ( ) . unwrap ( ) ;
97
+ let b = iter. next ( ) . unwrap ( ) ;
98
+ assert_eq ! ( * b. key( ) , "b" ) ;
99
+ assert_eq ! ( b. remove( ) , 20 ) ;
100
+ assert_eq ! ( * iter. next( ) . unwrap( ) . key( ) , "c" ) ;
101
+ }
102
+
103
+ assert_eq ! ( map. len( ) , 3 ) ;
104
+ assert_eq ! ( map[ "a" ] , 10 ) ;
105
+ assert_eq ! ( map[ "c" ] , 30 ) ;
106
+ assert_eq ! ( map[ "d" ] , 40 ) ;
107
+
108
+ // remove first
109
+ {
110
+ let mut iter = map. entries ( ) ;
111
+ let a = iter. next ( ) . unwrap ( ) ;
112
+ assert_eq ! ( * a. key( ) , "a" ) ;
113
+ assert_eq ! ( a. remove( ) , 10 ) ;
114
+ }
115
+
116
+ assert_eq ! ( map. len( ) , 2 ) ;
117
+ assert_eq ! ( map[ "c" ] , 30 ) ;
118
+ assert_eq ! ( map[ "d" ] , 40 ) ;
119
+
120
+ // remove last
121
+ {
122
+ let mut iter = map. entries ( ) ;
123
+ iter. next ( ) . unwrap ( ) ;
124
+ let d = iter. next ( ) . unwrap ( ) ;
125
+ assert_eq ! ( * d. key( ) , "d" ) ;
126
+ assert_eq ! ( d. remove( ) , 40 ) ;
127
+ assert ! ( iter. next( ) . is_none( ) ) ;
128
+ }
129
+
130
+ assert_eq ! ( map. len( ) , 1 ) ;
131
+ assert_eq ! ( map[ "c" ] , 30 ) ;
132
+
133
+ // remove only
134
+ {
135
+ let mut iter = map. entries ( ) ;
136
+ let c = iter. next ( ) . unwrap ( ) ;
137
+ assert_eq ! ( * c. key( ) , "c" ) ;
138
+ assert_eq ! ( c. remove( ) , 30 ) ;
139
+ }
140
+
141
+ assert ! ( map. is_empty( ) ) ;
142
+ }
143
+
85
144
#[ test]
86
145
fn test_debug ( ) {
87
146
let mut map = LinkedHashMap :: new ( ) ;
0 commit comments