]> git.proxmox.com Git - libgit2.git/blame - tests/core/bitvec.c
New upstream version 1.4.3+dfsg.1
[libgit2.git] / tests / core / bitvec.c
CommitLineData
6fc5a581
RB
1#include "clar_libgit2.h"
2#include "bitvec.h"
3
4#if 0
5static void print_bitvec(git_bitvec *bv)
6{
7 int b;
8
9 if (!bv->length) {
10 for (b = 63; b >= 0; --b)
11 fprintf(stderr, "%d", (bv->u.bits & (1ul << b)) ? 1 : 0);
12 } else {
13 for (b = bv->length * 8; b >= 0; --b)
14 fprintf(stderr, "%d", (bv->u.ptr[b >> 3] & (b & 0x0ff)) ? 1 : 0);
15 }
16 fprintf(stderr, "\n");
17}
18#endif
19
20static void set_some_bits(git_bitvec *bv, size_t length)
21{
22 size_t i;
23
24 for (i = 0; i < length; ++i) {
25 if (i % 3 == 0 || i % 7 == 0)
26 git_bitvec_set(bv, i, true);
27 }
28}
29
30static void check_some_bits(git_bitvec *bv, size_t length)
31{
32 size_t i;
33
34 for (i = 0; i < length; ++i)
35 cl_assert_equal_b(i % 3 == 0 || i % 7 == 0, git_bitvec_get(bv, i));
36}
37
38void test_core_bitvec__0(void)
39{
40 git_bitvec bv;
41
42 cl_git_pass(git_bitvec_init(&bv, 32));
43 set_some_bits(&bv, 16);
44 check_some_bits(&bv, 16);
45 git_bitvec_clear(&bv);
46 set_some_bits(&bv, 32);
47 check_some_bits(&bv, 32);
48 git_bitvec_clear(&bv);
49 set_some_bits(&bv, 64);
50 check_some_bits(&bv, 64);
51 git_bitvec_free(&bv);
52
53 cl_git_pass(git_bitvec_init(&bv, 128));
54 set_some_bits(&bv, 32);
55 check_some_bits(&bv, 32);
56 set_some_bits(&bv, 128);
57 check_some_bits(&bv, 128);
58 git_bitvec_free(&bv);
59
60 cl_git_pass(git_bitvec_init(&bv, 4000));
61 set_some_bits(&bv, 4000);
62 check_some_bits(&bv, 4000);
63 git_bitvec_free(&bv);
64}