c-multihash/tests/c/test_hashes_length.c
Jakub Sztandera 171bddef0a change how hashes are defined from enum to define
this way the mapping between hashcodes and hash definitions isn't needed
also it simplfies handling, testing  and allows to return error with
the hash code
2016-07-31 15:43:43 +01:00

47 lines
1.1 KiB
C

#include <string.h>
#include "minunit.h"
#include "mh/errors.h"
#include "mh/hashes.h"
char error_buf[256];
static char *test_all_hashes_have_lengths(void) {
int i = 0;
int length = 0;
for (; i < MH_H_COUNT; i++) {
length = mh_hash_default_length(i);
sprintf(error_buf, "mh_hash_default_length: hash %d"
" returned invalid (%d) default length",
i, length);
mu_assert(error_buf, length > 0);
}
return NULL;
}
static char *test_error_when_out_of_bands(void) {
mu_assert("out of bands index should give error",
mh_hash_default_length(1 << 20) == MH_E_UNKNOWN_CODE);
return NULL;
}
static char *test_lengths_are_correct_for_known_codes(void) {
#define hlen mh_hash_default_length
mu_assert("sha1 has valid length", hlen(MH_H_SHA1) == 20);
mu_assert("sha3-512 has valid length", hlen(MH_H_SHA3_256) == 32);
mu_assert("shake-128 has valid length", hlen(MH_H_SHAKE_128) == 16);
#undef hlen
return NULL;
}
static char *mu_all_tests(void) {
mu_run_test(test_all_hashes_have_lengths);
mu_run_test(test_error_when_out_of_bands);
mu_run_test(test_lengths_are_correct_for_known_codes);
return NULL;
}