]> git.ipfire.org Git - thirdparty/hostap.git/blob - tests/test-bitfield.c
tests: Add test cases for Fast BSS Transition
[thirdparty/hostap.git] / tests / test-bitfield.c
1 /*
2 * bitfield unit tests
3 * Copyright (c) 2013, Jouni Malinen <j@w1.fi>
4 *
5 * This software may be distributed under the terms of the BSD license.
6 * See README for more details.
7 */
8
9 #include "utils/includes.h"
10 #include "utils/bitfield.h"
11
12 int main(int argc, char *argv[])
13 {
14 struct bitfield *bf;
15 int i;
16 int errors = 0;
17
18 bf = bitfield_alloc(123);
19 if (bf == NULL)
20 return -1;
21
22 for (i = 0; i < 123; i++) {
23 if (bitfield_is_set(bf, i) || bitfield_is_set(bf, i + 1))
24 errors++;
25 if (i > 0 && bitfield_is_set(bf, i - 1))
26 errors++;
27 bitfield_set(bf, i);
28 if (!bitfield_is_set(bf, i))
29 errors++;
30 bitfield_clear(bf, i);
31 if (bitfield_is_set(bf, i))
32 errors++;
33 }
34
35 for (i = 123; i < 200; i++) {
36 if (bitfield_is_set(bf, i) || bitfield_is_set(bf, i + 1))
37 errors++;
38 if (i > 0 && bitfield_is_set(bf, i - 1))
39 errors++;
40 bitfield_set(bf, i);
41 if (bitfield_is_set(bf, i))
42 errors++;
43 bitfield_clear(bf, i);
44 if (bitfield_is_set(bf, i))
45 errors++;
46 }
47
48 for (i = 0; i < 123; i++) {
49 if (bitfield_is_set(bf, i) || bitfield_is_set(bf, i + 1))
50 errors++;
51 bitfield_set(bf, i);
52 if (!bitfield_is_set(bf, i))
53 errors++;
54 }
55
56 for (i = 0; i < 123; i++) {
57 if (!bitfield_is_set(bf, i))
58 errors++;
59 bitfield_clear(bf, i);
60 if (bitfield_is_set(bf, i))
61 errors++;
62 }
63
64 for (i = 0; i < 123; i++) {
65 if (bitfield_get_first_zero(bf) != i)
66 errors++;
67 bitfield_set(bf, i);
68 }
69 if (bitfield_get_first_zero(bf) != -1)
70 errors++;
71 for (i = 0; i < 123; i++) {
72 if (!bitfield_is_set(bf, i))
73 errors++;
74 bitfield_clear(bf, i);
75 if (bitfield_get_first_zero(bf) != i)
76 errors++;
77 bitfield_set(bf, i);
78 }
79 if (bitfield_get_first_zero(bf) != -1)
80 errors++;
81
82 bitfield_free(bf);
83
84 if (errors) {
85 printf("%d test(s) failed\n", errors);
86 return -1;
87 }
88
89 return 0;
90 }