updated to 64bit crc version of ccan crc
[httpd-crcsyncproxy.git] / ccan / crcsync / test / run-roll.c
bloba07a450683197a8d6028f88b5832e4cefe2a6294
1 #include "crcsync/crcsync.h"
2 #include "crcsync/crcsync.c"
3 #include "tap/tap.h"
4 #include <stdlib.h>
5 #include <stdbool.h>
7 /* FIXME: ccanize. */
8 #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))
10 static void test_roll(unsigned int wsize)
12 uint8_t data[wsize * 2];
13 uint64_t uncrc_tab[256];
14 unsigned int i;
16 init_uncrc_tab(uncrc_tab, wsize);
18 for (i = 0; i < ARRAY_SIZE(data); i++)
19 data[i] = random();
21 for (i = 1; i < ARRAY_SIZE(data) - wsize; i++) {
22 uint64_t rollcrc, crc;
24 crc = crc64_iso(0, data+i, wsize);
25 rollcrc = crc_roll(crc64_iso(0, data+i-1, wsize),
26 data[i-1], data[i+wsize-1], uncrc_tab);
28 ok(crc == rollcrc, "wsize %u, i %u", wsize, i);
32 int main(int argc, char *argv[])
34 plan_tests(100 - 1 + 128 - 1);
35 test_roll(100);
36 test_roll(128);
37 return exit_status();