1 /* SPDX-License-Identifier: LGPL-2.1-or-later */
6 int main(int argc
, const char *argv
[]) {
7 _cleanup_bitmap_free_ Bitmap
*b
= NULL
, *b2
= NULL
;
8 unsigned n
= UINT_MAX
, i
= 0;
10 test_setup_logging(LOG_DEBUG
);
15 ASSERT_EQ(bitmap_ensure_allocated(&b
), 0);
17 ASSERT_EQ(bitmap_ensure_allocated(&b
), 0);
19 ASSERT_FALSE(bitmap_isset(b
, 0));
20 ASSERT_FALSE(bitmap_isset(b
, 1));
21 ASSERT_FALSE(bitmap_isset(b
, 256));
22 ASSERT_TRUE(bitmap_isclear(b
));
24 ASSERT_EQ(bitmap_set(b
, 0), 0);
25 ASSERT_TRUE(bitmap_isset(b
, 0));
26 ASSERT_FALSE(bitmap_isclear(b
));
28 ASSERT_FALSE(bitmap_isset(b
, 0));
29 ASSERT_TRUE(bitmap_isclear(b
));
31 ASSERT_EQ(bitmap_set(b
, 1), 0);
32 ASSERT_TRUE(bitmap_isset(b
, 1));
33 ASSERT_FALSE(bitmap_isclear(b
));
35 ASSERT_FALSE(bitmap_isset(b
, 1));
36 ASSERT_TRUE(bitmap_isclear(b
));
38 ASSERT_EQ(bitmap_set(b
, 256), 0);
39 ASSERT_TRUE(bitmap_isset(b
, 256));
40 ASSERT_FALSE(bitmap_isclear(b
));
42 ASSERT_FALSE(bitmap_isset(b
, 256));
43 ASSERT_TRUE(bitmap_isclear(b
));
45 ASSERT_EQ(bitmap_set(b
, 32), 0);
47 ASSERT_TRUE(bitmap_isset(b
, 32));
50 BITMAP_FOREACH(n
, NULL
)
53 ASSERT_EQ(bitmap_set(b
, 0), 0);
54 ASSERT_EQ(bitmap_set(b
, 1), 0);
55 ASSERT_EQ(bitmap_set(b
, 256), 0);
57 BITMAP_FOREACH(n
, b
) {
67 ASSERT_EQ(i
, UINT_MAX
);
71 BITMAP_FOREACH(n
, b
) {
81 ASSERT_EQ(i
, UINT_MAX
);
85 ASSERT_TRUE(bitmap_equal(b
, b2
));
86 ASSERT_TRUE(bitmap_equal(b
, b
));
87 ASSERT_FALSE(bitmap_equal(b
, NULL
));
88 ASSERT_FALSE(bitmap_equal(NULL
, b
));
89 ASSERT_TRUE(bitmap_equal(NULL
, NULL
));
92 ASSERT_TRUE(bitmap_isclear(b
));
93 ASSERT_FALSE(bitmap_equal(b
, b2
));
96 assert_se(bitmap_set(b
, UINT_MAX
) == -ERANGE
);
99 ASSERT_EQ(bitmap_ensure_allocated(&b
), 0);
100 ASSERT_EQ(bitmap_ensure_allocated(&b2
), 0);
102 assert_se(bitmap_equal(b
, b2
));
103 ASSERT_EQ(bitmap_set(b
, 0), 0);
105 assert_se(bitmap_equal(b
, b2
));
107 ASSERT_EQ(bitmap_set(b
, 1), 0);
109 assert_se(bitmap_equal(b
, b2
));
111 ASSERT_EQ(bitmap_set(b
, 0), 0);
112 ASSERT_EQ(bitmap_set(b2
, 0), 0);
113 assert_se(bitmap_equal(b
, b2
));