test-bitfield.c 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  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. #include "utils/includes.h"
  9. #include "utils/bitfield.h"
  10. int main(int argc, char *argv[])
  11. {
  12. struct bitfield *bf;
  13. int i;
  14. int errors = 0;
  15. bf = bitfield_alloc(123);
  16. if (bf == NULL)
  17. return -1;
  18. for (i = 0; i < 123; i++) {
  19. if (bitfield_is_set(bf, i) || bitfield_is_set(bf, i + 1))
  20. errors++;
  21. if (i > 0 && bitfield_is_set(bf, i - 1))
  22. errors++;
  23. bitfield_set(bf, i);
  24. if (!bitfield_is_set(bf, i))
  25. errors++;
  26. bitfield_clear(bf, i);
  27. if (bitfield_is_set(bf, i))
  28. errors++;
  29. }
  30. for (i = 123; i < 200; i++) {
  31. if (bitfield_is_set(bf, i) || bitfield_is_set(bf, i + 1))
  32. errors++;
  33. if (i > 0 && bitfield_is_set(bf, i - 1))
  34. errors++;
  35. bitfield_set(bf, i);
  36. if (bitfield_is_set(bf, i))
  37. errors++;
  38. bitfield_clear(bf, i);
  39. if (bitfield_is_set(bf, i))
  40. errors++;
  41. }
  42. for (i = 0; i < 123; i++) {
  43. if (bitfield_is_set(bf, i) || bitfield_is_set(bf, i + 1))
  44. errors++;
  45. bitfield_set(bf, i);
  46. if (!bitfield_is_set(bf, i))
  47. errors++;
  48. }
  49. for (i = 0; i < 123; i++) {
  50. if (!bitfield_is_set(bf, i))
  51. errors++;
  52. bitfield_clear(bf, i);
  53. if (bitfield_is_set(bf, i))
  54. errors++;
  55. }
  56. for (i = 0; i < 123; i++) {
  57. if (bitfield_get_first_zero(bf) != i)
  58. errors++;
  59. bitfield_set(bf, i);
  60. }
  61. if (bitfield_get_first_zero(bf) != -1)
  62. errors++;
  63. for (i = 0; i < 123; i++) {
  64. if (!bitfield_is_set(bf, i))
  65. errors++;
  66. bitfield_clear(bf, i);
  67. if (bitfield_get_first_zero(bf) != i)
  68. errors++;
  69. bitfield_set(bf, i);
  70. }
  71. if (bitfield_get_first_zero(bf) != -1)
  72. errors++;
  73. bitfield_free(bf);
  74. if (errors) {
  75. printf("%d test(s) failed\n", errors);
  76. return -1;
  77. }
  78. return 0;
  79. }