1 #include <stdio.h>
2 #include <time.h>
3
4 #include "bitvec.h"
5 #include "test_macros.h"
6
7 int
main(int argc,char * argv[])8 main(int argc, char *argv[])
9 {
10 bitvec_t *bv;
11 int i, j;
12 clock_t c;
13
14 TEST_ASSERT(bv = bitvec_alloc(199));
15 bitvec_set(bv,198);
16 bitvec_set(bv,0);
17 bitvec_set(bv,42);
18 bitvec_set(bv,43);
19 bitvec_set(bv,44);
20 TEST_ASSERT(bitvec_is_set(bv,198));
21 TEST_ASSERT(bitvec_is_set(bv,0));
22 TEST_ASSERT(bitvec_is_set(bv,42));
23 TEST_ASSERT(bitvec_is_set(bv,43));
24 TEST_ASSERT(bitvec_is_set(bv,44));
25 TEST_EQUAL(5, bitvec_count_set(bv, 199));
26 bitvec_clear(bv, 43);
27 TEST_EQUAL(0, bitvec_is_set(bv,43));
28
29 c = clock();
30 for (j = 0; j < 1000000; ++j)
31 bitvec_count_set(bv, 199);
32 c = clock() - c;
33 printf("1000000 * 199 bitvec_count_set in %.2f sec\n",
34 (double)c / CLOCKS_PER_SEC);
35 bitvec_free(bv);
36
37 bv = bitvec_alloc(1314);
38 c = clock();
39 for (j = 0; j < 50000; ++j)
40 for (i = 0; i < 1314; ++i)
41 bitvec_set(bv, i);
42 c = clock() - c;
43 printf("50000 * 1314 bitvec_set in %.2f sec\n",
44 (double)c / CLOCKS_PER_SEC);
45 bitvec_free(bv);
46
47 /* Test realloc */
48 bv = bitvec_alloc(13);
49 for (i = 1; i < 13; i+=2)
50 bitvec_set(bv, i);
51 printf("Bits set %d\n", bitvec_count_set(bv, 13));
52 TEST_EQUAL(6, bitvec_count_set(bv, 13));
53 bv = bitvec_realloc(bv, 13, 2000);
54 for (i = 0; i < 2000; i++) {
55 // printf("%d %d\n", i, bitvec_is_set(bv, i) != 0);
56 }
57 printf("Bits set after realloc %d\n", bitvec_count_set(bv, 2000));
58 TEST_EQUAL(6, bitvec_count_set(bv, 2000));
59 bitvec_free(bv);
60
61 return 0;
62 }
63