Implement 'find similar page'. Fix some small bug
[httpd-crcsyncproxy.git] / crccache / test_hash_small_invokations.c
blob5cbbd1d6342cda74ba75895d07afd0df3ca6c053
1 #include <sys/types.h>
2 #include <crcsync/crcsync.h>
3 #include <stdio.h>
4 #include <string.h>
7 void validate(struct crc_context *crcctx)
9 char *getpos = "XXXXXX0123XXXXXXXXXX456789ABXCDEFZZX"; // same data but starting with two mismatch characters
10 ssize_t remaining = strlen(getpos);
11 long rd_block_rslt;
12 while (remaining != 0)
14 size_t ndigested = crc_read_block(crcctx, &rd_block_rslt, getpos, (remaining > 3) ? 3: remaining);
15 printf("read block rslt: %ld, ndigested: %zd\n", rd_block_rslt, ndigested);
16 getpos += ndigested;
17 remaining -= ndigested;
19 rd_block_rslt = crc_read_flush(crcctx);
20 printf("flush rslt: %ld\n", rd_block_rslt);
21 crc_reset_running_crcs(crcctx);
24 int main(int argc, char *argv[])
26 char *tstdata = "0123456789ABCDEFZ";
27 size_t nblocks = 4;
28 uint64_t hashes[nblocks];
29 size_t datalen = strlen(tstdata);
30 size_t block_size = datalen/nblocks;
31 size_t tail_size = block_size + datalen%nblocks;
32 crc_of_blocks(tstdata, datalen, block_size, tail_size, 64, hashes); // set-up hashes
35 printf("block_size: %zd, tail_size: %zd, nblocks: %zd\n", block_size, tail_size, nblocks);
36 struct crc_context *crcctx = crc_context_new(block_size, 64, hashes, nblocks, tail_size);
37 printf("context initialized\n");
39 validate(crcctx);
40 validate(crcctx);
42 crc_context_free(crcctx);
45 return 0;