Commit a5472f05 authored by Jon Griffiths's avatar Jon Griffiths

sha256: Simplify test

We can use the iteration count in the test case to determine
whether a single call is required. This simplifies the code and
also means that we don't overstate the actual number of tests
performed by a factor of 2. Simplify a couple of expressions
while we are changing this.
parent e05d1ff2
...@@ -45,15 +45,13 @@ static struct test tests[] = { ...@@ -45,15 +45,13 @@ static struct test tests[] = {
#endif #endif
}; };
static bool do_test(const struct test *t, bool single) static bool do_test(const struct test *t)
{ {
struct sha256 h; struct sha256 h;
if (single) { if (t->repetitions == 1)
if (t->repetitions != 1)
return true;
sha256(&h, t->test, strlen(t->test)); sha256(&h, t->test, strlen(t->test));
} else { else {
struct sha256_ctx ctx = SHA256_INIT; struct sha256_ctx ctx = SHA256_INIT;
size_t i; size_t i;
...@@ -62,7 +60,7 @@ static bool do_test(const struct test *t, bool single) ...@@ -62,7 +60,7 @@ static bool do_test(const struct test *t, bool single)
sha256_done(&ctx, &h); sha256_done(&ctx, &h);
} }
return memcmp(&h.u, t->result, sizeof(t->result)) == 0; return memcmp(&h, t->result, sizeof(h)) == 0;
} }
int main(void) int main(void)
...@@ -70,13 +68,10 @@ int main(void) ...@@ -70,13 +68,10 @@ int main(void)
size_t i; size_t i;
/* This is how many tests you plan to run */ /* This is how many tests you plan to run */
plan_tests(sizeof(tests) / sizeof(struct test) * 2); plan_tests(sizeof(tests) / sizeof(tests[0]));
for (i = 0; i < sizeof(tests) / sizeof(struct test); i++) for (i = 0; i < sizeof(tests) / sizeof(tests[0]); i++)
ok1(do_test(&tests[i], false)); ok1(do_test(&tests[i]));
for (i = 0; i < sizeof(tests) / sizeof(struct test); i++)
ok1(do_test(&tests[i], true));
/* This exits depending on whether all tests passed */ /* This exits depending on whether all tests passed */
return exit_status(); return exit_status();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment