| /* |
| * bitfield unit tests |
| * Copyright (c) 2013, Jouni Malinen <j@w1.fi> |
| * |
| * This software may be distributed under the terms of the BSD license. |
| * See README for more details. |
| */ |
| |
| #include "utils/includes.h" |
| #include "utils/bitfield.h" |
| |
| int main(int argc, char *argv[]) |
| { |
| struct bitfield *bf; |
| int i; |
| int errors = 0; |
| |
| bf = bitfield_alloc(123); |
| if (bf == NULL) |
| return -1; |
| |
| for (i = 0; i < 123; i++) { |
| if (bitfield_is_set(bf, i) || bitfield_is_set(bf, i + 1)) |
| errors++; |
| if (i > 0 && bitfield_is_set(bf, i - 1)) |
| errors++; |
| bitfield_set(bf, i); |
| if (!bitfield_is_set(bf, i)) |
| errors++; |
| bitfield_clear(bf, i); |
| if (bitfield_is_set(bf, i)) |
| errors++; |
| } |
| |
| for (i = 123; i < 200; i++) { |
| if (bitfield_is_set(bf, i) || bitfield_is_set(bf, i + 1)) |
| errors++; |
| if (i > 0 && bitfield_is_set(bf, i - 1)) |
| errors++; |
| bitfield_set(bf, i); |
| if (bitfield_is_set(bf, i)) |
| errors++; |
| bitfield_clear(bf, i); |
| if (bitfield_is_set(bf, i)) |
| errors++; |
| } |
| |
| for (i = 0; i < 123; i++) { |
| if (bitfield_is_set(bf, i) || bitfield_is_set(bf, i + 1)) |
| errors++; |
| bitfield_set(bf, i); |
| if (!bitfield_is_set(bf, i)) |
| errors++; |
| } |
| |
| for (i = 0; i < 123; i++) { |
| if (!bitfield_is_set(bf, i)) |
| errors++; |
| bitfield_clear(bf, i); |
| if (bitfield_is_set(bf, i)) |
| errors++; |
| } |
| |
| for (i = 0; i < 123; i++) { |
| if (bitfield_get_first_zero(bf) != i) |
| errors++; |
| bitfield_set(bf, i); |
| } |
| if (bitfield_get_first_zero(bf) != -1) |
| errors++; |
| for (i = 0; i < 123; i++) { |
| if (!bitfield_is_set(bf, i)) |
| errors++; |
| bitfield_clear(bf, i); |
| if (bitfield_get_first_zero(bf) != i) |
| errors++; |
| bitfield_set(bf, i); |
| } |
| if (bitfield_get_first_zero(bf) != -1) |
| errors++; |
| |
| bitfield_free(bf); |
| |
| if (errors) { |
| printf("%d test(s) failed\n", errors); |
| return -1; |
| } |
| |
| return 0; |
| } |