@@ -295,4 +295,44 @@ mod tests {
295
295
let b = AtomicBitmap :: new ( 0x800 , DEFAULT_PAGE_SIZE ) ;
296
296
test_bitmap ( & b) ;
297
297
}
298
+
299
+ #[ test]
300
+ fn test_bitmap_enlarge ( ) {
301
+ let mut b = AtomicBitmap :: new ( 8 * 1024 , DEFAULT_PAGE_SIZE ) ;
302
+ assert_eq ! ( b. len( ) , 64 ) ;
303
+ b. set_addr_range ( 128 , 129 ) ;
304
+ assert ! ( !b. is_addr_set( 0 ) ) ;
305
+ assert ! ( b. is_addr_set( 128 ) ) ;
306
+ assert ! ( b. is_addr_set( 256 ) ) ;
307
+ assert ! ( !b. is_addr_set( 384 ) ) ;
308
+
309
+ b. reset_addr_range ( 128 , 129 ) ;
310
+ assert ! ( !b. is_addr_set( 0 ) ) ;
311
+ assert ! ( !b. is_addr_set( 128 ) ) ;
312
+ assert ! ( !b. is_addr_set( 256 ) ) ;
313
+ assert ! ( !b. is_addr_set( 384 ) ) ;
314
+ b. set_addr_range ( 128 , 129 ) ;
315
+ b. enlarge ( 8 * 1024 ) ;
316
+ for i in 65 ..128 {
317
+ assert ! ( !b. is_bit_set( i) ) ;
318
+ }
319
+ assert_eq ! ( b. len( ) , 128 ) ;
320
+ assert ! ( !b. is_addr_set( 0 ) ) ;
321
+ assert ! ( b. is_addr_set( 128 ) ) ;
322
+ assert ! ( b. is_addr_set( 256 ) ) ;
323
+ assert ! ( !b. is_addr_set( 384 ) ) ;
324
+
325
+ b. set_bit ( 55 ) ;
326
+ assert ! ( b. is_bit_set( 55 ) ) ;
327
+ for i in 65 ..128 {
328
+ b. set_bit ( i) ;
329
+ }
330
+ for i in 65 ..128 {
331
+ assert ! ( b. is_bit_set( i) ) ;
332
+ }
333
+ b. reset_addr_range ( 0 , 16 * 1024 ) ;
334
+ for i in 0 ..128 {
335
+ assert ! ( !b. is_bit_set( i) ) ;
336
+ }
337
+ }
298
338
}
0 commit comments