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