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