1 
2 #include <stdio.h>
3 
4 #include <schroedinger/schro.h>
5 
6 void
dump_bits(SchroBits * bits,int n)7 dump_bits (SchroBits *bits, int n)
8 {
9   int i;
10 
11   for(i=0;i<n*8;i++){
12     printf(" %d", (bits->buffer->data[(i>>3)] >> (7 - (i&7))) & 1);
13   }
14   printf(" (%d bytes)\n", n);
15 }
16 
17 
18 int
main(int argc,char * argv[])19 main (int argc, char *argv[])
20 {
21   int i;
22   SchroBuffer *buffer = schro_buffer_new_and_alloc (100);
23   SchroBits *bits;
24   int value;
25   int fail = 0;
26   int n;
27 
28   schro_init();
29 
30   printf("unsigned int\n");
31   for(i=0;i<21;i++) {
32     bits = schro_bits_new();
33     schro_bits_encode_init (bits, buffer);
34     schro_bits_encode_uint(bits,i);
35     schro_bits_flush (bits);
36     n = schro_bits_get_offset (bits);
37     schro_bits_free (bits);
38 
39     bits = schro_bits_new();
40     schro_bits_decode_init (bits, buffer);
41     printf("%3d:", i);
42     dump_bits (bits, n);
43     value = schro_bits_decode_uint (bits);
44     if (value != i) {
45       printf("decode failed (%d != %d)\n", value, i);
46       fail = 1;
47     }
48     schro_bits_free (bits);
49   }
50   printf("\n");
51 
52   printf("signed int\n");
53   for(i=-5;i<6;i++) {
54     bits = schro_bits_new();
55     schro_bits_encode_init (bits, buffer);
56     schro_bits_encode_sint(bits,i);
57     schro_bits_flush (bits);
58     n = schro_bits_get_offset (bits);
59     schro_bits_free (bits);
60 
61     bits = schro_bits_new();
62     schro_bits_decode_init (bits, buffer);
63     printf("%3d:", i);
64     dump_bits (bits, n);
65     value = schro_bits_decode_sint (bits);
66     if (value != i) {
67       printf("decode failed (%d != %d)\n", value, i);
68       fail = 1;
69     }
70     schro_bits_free (bits);
71   }
72   printf("\n");
73 
74   return fail;
75 }
76 
77 
78 
79