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