X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Fcrypto%2Fshachain%2Ftest%2Frun.c;h=c7b4035a21ffb3f6d31289834538242eaec7a7de;hb=8ad6ab9ce9b78c6b28b727b11d571d11856479c6;hp=16fc5e871cf3149df0f62c50880165fb18890aea;hpb=9fc07111603c6e892ed768f900465282314b2982;p=ccan diff --git a/ccan/crypto/shachain/test/run.c b/ccan/crypto/shachain/test/run.c index 16fc5e87..c7b4035a 100644 --- a/ccan/crypto/shachain/test/run.c +++ b/ccan/crypto/shachain/test/run.c @@ -10,32 +10,38 @@ int main(void) struct sha256 seed; struct shachain chain; struct sha256 expect[NUM_TESTS]; - size_t i, j; + uint64_t i, j; /* This is how many tests you plan to run */ - plan_tests(NUM_TESTS * 3 + NUM_TESTS * (NUM_TESTS + 1)); + plan_tests(NUM_TESTS * 4 + NUM_TESTS * (NUM_TESTS + 1) - 1); memset(&seed, 0, sizeof(seed)); /* Generate a whole heap. */ - for (i = 0; i < NUM_TESTS; i++) { - shachain_from_seed(&seed, i, &expect[i]); - if (i == 0) - ok1(memcmp(&expect[i], &seed, sizeof(expect[i]))); - else - ok1(memcmp(&expect[i], &expect[i-1], sizeof(expect[i]))); + for (i = 0xFFFFFFFFFFFFFFFFULL; + i > 0xFFFFFFFFFFFFFFFFULL - NUM_TESTS; + i--) { + int expidx = 0xFFFFFFFFFFFFFFFFULL - i; + shachain_from_seed(&seed, i, &expect[expidx]); + if (i != 0xFFFFFFFFFFFFFFFFULL) + ok1(memcmp(&expect[expidx], &expect[expidx-1], + sizeof(expect[expidx]))); } shachain_init(&chain); - for (i = 0; i < NUM_TESTS; i++) { + for (i = 0xFFFFFFFFFFFFFFFFULL; + i > 0xFFFFFFFFFFFFFFFFULL - NUM_TESTS; + i--) { struct sha256 hash; - - ok1(shachain_add_hash(&chain, i, &expect[i])); - for (j = 0; j <= i; j++) { + int expidx = 0xFFFFFFFFFFFFFFFFULL - i; + ok1(shachain_next_index(&chain) == i); + ok1(shachain_add_hash(&chain, i, &expect[expidx])); + for (j = i; j != 0; j++) { ok1(shachain_get_hash(&chain, j, &hash)); - ok1(memcmp(&hash, &expect[j], sizeof(hash)) == 0); + expidx = 0xFFFFFFFFFFFFFFFFULL - j; + ok1(memcmp(&hash, &expect[expidx], sizeof(hash)) == 0); } - ok1(!shachain_get_hash(&chain, i+1, &hash)); + ok1(!shachain_get_hash(&chain, i-1, &hash)); } return exit_status();