]>
git.proxmox.com Git - rustc.git/blob - src/jemalloc/test/unit/bitmap.c
1 #include "test/jemalloc_test.h"
3 TEST_BEGIN(test_bitmap_size
)
8 for (i
= 1; i
<= BITMAP_MAXBITS
; i
++) {
12 bitmap_info_init(&binfo
, i
);
13 size
= bitmap_size(&binfo
);
14 assert_true(size
>= prev_size
,
15 "Bitmap size is smaller than expected");
21 TEST_BEGIN(test_bitmap_init
)
25 for (i
= 1; i
<= BITMAP_MAXBITS
; i
++) {
27 bitmap_info_init(&binfo
, i
);
30 bitmap_t
*bitmap
= (bitmap_t
*)malloc(
32 bitmap_init(bitmap
, &binfo
);
34 for (j
= 0; j
< i
; j
++) {
35 assert_false(bitmap_get(bitmap
, &binfo
, j
),
36 "Bit should be unset");
44 TEST_BEGIN(test_bitmap_set
)
48 for (i
= 1; i
<= BITMAP_MAXBITS
; i
++) {
50 bitmap_info_init(&binfo
, i
);
53 bitmap_t
*bitmap
= (bitmap_t
*)malloc(
55 bitmap_init(bitmap
, &binfo
);
57 for (j
= 0; j
< i
; j
++)
58 bitmap_set(bitmap
, &binfo
, j
);
59 assert_true(bitmap_full(bitmap
, &binfo
),
60 "All bits should be set");
67 TEST_BEGIN(test_bitmap_unset
)
71 for (i
= 1; i
<= BITMAP_MAXBITS
; i
++) {
73 bitmap_info_init(&binfo
, i
);
76 bitmap_t
*bitmap
= (bitmap_t
*)malloc(
78 bitmap_init(bitmap
, &binfo
);
80 for (j
= 0; j
< i
; j
++)
81 bitmap_set(bitmap
, &binfo
, j
);
82 assert_true(bitmap_full(bitmap
, &binfo
),
83 "All bits should be set");
84 for (j
= 0; j
< i
; j
++)
85 bitmap_unset(bitmap
, &binfo
, j
);
86 for (j
= 0; j
< i
; j
++)
87 bitmap_set(bitmap
, &binfo
, j
);
88 assert_true(bitmap_full(bitmap
, &binfo
),
89 "All bits should be set");
96 TEST_BEGIN(test_bitmap_sfu
)
100 for (i
= 1; i
<= BITMAP_MAXBITS
; i
++) {
102 bitmap_info_init(&binfo
, i
);
105 bitmap_t
*bitmap
= (bitmap_t
*)malloc(
106 bitmap_size(&binfo
));
107 bitmap_init(bitmap
, &binfo
);
109 /* Iteratively set bits starting at the beginning. */
110 for (j
= 0; j
< i
; j
++) {
111 assert_zd_eq(bitmap_sfu(bitmap
, &binfo
), j
,
112 "First unset bit should be just after "
113 "previous first unset bit");
115 assert_true(bitmap_full(bitmap
, &binfo
),
116 "All bits should be set");
119 * Iteratively unset bits starting at the end, and
120 * verify that bitmap_sfu() reaches the unset bits.
122 for (j
= i
- 1; j
>= 0; j
--) {
123 bitmap_unset(bitmap
, &binfo
, j
);
124 assert_zd_eq(bitmap_sfu(bitmap
, &binfo
), j
,
125 "First unset bit should the bit previously "
127 bitmap_unset(bitmap
, &binfo
, j
);
129 assert_false(bitmap_get(bitmap
, &binfo
, 0),
130 "Bit should be unset");
133 * Iteratively set bits starting at the beginning, and
134 * verify that bitmap_sfu() looks past them.
136 for (j
= 1; j
< i
; j
++) {
137 bitmap_set(bitmap
, &binfo
, j
- 1);
138 assert_zd_eq(bitmap_sfu(bitmap
, &binfo
), j
,
139 "First unset bit should be just after the "
140 "bit previously set");
141 bitmap_unset(bitmap
, &binfo
, j
);
143 assert_zd_eq(bitmap_sfu(bitmap
, &binfo
), i
- 1,
144 "First unset bit should be the last bit");
145 assert_true(bitmap_full(bitmap
, &binfo
),
146 "All bits should be set");