X-Git-Url: https://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Fcrcsync%2Ftest%2Frun-crc.c;fp=ccan%2Fcrcsync%2Ftest%2Frun-crc.c;h=0325cce045ec46e6af1a3652fad7b8d0d619f955;hp=0000000000000000000000000000000000000000;hb=94ff9fc87d90173145772a41f79987988f9f0972;hpb=c6a86ac78efbec284b444876a9ea2fbbf7e48033 diff --git a/ccan/crcsync/test/run-crc.c b/ccan/crcsync/test/run-crc.c new file mode 100644 index 00000000..0325cce0 --- /dev/null +++ b/ccan/crcsync/test/run-crc.c @@ -0,0 +1,36 @@ +#include "crcsync/crcsync.h" +#include "crcsync/crcsync.c" +#include "tap/tap.h" + +int main(int argc, char *argv[]) +{ + char buffer[1024]; + unsigned int i, j; + uint32_t crcs[12] = { 0xFFFFF, 0xdeadf00d }; + + plan_tests(3 + 8192); + + /* Simple test (we know currently crc of 0s is 0) */ + memset(buffer, 0, sizeof(buffer)); + crc_of_blocks(buffer, sizeof(buffer), sizeof(buffer), 32, crcs); + ok1(crcs[0] == 0); + crc_of_blocks(buffer, sizeof(buffer), sizeof(buffer)/2, 32, crcs); + ok1(crcs[0] == 0); + ok1(crcs[1] == 0); + + /* We know they're using crc32c. */ + for (i = 0; i < sizeof(buffer); i++) { + buffer[i] = i; + crc_of_blocks(buffer, sizeof(buffer), sizeof(buffer)/7, + 32, crcs); + for (j = 0; j < sizeof(buffer); j += sizeof(buffer)/7) { + unsigned int len = sizeof(buffer)/7; + if (j + len > sizeof(buffer)) + len = sizeof(buffer) - j; + + ok1(crc32c(0, buffer + j, len) == crcs[j/(sizeof(buffer)/7)]); + } + } + + return exit_status(); +}