]> git.ozlabs.org Git - ccan/blob - ccan/alloc/test/run-tiny-encode.c
alloc: reduce number of large pages to 256.
[ccan] / ccan / alloc / test / run-tiny-encode.c
1 #include <ccan/tap/tap.h>
2 #include "config.h"
3 #include <ccan/alloc/tiny.c>
4 #include <ccan/alloc/bitops.c>
5 #include <stdlib.h>
6 #include <err.h>
7
8 /* Test encoding and decoding. */
9 #define ARR_SIZE 10
10
11 int main(void)
12 {
13         unsigned char array[ARR_SIZE];
14         unsigned int i, prev;
15
16         plan_tests(405);
17
18         prev = 0;
19         /* Test encode_length */
20         for (i = 1; i < 0x8000000; i *= 2) {
21                 ok1(encode_length(i-1) >= prev);
22                 ok1(encode_length(i) >= encode_length(i-1));
23                 ok1(encode_length(i+1) >= encode_length(i));
24                 prev = encode_length(i);
25         }
26
27         /* Test it against actual encoding return val. */
28         for (i = 1; i < 0x8000000; i *= 2) {
29                 ok1(encode_length(i-1) == encode(i - 1 + MIN_BLOCK_SIZE,
30                                                  false, array));
31                 ok1(encode_length(i) == encode(i + MIN_BLOCK_SIZE,
32                                                false, array));
33                 ok1(encode_length(i+1) == encode(i + 1 + MIN_BLOCK_SIZE,
34                                                  false, array));
35         }
36
37         /* Test encoder vs. decoder. */
38         for (i = 1; i < 0x8000000; i *= 2) {
39                 unsigned long hdrlen, len;
40                 bool free;
41
42                 hdrlen = encode(i - 1 + MIN_BLOCK_SIZE, false, array);
43                 ok1(decode(&len, &free, array) == hdrlen);
44                 ok1(len == i - 1 + MIN_BLOCK_SIZE);
45                 ok1(free == false);
46
47                 hdrlen = encode(i + MIN_BLOCK_SIZE, true, array);
48                 ok1(decode(&len, &free, array) == hdrlen);
49                 ok1(len == i + MIN_BLOCK_SIZE);
50                 ok1(free == true);
51
52                 hdrlen = encode(i + 1 + MIN_BLOCK_SIZE, true, array);
53                 ok1(decode(&len, &free, array) == hdrlen);
54                 ok1(len == i + 1 + MIN_BLOCK_SIZE);
55                 ok1(free == true);
56         }
57
58         return exit_status();
59 }