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