1 #include <ccan/crypto/shachain/shachain.h>
2 /* Include the C files directly. */
3 #include <ccan/crypto/shachain/shachain.c>
4 #include <ccan/tap/tap.h>
11 struct shachain chain;
12 struct sha256 expect[NUM_TESTS];
15 /* This is how many tests you plan to run */
16 plan_tests(NUM_TESTS + NUM_TESTS * (NUM_TESTS + 1) + NUM_TESTS);
18 memset(&seed, 0, sizeof(seed));
19 /* Generate a whole heap. */
20 for (i = 0; i < NUM_TESTS; i++) {
21 shachain_from_seed(&seed, i, &expect[i]);
23 ok1(memcmp(&expect[i], &seed, sizeof(expect[i])));
25 ok1(memcmp(&expect[i], &expect[i-1], sizeof(expect[i])));
28 shachain_init(&chain);
30 for (i = 0; i < NUM_TESTS; i++) {
33 shachain_add_hash(&chain, i, &expect[i]);
34 for (j = 0; j <= i; j++) {
35 ok1(shachain_get_hash(&chain, j, &hash));
36 ok1(memcmp(&hash, &expect[j], sizeof(hash)) == 0);
38 ok1(!shachain_get_hash(&chain, i+1, &hash));