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.
-static bool do_test(const struct test *t, bool single)
+static bool do_test(const struct test *t)
- if (single) {
- if (t->repetitions != 1)
- return true;
+ if (t->repetitions == 1)
sha256(&h, t->test, strlen(t->test));
sha256(&h, t->test, strlen(t->test));
struct sha256_ctx ctx = SHA256_INIT;
size_t i;
struct sha256_ctx ctx = SHA256_INIT;
size_t i;
- return memcmp(&h.u, t->result, sizeof(t->result)) == 0;
+ return memcmp(&h, t->result, sizeof(h)) == 0;
size_t i;
/* This is how many tests you plan to run */
size_t i;
/* 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++)
- ok1(do_test(&tests[i], false));
-
- for (i = 0; i < sizeof(tests) / sizeof(struct test); i++)
- ok1(do_test(&tests[i], true));
+ for (i = 0; i < sizeof(tests) / sizeof(tests[0]); i++)
+ ok1(do_test(&tests[i]));
/* This exits depending on whether all tests passed */
return exit_status();
/* This exits depending on whether all tests passed */
return exit_status();