@@ -186,7 +186,7 @@ mod tests {
186
186
setup_memory ( 1000 ) ;
187
187
let mut queue = Queue :: < usize , 10 > :: new ( ) ;
188
188
for i in 0 ..10 {
189
- queue. push_back ( i) . unwrap ( ) ;
189
+ assert_eq ! ( queue. push_back( i) , Ok ( ( ) ) ) ;
190
190
}
191
191
// sanity check that queue really is full
192
192
assert_eq ! ( queue. push_back( 1 ) , Err ( KernelError :: OutOfMemory ) ) ;
@@ -213,5 +213,49 @@ mod tests {
213
213
assert_eq ! ( queue. pop_front( ) , Some ( i) ) ;
214
214
}
215
215
}
216
+
217
+ #[ test]
218
+ fn growing_to_smaller_size_has_no_effect ( ) {
219
+ setup_memory ( 1000 ) ;
220
+ let mut queue = Queue :: < usize , 10 > :: new ( ) ;
221
+ for i in 0 ..10 {
222
+ assert_eq ! ( queue. push_back( i) , Ok ( ( ) ) ) ;
223
+ }
224
+ assert_eq ! ( queue. len( ) , 10 ) ;
225
+ queue. grow_capacity ( 1 ) . unwrap ( ) ;
226
+ assert_eq ! ( queue. len( ) , 10 ) ;
227
+ assert_eq ! ( queue. push_back( 1 ) , Err ( KernelError :: OutOfMemory ) ) ;
228
+ }
229
+
230
+ #[ test]
231
+ fn growing_multiple_times_consecutively_retains_state ( ) {
232
+ setup_memory ( 10000 ) ;
233
+ let mut queue = Queue :: < usize , 10 > :: new ( ) ;
234
+ for i in 0 ..10 {
235
+ assert_eq ! ( queue. push_back( i) , Ok ( ( ) ) ) ;
236
+ }
237
+ assert_eq ! ( queue. len( ) , 10 ) ;
238
+
239
+ // pop and subsequently push more elements to make queue wrap
240
+ for i in 0 ..5 {
241
+ assert_eq ! ( queue. pop_front( ) , Some ( i) ) ;
242
+ }
243
+ assert_eq ! ( queue. len( ) , 5 ) ;
244
+
245
+ for i in 10 ..15 {
246
+ assert_eq ! ( queue. push_back( i) , Ok ( ( ) ) ) ;
247
+ }
248
+
249
+ assert_eq ! ( queue. len( ) , 10 ) ;
250
+ assert_eq ! ( * queue. front( ) . unwrap( ) , 5 ) ;
251
+ assert_eq ! ( * queue. back( ) . unwrap( ) , 14 ) ;
252
+ assert_eq ! ( queue. grow_capacity( 20 ) , Ok ( ( ) ) ) ;
253
+ assert_eq ! ( queue. grow_capacity( 40 ) , Ok ( ( ) ) ) ;
254
+ assert_eq ! ( queue. grow_capacity( 100 ) , Ok ( ( ) ) ) ;
255
+ assert_eq ! ( queue. grow_capacity( 200 ) , Ok ( ( ) ) ) ;
256
+ for i in 5 ..15 {
257
+ assert_eq ! ( queue. pop_front( ) , Some ( i) ) ;
258
+ }
259
+ }
216
260
}
217
261
// END TESTING
0 commit comments