nl80211: Add a handler to create_interface
[mech_eap.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 }