]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/test/test-bitmap.c
libudev: hide definition of struct udev_list from other libudev components
[thirdparty/systemd.git] / src / test / test-bitmap.c
CommitLineData
53e1b683 1/* SPDX-License-Identifier: LGPL-2.1+ */
5ffa42cb
TG
2
3#include "bitmap.h"
4
5int main(int argc, const char *argv[]) {
d5fa8199 6 _cleanup_bitmap_free_ Bitmap *b = NULL, *b2 = NULL;
cb57dd41 7 Iterator it;
5ffa42cb
TG
8 unsigned n = (unsigned) -1, i = 0;
9
10 b = bitmap_new();
11 assert_se(b);
12
13 assert_se(bitmap_ensure_allocated(&b) == 0);
14 bitmap_free(b);
15 b = NULL;
16 assert_se(bitmap_ensure_allocated(&b) == 0);
17
18 assert_se(bitmap_isset(b, 0) == false);
19 assert_se(bitmap_isset(b, 1) == false);
20 assert_se(bitmap_isset(b, 256) == false);
21 assert_se(bitmap_isclear(b) == true);
22
23 assert_se(bitmap_set(b, 0) == 0);
24 assert_se(bitmap_isset(b, 0) == true);
25 assert_se(bitmap_isclear(b) == false);
26 bitmap_unset(b, 0);
27 assert_se(bitmap_isset(b, 0) == false);
28 assert_se(bitmap_isclear(b) == true);
29
30 assert_se(bitmap_set(b, 1) == 0);
31 assert_se(bitmap_isset(b, 1) == true);
32 assert_se(bitmap_isclear(b) == false);
33 bitmap_unset(b, 1);
34 assert_se(bitmap_isset(b, 1) == false);
35 assert_se(bitmap_isclear(b) == true);
36
37 assert_se(bitmap_set(b, 256) == 0);
38 assert_se(bitmap_isset(b, 256) == true);
39 assert_se(bitmap_isclear(b) == false);
40 bitmap_unset(b, 256);
41 assert_se(bitmap_isset(b, 256) == false);
42 assert_se(bitmap_isclear(b) == true);
43
cdf6f5ae
TG
44 assert_se(bitmap_set(b, 32) == 0);
45 bitmap_unset(b, 0);
46 assert_se(bitmap_isset(b, 32) == true);
47 bitmap_unset(b, 32);
48
49 BITMAP_FOREACH(n, NULL, it)
50 assert_not_reached("NULL bitmap");
51
5ffa42cb
TG
52 assert_se(bitmap_set(b, 0) == 0);
53 assert_se(bitmap_set(b, 1) == 0);
54 assert_se(bitmap_set(b, 256) == 0);
55
cb57dd41 56 BITMAP_FOREACH(n, b, it) {
5ffa42cb
TG
57 assert_se(n == i);
58 if (i == 0)
59 i = 1;
60 else if (i == 1)
61 i = 256;
62 else if (i == 256)
63 i = (unsigned) -1;
64 }
65
66 assert_se(i == (unsigned) -1);
67
68 i = 0;
69
cb57dd41 70 BITMAP_FOREACH(n, b, it) {
5ffa42cb
TG
71 assert_se(n == i);
72 if (i == 0)
73 i = 1;
74 else if (i == 1)
75 i = 256;
76 else if (i == 256)
77 i = (unsigned) -1;
78 }
79
80 assert_se(i == (unsigned) -1);
81
6b86b9e6
YW
82 b2 = bitmap_copy(b);
83 assert_se(b2);
84 assert_se(bitmap_equal(b, b2) == true);
85 assert_se(bitmap_equal(b, b) == true);
86 assert_se(bitmap_equal(b, NULL) == false);
87 assert_se(bitmap_equal(NULL, b) == false);
88 assert_se(bitmap_equal(NULL, NULL) == true);
89
5ffa42cb
TG
90 bitmap_clear(b);
91 assert_se(bitmap_isclear(b) == true);
6b86b9e6
YW
92 assert_se(bitmap_equal(b, b2) == false);
93 bitmap_free(b2);
94 b2 = NULL;
5ffa42cb
TG
95
96 assert_se(bitmap_set(b, (unsigned) -1) == -ERANGE);
97
d5fa8199
MM
98 bitmap_free(b);
99 b = NULL;
100 assert_se(bitmap_ensure_allocated(&b) == 0);
101 assert_se(bitmap_ensure_allocated(&b2) == 0);
102
103 assert_se(bitmap_equal(b, b2));
104 assert_se(bitmap_set(b, 0) == 0);
105 bitmap_unset(b, 0);
106 assert_se(bitmap_equal(b, b2));
107
951c3eef
MM
108 assert_se(bitmap_set(b, 1) == 0);
109 bitmap_clear(b);
110 assert_se(bitmap_equal(b, b2));
111
112 assert_se(bitmap_set(b, 0) == 0);
113 assert_se(bitmap_set(b2, 0) == 0);
114 assert_se(bitmap_equal(b, b2));
115
5ffa42cb
TG
116 return 0;
117}