aboutsummaryrefslogtreecommitdiff
path: root/test/src
diff options
context:
space:
mode:
Diffstat (limited to 'test/src')
-rw-r--r--test/src/test/default.c2
-rw-r--r--test/src/test/memory.c17
-rw-r--r--test/src/test/memory.h13
-rw-r--r--test/src/util/test_bits.c42
4 files changed, 66 insertions, 8 deletions
diff --git a/test/src/test/default.c b/test/src/test/default.c
index 665edbf..c695fea 100644
--- a/test/src/test/default.c
+++ b/test/src/test/default.c
@@ -6,7 +6,7 @@
#include <criterion/criterion.h>
#include <pari/pari.h>
-static void *cr_simple_calloc(size_t size) { return cr_calloc(1, size); }
+
void default_setup(void) {
pari_init(1000000, 1000000);
diff --git a/test/src/test/memory.c b/test/src/test/memory.c
new file mode 100644
index 0000000..38c75c2
--- /dev/null
+++ b/test/src/test/memory.c
@@ -0,0 +1,17 @@
+
+#include <string.h>
+#include <criterion/alloc.h>
+#include "memory.h"
+
+char *cr_strdup(const char *str) {
+ size_t len = strlen(str);
+ return cr_memdup(str, len + 1);
+}
+
+void *cr_memdup(const void *str, size_t len) {
+ void *result = cr_malloc(len);
+ memcpy(result, str, len);
+ return result;
+}
+
+void *cr_simple_calloc(size_t size) { return cr_calloc(1, size); } \ No newline at end of file
diff --git a/test/src/test/memory.h b/test/src/test/memory.h
new file mode 100644
index 0000000..d97e3cc
--- /dev/null
+++ b/test/src/test/memory.h
@@ -0,0 +1,13 @@
+
+#ifndef ECGEN_TEST_MEMORY_H
+#define ECGEN_TEST_MEMORY_H
+
+#include <stddef.h>
+
+char *cr_strdup(const char *str);
+
+void *cr_memdup(const void *str, size_t len);
+
+void *cr_simple_calloc(size_t size);
+
+#endif //ECGEN_TEST_MEMORY_H
diff --git a/test/src/util/test_bits.c b/test/src/util/test_bits.c
index 96e597d..ed88bb3 100644
--- a/test/src/util/test_bits.c
+++ b/test/src/util/test_bits.c
@@ -4,8 +4,10 @@
*/
#include <criterion/criterion.h>
+#include <criterion/parameterized.h>
#include <gen/types.h>
#include "test/default.h"
+#include "test/memory.h"
#include "util/bits.h"
#include "util/memory.h"
@@ -394,18 +396,44 @@ Test(bits, test_bits_shorten) {
bits_free(&shorter);
}
-Test(bits, test_bits_sha1) {
- char *text = "The quick brown fox jumps over the lazy dog";
- bits_t *bits = bits_from_raw((unsigned char *)text, strlen(text) * 8);
+struct sha1_params {
+ char *data;
+ unsigned char *hashout;
+};
+
+void sha1_params_cleanup(struct criterion_test_params *ctp) {
+ struct sha1_params *params = (struct sha1_params *)ctp->params;
+ cr_free(params->data);
+ cr_free(params->hashout);
+}
+
+ParameterizedTestParameters(bits, test_bits_sha1) {
+ static struct sha1_params params[5] = {};
+ params[0].data = cr_strdup("The quick brown fox jumps over the lazy dog");
+ params[0].hashout = cr_memdup("\x2f\xd4\xe1\xc6\x7a\x2d\x28\xfc\xed\x84\x9e\xe1\xbb\x76\xe7\x39\x1b\x93\xeb\x12", 20);
+ params[1].data = cr_strdup("abc");
+ params[1].hashout = cr_memdup("\xa9\x99\x3e\x36\x47\x06\x81\x6a\xba\x3e\x25\x71\x78\x50\xc2\x6c\x9c\xd0\xd8\x9d", 20);
+ params[2].data = cr_strdup("");
+ params[2].hashout = cr_memdup("\xda\x39\xa3\xee\x5e\x6b\x4b\x0d\x32\x55\xbf\xef\x95\x60\x18\x90\xaf\xd8\x07\x09", 20);
+ params[3].data = cr_strdup("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq");
+ params[3].hashout = cr_memdup("\x84\x98\x3e\x44\x1c\x3b\xd2\x6e\xba\xae\x4a\xa1\xf9\x51\x29\xe5\xe5\x46\x70\xf1", 20);
+ params[4].data = cr_strdup("abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu");
+ params[4].hashout = cr_memdup("\xa4\x9b\x24\x46\xa0\x2c\x64\x5b\xf4\x19\xf9\x95\xb6\x70\x91\x25\x3a\x04\xa2\x59", 20);
+
+ size_t nb_params = sizeof(params) / sizeof(struct sha1_params);
+ return cr_make_param_array(struct sha1_params, params, nb_params, sha1_params_cleanup);
+}
+
+ParameterizedTest(struct sha1_params *param, bits, test_bits_sha1) {
+ bits_t *bits = bits_from_raw((unsigned char *)param->data, strlen(param->data) * 8);
unsigned char hashout[20] = {};
bits_sha1(bits, hashout);
- unsigned char expected[] = {0x2f, 0xd4, 0xe1, 0xc6, 0x7a, 0x2d, 0x28,
- 0xfc, 0xed, 0x84, 0x9e, 0xe1, 0xbb, 0x76,
- 0xe7, 0x39, 0x1b, 0x93, 0xeb, 0x12};
for (size_t i = 0; i < 20; ++i) {
- cr_assert_eq(hashout[i], expected[i], );
+ cr_assert_eq(hashout[i], param->hashout[i], );
}
+
+ bits_free(&bits);
}
Test(bits, test_bits_eq) {