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