]> git.ipfire.org Git - thirdparty/systemd.git/blame_incremental - src/test/test-bitmap.c
basic/include: replace _Static_assert() with static_assert()
[thirdparty/systemd.git] / src / test / test-bitmap.c
... / ...
CommitLineData
1/* SPDX-License-Identifier: LGPL-2.1-or-later */
2
3#include "bitmap.h"
4#include "tests.h"
5
6int main(int argc, const char *argv[]) {
7 _cleanup_bitmap_free_ Bitmap *b = NULL, *b2 = NULL;
8 unsigned n = UINT_MAX, i = 0;
9
10 test_setup_logging(LOG_DEBUG);
11
12 b = bitmap_new();
13 assert_se(b);
14
15 ASSERT_EQ(bitmap_ensure_allocated(&b), 0);
16 b = bitmap_free(b);
17 ASSERT_EQ(bitmap_ensure_allocated(&b), 0);
18
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));
23
24 ASSERT_EQ(bitmap_set(b, 0), 0);
25 ASSERT_TRUE(bitmap_isset(b, 0));
26 ASSERT_FALSE(bitmap_isclear(b));
27 bitmap_unset(b, 0);
28 ASSERT_FALSE(bitmap_isset(b, 0));
29 ASSERT_TRUE(bitmap_isclear(b));
30
31 ASSERT_EQ(bitmap_set(b, 1), 0);
32 ASSERT_TRUE(bitmap_isset(b, 1));
33 ASSERT_FALSE(bitmap_isclear(b));
34 bitmap_unset(b, 1);
35 ASSERT_FALSE(bitmap_isset(b, 1));
36 ASSERT_TRUE(bitmap_isclear(b));
37
38 ASSERT_EQ(bitmap_set(b, 256), 0);
39 ASSERT_TRUE(bitmap_isset(b, 256));
40 ASSERT_FALSE(bitmap_isclear(b));
41 bitmap_unset(b, 256);
42 ASSERT_FALSE(bitmap_isset(b, 256));
43 ASSERT_TRUE(bitmap_isclear(b));
44
45 ASSERT_EQ(bitmap_set(b, 32), 0);
46 bitmap_unset(b, 0);
47 ASSERT_TRUE(bitmap_isset(b, 32));
48 bitmap_unset(b, 32);
49
50 BITMAP_FOREACH(n, NULL)
51 assert_not_reached();
52
53 ASSERT_EQ(bitmap_set(b, 0), 0);
54 ASSERT_EQ(bitmap_set(b, 1), 0);
55 ASSERT_EQ(bitmap_set(b, 256), 0);
56
57 BITMAP_FOREACH(n, b) {
58 ASSERT_EQ(n, i);
59 if (i == 0)
60 i = 1;
61 else if (i == 1)
62 i = 256;
63 else if (i == 256)
64 i = UINT_MAX;
65 }
66
67 ASSERT_EQ(i, UINT_MAX);
68
69 i = 0;
70
71 BITMAP_FOREACH(n, b) {
72 ASSERT_EQ(n, i);
73 if (i == 0)
74 i = 1;
75 else if (i == 1)
76 i = 256;
77 else if (i == 256)
78 i = UINT_MAX;
79 }
80
81 ASSERT_EQ(i, UINT_MAX);
82
83 b2 = bitmap_copy(b);
84 assert_se(b2);
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));
90
91 bitmap_clear(b);
92 ASSERT_TRUE(bitmap_isclear(b));
93 ASSERT_FALSE(bitmap_equal(b, b2));
94 b2 = bitmap_free(b2);
95
96 assert_se(bitmap_set(b, UINT_MAX) == -ERANGE);
97
98 b = bitmap_free(b);
99 ASSERT_EQ(bitmap_ensure_allocated(&b), 0);
100 ASSERT_EQ(bitmap_ensure_allocated(&b2), 0);
101
102 assert_se(bitmap_equal(b, b2));
103 ASSERT_EQ(bitmap_set(b, 0), 0);
104 bitmap_unset(b, 0);
105 assert_se(bitmap_equal(b, b2));
106
107 ASSERT_EQ(bitmap_set(b, 1), 0);
108 bitmap_clear(b);
109 assert_se(bitmap_equal(b, b2));
110
111 ASSERT_EQ(bitmap_set(b, 0), 0);
112 ASSERT_EQ(bitmap_set(b2, 0), 0);
113 assert_se(bitmap_equal(b, b2));
114
115 return 0;
116}