X-Git-Url: https://git.ozlabs.org/?p=ccan;a=blobdiff_plain;f=ccan%2Fcrcsync%2Ftest%2Fapi.c;fp=ccan%2Fcrcsync%2Ftest%2Fapi.c;h=2f07cb696e1fe2ea10516ae9b163ca2aa5406c0e;hp=ed17f8e6050e78b6bdb88e7e5a15282dbe5b57db;hb=686061a501169c08d35708010f1c7c7b0eb13d77;hpb=ee7d1a1c0bcc551acf85df893914f054bc61842d diff --git a/ccan/crcsync/test/api.c b/ccan/crcsync/test/api.c index ed17f8e6..2f07cb69 100644 --- a/ccan/crcsync/test/api.c +++ b/ccan/crcsync/test/api.c @@ -64,15 +64,36 @@ static void test_sync(const char *buffer1, size_t len1, const struct result results[], size_t num_results) { struct crc_context *ctx; - size_t used, ret, i, curr_literal = 0; + size_t used, ret, i, curr_literal; long result; uint32_t crcs[num_blocks(len1, block_size)]; crc_of_blocks(buffer1, len1, block_size, 32, crcs); + + /* Normal method. */ ctx = crc_context_new(block_size, 32, crcs, ARRAY_SIZE(crcs)); + curr_literal = 0; for (used = 0, i = 0; used < len2; used += ret) { ret = crc_read_block(ctx, &result, buffer2+used, len2-used); + check_result(result, &curr_literal, results, num_results, &i); + } + + while ((result = crc_read_flush(ctx)) != 0) + check_result(result, &curr_literal, results, num_results, &i); + + check_finalized_result(curr_literal, results, num_results, &i); + + /* We must have achieved everything we expected. */ + ok1(i == num_results); + crc_context_free(ctx); + + /* Byte-at-a-time method. */ + ctx = crc_context_new(block_size, 32, crcs, ARRAY_SIZE(crcs)); + + curr_literal = 0; + for (used = 0, i = 0; used < len2; used += ret) { + ret = crc_read_block(ctx, &result, buffer2+used, 1); check_result(result, &curr_literal, results, num_results, &i); } @@ -93,7 +114,7 @@ int main(int argc, char *argv[]) unsigned int i; uint32_t crcs1[12], crcs2[12]; - plan_tests(733); + plan_tests(1454); buffer1 = calloc(1024, 1); buffer2 = calloc(1024, 1);