Skip to content

Commit 6496f59

Browse files
committed
atomic_bitmap: add test case for enlarging the bitmap
Add one test case to validate the enlarge function of the AtomicBitmap struct. Signed-off-by: Muminul Islam <[email protected]>
1 parent 53deadb commit 6496f59

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

src/bitmap/backend/atomic_bitmap.rs

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)