summaryrefslogtreecommitdiff
path: root/test/src
diff options
context:
space:
mode:
Diffstat (limited to 'test/src')
-rw-r--r--test/src/exhaustive/test_ansi.c286
-rw-r--r--test/src/gen/test_point.c2
-rw-r--r--test/src/io/test_cli.c25
-rw-r--r--test/src/io/test_input.c54
-rw-r--r--test/src/math/test_subgroups.c2
-rw-r--r--test/src/test/default.c (renamed from test/src/test/utils.c)8
-rw-r--r--test/src/test/default.h (renamed from test/src/test/utils.h)6
-rw-r--r--test/src/test/input.c27
-rw-r--r--test/src/test/input.h16
-rw-r--r--test/src/test/memory.c17
-rw-r--r--test/src/test/memory.h13
-rw-r--r--test/src/test/output.c49
-rw-r--r--test/src/test/output.h18
-rw-r--r--test/src/util/test_bits.c486
-rw-r--r--test/src/util/test_random.c16
15 files changed, 959 insertions, 66 deletions
diff --git a/test/src/exhaustive/test_ansi.c b/test/src/exhaustive/test_ansi.c
new file mode 100644
index 0000000..4217a15
--- /dev/null
+++ b/test/src/exhaustive/test_ansi.c
@@ -0,0 +1,286 @@
+/*
+ * ecgen, tool for generating Elliptic curve domain parameters
+ * Copyright (C) 2017 J08nY
+ */
+
+#include <criterion/criterion.h>
+#include <criterion/parameterized.h>
+#include "misc/types.h"
+#include "math/poly.h"
+#include "exhaustive/ansi.h"
+#include "gen/seed.h"
+#include "gen/field.h"
+#include "test/default.h"
+#include "test/memory.h"
+#include "test/input.h"
+#include "test/output.h"
+#include "util/bits.h"
+#include "util/memory.h"
+
+void ansi_suite_setup(void) {
+ default_setup();
+ input_setup();
+ output_setup();
+}
+
+void ansi_suite_teardown(void) {
+ default_teardown();
+ input_teardown();
+ output_teardown();
+}
+
+TestSuite(ansi, .init = ansi_suite_setup, .fini = ansi_suite_teardown);
+
+Test(ansi, test_seed_random) {
+ curve_t curve = {};
+ config_t cfg = {.bits = 256};
+ int ret = ansi_gen_seed_random(&curve, &cfg, NULL);
+
+ cr_assert_eq(ret, 1, );
+ cr_assert_not_null(curve.seed, );
+
+ seed_free(&curve.seed);
+}
+
+Test(ansi, test_seed_argument) {
+ curve_t curve = {};
+ char *seed = "abcdefabcdefabcdefabcdefabcdefabcdefabcd";
+ config_t cfg = {.seed = seed, .bits = 256};
+ int ret = ansi_gen_seed_argument(&curve, &cfg, NULL);
+
+ cr_assert_eq(ret, 1, );
+ cr_assert_not_null(curve.seed, );
+ char *hex = bits_to_hex(curve.seed->seed);
+ cr_assert_str_eq(hex, seed, );
+
+ try_free(hex);
+ seed_free(&curve.seed);
+}
+
+Test(ansi, test_seed_argument_hex) {
+ curve_t curve = {};
+ char *seed = "0xabcdefabcdefabcdefabcdefabcdefabcdefabcd";
+ config_t cfg = {.seed = seed, .bits = 256};
+ int ret = ansi_gen_seed_argument(&curve, &cfg, NULL);
+
+ cr_assert_eq(ret, 1, );
+ cr_assert_not_null(curve.seed, );
+ char *hex = bits_to_hex(curve.seed->seed);
+ cr_assert_str_eq(hex, seed + 2, );
+
+ try_free(hex);
+ seed_free(&curve.seed);
+}
+
+Test(ansi, test_seed_input) {
+ curve_t curve = {};
+ char *seed = "abcdefabcdefabcdefabcdefabcdefabcdefabcd";
+ config_t cfg = {.bits = 256};
+ fprintf(write_in, "%s\n", seed);
+ int ret = ansi_gen_seed_input(&curve, &cfg, NULL);
+
+ cr_assert_eq(ret, 1, );
+ cr_assert_not_null(curve.seed, );
+ char *hex = bits_to_hex(curve.seed->seed);
+ cr_assert_str_eq(hex, seed, );
+
+ try_free(hex);
+ seed_free(&curve.seed);
+}
+
+Test(ansi, test_seed_input_short) {
+ curve_t curve = {};
+ char *seed = "abcdef";
+ config_t cfg = {};
+ fprintf(write_in, "%s\n", seed);
+ int ret = ansi_gen_seed_input(&curve, &cfg, NULL);
+
+ cr_assert_eq(ret, 0, );
+}
+
+struct prime_params {
+ size_t bits;
+ char *p;
+ char *seed;
+ char *r;
+ char *a;
+ char *b;
+};
+
+void prime_params_cleanup(struct criterion_test_params *ctp) {
+ struct prime_params *params = (struct prime_params *)ctp->params;
+ cr_free(params->p);
+ cr_free(params->seed);
+ cr_free(params->r);
+ cr_free(params->a);
+ cr_free(params->b);
+}
+
+ParameterizedTestParameters(ansi, test_seed_prime_examples) {
+ static struct prime_params params[7] = {};
+ // Taken from ANSI X9.62 J.5.1 - J.5.3; p. 115 - 117
+ params[0].bits = 192;
+ params[0].p = cr_strdup("fffffffffffffffffffffffffffffffeffffffffffffffff");
+ params[0].seed = cr_strdup("3045AE6FC8422F64ED579528D38120EAE12196D5");
+ params[0].r = cr_strdup("3099D2BBBFCB2538542DCD5FB078B6EF5F3D6FE2C745DE65");
+ params[0].a = cr_strdup("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC");
+ params[0].b = cr_strdup("64210519E59C80E70FA7E9AB72243049FEB8DEECC146B9B1");
+ params[1].bits = 192;
+ params[1].p = cr_strdup("fffffffffffffffffffffffffffffffeffffffffffffffff");
+ params[1].seed = cr_strdup("31A92EE2029FD10D901B113E990710F0D21AC6B6");
+ params[1].r = cr_strdup("15038D1D2E1CAFEE0299F3011C1DC75B3C2A86E135DB1E6B");
+ params[1].a = cr_strdup("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC");
+ params[1].b = cr_strdup("CC22D6DFB95C6B25E49C0D6364A4E5980C393AA21668D953");
+ params[2].bits = 192;
+ params[2].p = cr_strdup("fffffffffffffffffffffffffffffffeffffffffffffffff");
+ params[2].seed = cr_strdup("C469684435DEB378C4B65CA9591E2A5763059A2E");
+ params[2].r = cr_strdup("25191F95024D839546D9A3375639A9967D52F1373BC4EE0B");
+ params[2].a = cr_strdup("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC");
+ params[2].b = cr_strdup("22123DC2395A05CAA7423DAECCC94760A7D462256BD56916");
+ params[3].bits = 239;
+ params[3].p = cr_strdup("7fffffffffffffffffffffff7fffffffffff8000000000007fffffffffff");
+ params[3].seed = cr_strdup("E43BB460F0B80CC0C0B075798E948060F8321B7D");
+ params[3].r = cr_strdup("28B85EC1ECC19EFE769EB741A6D1BA29476AA5A8F2610957D6EFE78D3783");
+ params[3].a = cr_strdup("7FFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFF8000000000007FFFFFFFFFFC");
+ params[3].b = cr_strdup("6B016C3BDCF18941D0D654921475CA71A9DB2FB27D1D37796185C2942C0A");
+ params[4].bits = 239;
+ params[4].p = cr_strdup("7fffffffffffffffffffffff7fffffffffff8000000000007fffffffffff");
+ params[4].seed = cr_strdup("E8B4011604095303CA3B8099982BE09FCB9AE616");
+ params[4].r = cr_strdup("1DF491E44E7CCAF4D1EAD8A6B90DAE09E0D33F2C6CFE7A6BA76E86713D52");
+ params[4].a = cr_strdup("7FFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFF8000000000007FFFFFFFFFFC");
+ params[4].b = cr_strdup("617FAB6832576CBBFED50D99F0249C3FEE58B94BA0038C7AE84C8C832F2C");
+ params[5].bits = 239;
+ params[5].p = cr_strdup("7fffffffffffffffffffffff7fffffffffff8000000000007fffffffffff");
+ params[5].seed = cr_strdup("7D7374168FFE3471B60A857686A19475D3BFA2FF");
+ params[5].r = cr_strdup("3A4F9DC9A6CEFD5F9D1193B9C9968C202430003C2819C2E498618DC58330");
+ params[5].a = cr_strdup("7FFFFFFFFFFFFFFFFFFFFFFF7FFFFFFFFFFF8000000000007FFFFFFFFFFC");
+ params[5].b = cr_strdup("255705FA2A306654B1F4CB03D6A750A30C250102D4988717D9BA15AB6D3E");
+ params[6].bits = 256;
+ params[6].p = cr_strdup("ffffffff00000001000000000000000000000000ffffffffffffffffffffffff");
+ params[6].seed = cr_strdup("C49D360886E704936A6678E1139D26B7819F7E90");
+ params[6].r = cr_strdup("7EFBA1662985BE9403CB055C75D4F7E0CE8D84A9C5114ABCAF3177680104FA0D");
+ params[6].a = cr_strdup("FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC");
+ params[6].b = cr_strdup("5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B");
+
+ size_t nb_params = sizeof(params) / sizeof(struct prime_params);
+ return cr_make_param_array(struct prime_params, params, nb_params, NULL);
+}
+ParameterizedTest(struct prime_params *param, ansi, test_seed_prime_examples) {
+ config_t cfg = {};
+ cfg.bits = param->bits;
+ cfg.field = FIELD_PRIME;
+ cfg.seed = param->seed;
+ curve_t curve = {};
+ bits_t *p = bits_from_hex(param->p);
+ curve.field = bits_to_i(p);
+
+ int ret = ansi_gen_seed_argument(&curve, &cfg, NULL);
+ cr_assert_eq(ret, 1,);
+
+ ret = ansi_gen_equation(&curve, &cfg, NULL);
+ cr_assert_eq(ret, 1,);
+ GEN expected_r = bits_to_i(bits_from_hex(param->r));
+ cr_assert(gequal(curve.seed->ansi.r, expected_r),);
+
+ bits_free(&p);
+ seed_free(&curve.seed);
+}
+
+struct binary_params {
+ size_t bits;
+ polynomial_t field;
+ char *seed;
+ char *a;
+ char *b;
+};
+
+void binary_params_cleanup(struct criterion_test_params *ctp) {
+ struct binary_params *params = (struct binary_params *)ctp->params;
+ cr_free(params->seed);
+ cr_free(params->a);
+ cr_free(params->b);
+}
+
+ParameterizedTestParameters(ansi, test_seed_binary_examples) {
+ static struct binary_params params[10] = {};
+ // Taken from ANSI X9.62 J.4.1, J.4.3, J.4.5 and J.4.8; p. 107 - 113
+ polynomial_t p163 = {163, 9, 3, 2};
+ params[0].bits = 163;
+ params[0].field = p163;
+ params[0].seed = cr_strdup("D2C0FB15760860DEF1EEF4D696E6768756151754");
+ params[0].a = cr_strdup("072546B5435234A422E0789675F432C89435DE5242");
+ params[0].b = cr_strdup("00C9517D06D5240D3CFF38C74B20B6CD4D6F9DD4D9");
+ params[1].bits = 163,
+ params[1].field = p163;
+ params[1].seed = cr_strdup("53814C050D44D696E67687561517580CA4E29FFD");
+ params[1].a = cr_strdup("0108B39E77C4B108BED981ED0E890E117C511CF072");
+ params[1].b = cr_strdup("0667ACEB38AF4E488C407433FFAE4F1C811638DF20");
+ params[2].bits = 163;
+ params[2].field = p163;
+ params[2].seed = cr_strdup("50CBF1D95CA94D696E676875615175F16A36A3B8");
+ params[2].a = cr_strdup("07A526C63D3E25A256A007699F5447E32AE456B50E");
+ params[2].b = cr_strdup("03F7061798EB99E238FD6F1BF95B48FEEB4854252B");
+ polynomial_t p191 = {191, 10};
+ params[3].bits = 191;
+ params[3].field = p191;
+ params[3].seed = cr_strdup("4E13CA542744D696E67687561517552F279A8C84");
+ params[3].a = cr_strdup("2866537B676752636A68F56554E12640276B649EF7526267");
+ params[3].b = cr_strdup("2E45EF571F00786F67B0081B9495A3D95462F5DE0AA185EC");
+ params[4].bits = 191;
+ params[4].field = p191;
+ params[4].seed = cr_strdup("0871EF2FEF24D696E6768756151758BEE0D95C15");
+ params[4].a = cr_strdup("401028774D7777C7B7666D1366EA432071274F89FF01E718");
+ params[4].b = cr_strdup("0620048D28BCBD03B6249C99182B7C8CD19700C362C46A01");
+ params[5].bits = 191;
+ params[5].field = p191;
+ params[5].seed = cr_strdup("E053512DC684D696E676875615175067AE786D1F");
+ params[5].a = cr_strdup("6C01074756099122221056911C77D77E77A777E7E7E77FCB");
+ params[5].b = cr_strdup("71FE1AF926CF847989EFEF8DB459F66394D90F32AD3F15E8");
+ polynomial_t p239 = {239, 37};
+ params[6].bits = 239;
+ params[6].field = p239;
+ params[6].seed = cr_strdup("D34B9A4D696E676875615175CA71B920BFEFB05D");
+ params[6].a = cr_strdup("32010857077C5431123A46B808906756F543423E8D27877578125778AC76");
+ params[6].b = cr_strdup("790408F2EEDAF392B012EDEFB3392F30F4327C0CA3F31FC383C422AA8C16");
+ params[7].bits = 239;
+ params[7].field = p239;
+ params[7].seed = cr_strdup("2AA6982FDFA4D696E676875615175D266727277D");
+ params[7].a = cr_strdup("4230017757A767FAE42398569B746325D45313AF0766266479B75654E65F");
+ params[7].b = cr_strdup("5037EA654196CFF0CD82B2C14A2FCF2E3FF8775285B545722F03EACDB74B");
+ params[8].bits = 239;
+ params[8].field = p239;
+ params[8].seed = cr_strdup("9E076F4D696E676875615175E11E9FDD77F92041");
+ params[8].a = cr_strdup("01238774666A67766D6676F778E676B66999176666E687666D8766C66A9F");
+ params[8].b = cr_strdup("6A941977BA9F6A435199ACFC51067ED587F519C5ECB541B8E44111DE1D40");
+ polynomial_t p359 = {359, 69};
+ params[9].bits = 359;
+ params[9].field = p359;
+ params[9].seed = cr_strdup("2B354920B724D696E67687561517585BA1332DC6");
+ params[9].a = cr_strdup("5667676A654B20754F356EA92017D946567C46675556F19556A04616B567D223A5E05656FB549016A96656A557");
+ params[9].b = cr_strdup("2472E2D0197C49363F1FE7F5B6DB075D52B6947D135D8CA445805D39BC345626089687742B6329E70680231988");
+
+ size_t nb_params = sizeof(params) / sizeof(struct binary_params);
+ return cr_make_param_array(struct binary_params, params, nb_params, binary_params_cleanup);
+}
+ParameterizedTest(struct binary_params *param, ansi, test_seed_binary_examples) {
+ config_t cfg = {};
+ cfg.bits = param->bits;
+ cfg.field = FIELD_BINARY;
+ cfg.seed = param->seed;
+ curve_t curve = {};
+ curve.field = poly_gen(&param->field);
+
+ GEN expected_b = bits_to_i(bits_from_hex(param->b));
+ bits_t *b = bits_from_i(expected_b);
+
+ int ret = ansi_gen_seed_argument(&curve, &cfg, NULL);
+ cr_assert_eq(ret, 1,);
+
+ ret = ansi_gen_equation(&curve, &cfg, NULL);
+ cr_assert_eq(ret, 1,);
+ GEN curve_b = field_elementi(curve.b);
+ cr_assert(gequal(curve_b, expected_b),);
+
+ bits_free(&b);
+ seed_free(&curve.seed);
+} \ No newline at end of file
diff --git a/test/src/gen/test_point.c b/test/src/gen/test_point.c
index 48872be..d77f83d 100644
--- a/test/src/gen/test_point.c
+++ b/test/src/gen/test_point.c
@@ -5,7 +5,7 @@
#include <criterion/criterion.h>
#include "gen/point.h"
-#include "test/utils.h"
+#include "test/default.h"
TestSuite(point, .init = default_setup, .fini = default_teardown);
diff --git a/test/src/io/test_cli.c b/test/src/io/test_cli.c
index c90bbfa..e5077ef 100644
--- a/test/src/io/test_cli.c
+++ b/test/src/io/test_cli.c
@@ -3,26 +3,25 @@
* Copyright (C) 2017 J08nY
*/
-#include "test/utils.h"
-#include "io/cli.h"
-#include "io/config.h"
#include <criterion/criterion.h>
#include <unistd.h>
+#include "io/cli.h"
+#include "misc/config.h"
+#include "test/default.h"
static struct argp test_argp = {cli_options, cli_parse, cli_args_doc,
- cli_doc, 0, cli_filter};
+ cli_doc, 0, cli_filter};
TestSuite(cli, .init = default_setup, .fini = default_teardown);
-
Test(cli, test_memory) {
int argc = 4;
char *argv[] = {"ecgen", "--memory=2k", "--fp", "1"};
config_t cfg;
memset(&cfg, 0, sizeof(cfg));
int ret = argp_parse(&test_argp, argc, argv, 0, 0, &cfg);
- cr_assert_eq(ret, 0,);
- cr_assert_eq(cfg.memory, 2000,);
+ cr_assert_eq(ret, 0, );
+ cr_assert_eq(cfg.memory, 2000, );
}
Test(cli, test_thread_memory) {
@@ -31,8 +30,8 @@ Test(cli, test_thread_memory) {
config_t cfg;
memset(&cfg, 0, sizeof(cfg));
int ret = argp_parse(&test_argp, argc, argv, 0, 0, &cfg);
- cr_assert_eq(ret, 0,);
- cr_assert_eq(cfg.thread_memory, 2000,);
+ cr_assert_eq(ret, 0, );
+ cr_assert_eq(cfg.thread_memory, 2000, );
}
Test(cli, test_threads) {
@@ -41,8 +40,8 @@ Test(cli, test_threads) {
config_t cfg;
memset(&cfg, 0, sizeof(cfg));
int ret = argp_parse(&test_argp, argc, argv, 0, 0, &cfg);
- cr_assert_eq(ret, 0,);
- cr_assert_eq(cfg.threads, 2,);
+ cr_assert_eq(ret, 0, );
+ cr_assert_eq(cfg.threads, 2, );
}
Test(cli, test_auto_threads) {
@@ -51,6 +50,6 @@ Test(cli, test_auto_threads) {
config_t cfg;
memset(&cfg, 0, sizeof(cfg));
int ret = argp_parse(&test_argp, argc, argv, 0, 0, &cfg);
- cr_assert_eq(ret, 0,);
- cr_assert_eq(cfg.threads, sysconf(_SC_NPROCESSORS_ONLN),);
+ cr_assert_eq(ret, 0, );
+ cr_assert_eq(cfg.threads, sysconf(_SC_NPROCESSORS_ONLN), );
} \ No newline at end of file
diff --git a/test/src/io/test_input.c b/test/src/io/test_input.c
index de4ac0f..d32d71c 100644
--- a/test/src/io/test_input.c
+++ b/test/src/io/test_input.c
@@ -3,92 +3,78 @@
* Copyright (C) 2017 J08nY
*/
-#include "test/utils.h"
-#include "io/input.h"
-#include "io/output.h"
#include <criterion/criterion.h>
+#include "io/input.h"
+#include "test/default.h"
+#include "test/input.h"
+#include "test/output.h"
-static FILE *write_in;
-
-void input_setup() {
+void input_suite_setup(void) {
default_setup();
- config_t cfg;
- memset(&cfg, 0, sizeof(cfg));
-
- cfg.output = "/dev/null";
- input_init(&cfg);
- output_init(&cfg);
-
- int in_fd[2];
- pipe(in_fd);
-
- write_in = fdopen(in_fd[1], "w");
- setlinebuf(write_in);
- in = fdopen(in_fd[0], "r");
- err = fopen("/dev/null", "w");
+ input_setup();
+ output_setup();
}
-void input_teardown() {
+void input_suite_teardown(void) {
default_teardown();
- input_quit();
- output_quit();
- fclose(write_in);
+ input_teardown();
+ output_teardown();
}
-TestSuite(input, .init = input_setup, .fini = input_teardown);
+TestSuite(input, .init = input_suite_setup, .fini = input_suite_teardown);
Test(input, test_prime) {
fprintf(write_in, "5\n");
GEN p = input_prime(NULL, 10);
- cr_assert(gequal(p, stoi(5)),);
+ cr_assert(gequal(p, stoi(5)), );
}
Test(input, test_prime_nan) {
fprintf(write_in, "....\n");
GEN p = input_prime(NULL, 10);
- cr_assert(gequal(p, gen_m1),);
+ cr_assert(gequal(p, gen_m1), );
}
Test(input, test_prime_nonprime) {
fprintf(write_in, "6\n");
GEN p = input_prime(NULL, 10);
- cr_assert(gequal(p, gen_m1),);
+ cr_assert(gequal(p, gen_m1), );
}
Test(input, test_prime_newline) {
fprintf(write_in, "\n");
GEN p = input_prime(NULL, 10);
- cr_assert(gequal(p, gen_m1),);
+ cr_assert(gequal(p, gen_m1), );
}
Test(input, test_int) {
fprintf(write_in, "256\n");
GEN i = input_int(NULL, 10);
- cr_assert(gequal(i, stoi(256)),);
+ cr_assert(gequal(i, stoi(256)), );
}
Test(input, test_int_too_big) {
fprintf(write_in, "256\n");
GEN i = input_int(NULL, 4);
- cr_assert(gequal(i, gen_m1),);
+ cr_assert(gequal(i, gen_m1), );
}
Test(input, test_int_newline) {
fprintf(write_in, "\n");
GEN i = input_int(NULL, 4);
- cr_assert(gequal(i, gen_m1),);
+ cr_assert(gequal(i, gen_m1), );
}
Test(input, test_str) {
fprintf(write_in, "something\n");
GEN s = input_string(NULL);
GEN expected = strtoGENstr("something");
- cr_assert(gequal(s, expected),);
+ cr_assert(gequal(s, expected), );
}
Test(input, test_str_newline) {
fprintf(write_in, "\n");
GEN s = input_string(NULL);
GEN expected = strtoGENstr("");
- cr_assert(gequal(s, expected),);
+ cr_assert(gequal(s, expected), );
}
diff --git a/test/src/math/test_subgroups.c b/test/src/math/test_subgroups.c
index b9368d0..8a3c8da 100644
--- a/test/src/math/test_subgroups.c
+++ b/test/src/math/test_subgroups.c
@@ -5,7 +5,7 @@
#include <criterion/criterion.h>
#include "gen/point.h"
#include "math/subgroups.h"
-#include "test/utils.h"
+#include "test/default.h"
TestSuite(subgroups, .init = default_setup, .fini = default_teardown);
diff --git a/test/src/test/utils.c b/test/src/test/default.c
index a5de092..c695fea 100644
--- a/test/src/test/utils.c
+++ b/test/src/test/default.c
@@ -2,17 +2,15 @@
* ecgen, tool for generating Elliptic curve domain parameters
* Copyright (C) 2017 J08nY
*/
-#include "utils.h"
+#include "default.h"
#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);
- //set_mem_funcs(cr_malloc, cr_simple_calloc, cr_realloc, cr_free);
+ // set_mem_funcs(cr_malloc, cr_simple_calloc, cr_realloc, cr_free);
}
void default_teardown(void) { pari_close(); } \ No newline at end of file
diff --git a/test/src/test/utils.h b/test/src/test/default.h
index 2780bd2..12ee4cb 100644
--- a/test/src/test/utils.h
+++ b/test/src/test/default.h
@@ -2,11 +2,11 @@
* ecgen, tool for generating Elliptic curve domain parameters
* Copyright (C) 2017 J08nY
*/
-#ifndef ECGEN_UTILS_H
-#define ECGEN_UTILS_H
+#ifndef ECGEN_TEST_DEFAULT_H
+#define ECGEN_TEST_DEFAULT_H
void default_setup(void);
void default_teardown(void);
-#endif //ECGEN_UTILS_H
+#endif // ECGEN_UTILS_H
diff --git a/test/src/test/input.c b/test/src/test/input.c
new file mode 100644
index 0000000..f171ca8
--- /dev/null
+++ b/test/src/test/input.c
@@ -0,0 +1,27 @@
+/*
+ * ecgen, tool for generating Elliptic curve domain parameters
+ * Copyright (C) 2017 J08nY
+ */
+#include "input.h"
+#include "io/input.h"
+
+FILE *write_in;
+
+void input_setup(void) {
+ config_t cfg;
+ memset(&cfg, 0, sizeof(cfg));
+ input_init(&cfg);
+
+ int in_fd[2];
+ pipe(in_fd);
+
+ write_in = fdopen(in_fd[1], "w");
+ setlinebuf(write_in);
+ in = fdopen(in_fd[0], "r");
+ setlinebuf(in);
+}
+
+void input_teardown(void) {
+ input_quit();
+ fclose(write_in);
+} \ No newline at end of file
diff --git a/test/src/test/input.h b/test/src/test/input.h
new file mode 100644
index 0000000..5e57c01
--- /dev/null
+++ b/test/src/test/input.h
@@ -0,0 +1,16 @@
+/*
+ * ecgen, tool for generating Elliptic curve domain parameters
+ * Copyright (C) 2017 J08nY
+ */
+#ifndef ECGEN_TEST_INPUT_H
+#define ECGEN_TEST_INPUT_H
+
+#include <stdio.h>
+
+extern FILE *write_in;
+
+void input_setup(void);
+
+void input_teardown(void);
+
+#endif // ECGEN_TEST_INPUT_H
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/test/output.c b/test/src/test/output.c
new file mode 100644
index 0000000..66c5809
--- /dev/null
+++ b/test/src/test/output.c
@@ -0,0 +1,49 @@
+/*
+ * ecgen, tool for generating Elliptic curve domain parameters
+ * Copyright (C) 2017 J08nY
+ */
+#include "output.h"
+#include "misc/types.h"
+#include "io/output.h"
+
+FILE *read_out = NULL;
+FILE *read_err = NULL;
+FILE *read_verbose = NULL;
+
+static void setup_stream(FILE **original_out, FILE **redirected_out) {
+ int fd[2];
+ pipe(fd);
+
+ *redirected_out = fdopen(fd[0], "r");
+ setlinebuf(*redirected_out);
+ *original_out = fdopen(fd[1], "w");
+ setlinebuf(*original_out);
+}
+
+void output_setup(void) {
+ config_t cfg;
+ memset(&cfg, 0, sizeof(cfg));
+ output_init(&cfg);
+
+ int in_fd[2];
+ pipe(in_fd);
+
+ setup_stream(&out, &read_out);
+ setup_stream(&err, &read_err);
+ setup_stream(&verbose, &read_verbose);
+}
+
+void output_teardown(void) {
+ if (read_out) {
+ fclose(out);
+ fclose(read_out);
+ }
+ if (read_err) {
+ fclose(err);
+ fclose(read_err);
+ }
+ if (read_verbose) {
+ fclose(verbose);
+ fclose(read_verbose);
+ }
+}
diff --git a/test/src/test/output.h b/test/src/test/output.h
new file mode 100644
index 0000000..733cb5c
--- /dev/null
+++ b/test/src/test/output.h
@@ -0,0 +1,18 @@
+/*
+ * ecgen, tool for generating Elliptic curve domain parameters
+ * Copyright (C) 2017 J08nY
+ */
+#ifndef ECGEN_TEST_OUTPUT_H
+#define ECGEN_TEST_OUTPUT_H
+
+#include <stdio.h>
+
+extern FILE *read_out;
+extern FILE *read_err;
+extern FILE *read_verbose;
+
+void output_setup(void);
+
+void output_teardown(void);
+
+#endif // ECGEN_TEST_OUTPUT_H
diff --git a/test/src/util/test_bits.c b/test/src/util/test_bits.c
new file mode 100644
index 0000000..372541a
--- /dev/null
+++ b/test/src/util/test_bits.c
@@ -0,0 +1,486 @@
+/*
+ * ecgen, tool for generating Elliptic curve domain parameters
+ * Copyright (C) 2017 J08nY
+ */
+
+#include <criterion/criterion.h>
+#include <criterion/parameterized.h>
+#include <misc/types.h>
+#include "test/default.h"
+#include "test/memory.h"
+#include "util/bits.h"
+#include "util/memory.h"
+
+TestSuite(bits, .init = default_setup, .fini = default_teardown);
+
+Test(bits, test_bits_new) {
+ bits_t *bits = bits_new(10);
+ cr_assert_not_null(bits, );
+ cr_assert_eq(bits->bitlen, 10, );
+ cr_assert_eq(bits->allocated, 2, );
+ cr_assert_eq(bits->bits[0], 0, );
+ cr_assert_eq(bits->bits[1], 0, );
+ bits_free(&bits);
+}
+
+Test(bits, test_bits_copy) {
+ bits_t *bits = bits_new(10);
+ bits->bits[0] = 0b10101010;
+ bits->bits[1] = 0b11000000;
+
+ bits_t *other_bits = bits_copy(bits);
+ cr_assert_not_null(other_bits, );
+ cr_assert_eq(other_bits->allocated, bits->allocated, );
+ cr_assert_eq(other_bits->bitlen, bits->bitlen, );
+ cr_assert_eq(other_bits->bits[0], bits->bits[0], );
+ cr_assert_eq(other_bits->bits[1], bits->bits[1], );
+ bits_free(&bits);
+ bits_free(&other_bits);
+}
+
+Test(bits, test_bits_from_i) {
+ GEN i = int2n(5);
+
+ bits_t *bits = bits_from_i(i);
+ cr_assert_not_null(bits, );
+ cr_assert_eq(bits->bitlen, 6, );
+ cr_assert_eq(bits->allocated, 1, );
+ cr_assert_eq(bits->bits[0], 0b10000000, );
+ bits_free(&bits);
+}
+
+Test(bits, test_bits_from_hex) {
+ char *hex = "0ab";
+
+ bits_t *bits = bits_from_hex(hex);
+ cr_assert_not_null(bits, );
+ cr_assert_eq(bits->bitlen, 12, );
+ cr_assert_eq(bits->allocated, 2, );
+ cr_assert_eq(bits->bits[0], 0x0a, );
+ cr_assert_eq(bits->bits[1], 0xb0, );
+ bits_free(&bits);
+}
+
+Test(bits, test_bits_from_bin) {
+ char *bin = "000010101101";
+
+ bits_t *bits = bits_from_bin(bin);
+ cr_assert_not_null(bits, );
+ cr_assert_eq(bits->bitlen, 12, );
+ cr_assert_eq(bits->allocated, 2, );
+ cr_assert_eq(bits->bits[0], 0b00001010, );
+ cr_assert_eq(bits->bits[1], 0b11010000, );
+ bits_free(&bits);
+}
+
+Test(bits, test_bits_from_raw) {
+ unsigned char *raw = (unsigned char *)"\x0a\xb0";
+
+ bits_t *bits = bits_from_raw(raw, 16);
+ cr_assert_not_null(bits, );
+ cr_assert_eq(bits->bitlen, 16, );
+ cr_assert_eq(bits->allocated, 2, );
+ cr_assert_eq(bits->bits[0], 0x0a, );
+ cr_assert_eq(bits->bits[1], 0xb0, );
+ bits_free(&bits);
+}
+
+Test(bits, test_bits_from_bitvec) {
+ GEN bitvec = binary_zv(int2n(5));
+
+ bits_t *bits = bits_from_bitvec(bitvec);
+ cr_assert_not_null(bits, );
+ cr_assert_eq(bits->bitlen, 6, );
+ cr_assert_eq(bits->allocated, 1, );
+ cr_assert_eq(bits->bits[0], 0b10000000, );
+ bits_free(&bits);
+}
+
+Test(bits, test_bits_to_i) {
+ bits_t *bits = bits_new(6);
+ bits->bits[0] = 0b10000000;
+
+ GEN i = bits_to_i(bits);
+ cr_assert_not_null(bits, );
+ cr_assert(gequal(i, int2n(5)), );
+ bits_free(&bits);
+}
+
+Test(bits, test_bits_to_hex) {
+ bits_t *bits = bits_new(12);
+ bits->bits[0] = 0xab;
+ bits->bits[1] = 0xc0;
+
+ char *hex = bits_to_hex(bits);
+ cr_assert_not_null(hex, );
+ cr_assert_str_eq(hex, "abc0", );
+ try_free(hex);
+ bits_free(&bits);
+}
+
+Test(bits, test_bits_to_bin) {
+ bits_t *bits = bits_new(12);
+ bits->bits[0] = 0b10101010;
+ bits->bits[1] = 0b11110000;
+
+ char *bin = bits_to_bin(bits);
+ cr_assert_not_null(bin, );
+ cr_assert_str_eq(bin, "101010101111", );
+ try_free(bin);
+ bits_free(&bits);
+}
+
+Test(bits, test_bits_to_raw) {
+ bits_t *bits = bits_new(6);
+ bits->bits[0] = 0b10000000;
+
+ unsigned char *raw = bits_to_raw(bits);
+ size_t rawlen = bits_to_rawlen(bits);
+ cr_assert_not_null(raw, );
+ cr_assert_eq(rawlen, 1, );
+ cr_assert_eq(raw[0], 0b10000000, );
+ try_free(raw);
+ bits_free(&bits);
+}
+
+Test(bits, test_bits_to_bitvec) {
+ bits_t *bits = bits_new(6);
+ bits->bits[0] = 0b10000000;
+
+ GEN bitvec = bits_to_bitvec(bits);
+ cr_assert_not_null(bitvec, );
+ cr_assert(gequal(bitvec, binary_zv(int2n(5))), );
+}
+
+Test(bits, test_bits_concat) {
+ bits_t *one = bits_new(6);
+ one->bits[0] = 0b00000000;
+
+ bits_t *other = bits_new(8);
+ other->bits[0] = 0b11001100;
+
+ bits_t *cat = bits_concat(one, other, NULL);
+ cr_assert_not_null(cat, );
+ cr_assert_eq(cat->bitlen, 14, );
+ cr_assert_eq(cat->bits[0], 0b00000011, );
+ cr_assert_eq(cat->bits[1], 0b00110000, );
+
+ bits_free(&one);
+ bits_free(&other);
+ bits_free(&cat);
+}
+
+Test(bits, test_bits_or) {
+ bits_t *bits = bits_new(6);
+ bits->bits[0] = 0b10000000;
+
+ bits_t *other_bits = bits_new(10);
+ other_bits->bits[0] = 0b00000000;
+ other_bits->bits[1] = 0b11000000;
+
+ bits_t * or = bits_or(bits, other_bits);
+ cr_assert_not_null(or, );
+ cr_assert_eq(or->bitlen, 10, );
+ cr_assert_eq(or->bits[0], 0b00001000, );
+ cr_assert_eq(or->bits[1], 0b11000000, );
+ bits_free(&bits);
+ bits_free(&other_bits);
+ bits_free(& or);
+}
+
+Test(bits, test_bits_and) {
+ bits_t *bits = bits_new(6);
+ bits->bits[0] = 0b10000000;
+
+ bits_t *other_bits = bits_new(10);
+ other_bits->bits[0] = 0b00001000;
+ other_bits->bits[1] = 0b11000000;
+
+ bits_t *and = bits_and(bits, other_bits);
+ cr_assert_not_null(and, );
+ cr_assert_eq(and->bitlen, 10, );
+ cr_assert_eq(and->bits[0], 0b00001000, );
+ cr_assert_eq(and->bits[1], 0b00000000, );
+ bits_free(&bits);
+ bits_free(&other_bits);
+ bits_free(&and);
+}
+
+Test(bits, test_bits_notz) {
+ bits_t *bits = bits_new(6);
+ bits->bits[0] = 0b10000000;
+
+ bits_notz(bits);
+ cr_assert_eq(bits->bitlen, 6, );
+ cr_assert_eq(bits->bits[0], 0b01111100, );
+ bits_free(&bits);
+}
+
+Test(bits, test_bits_not) {
+ bits_t *bits = bits_new(6);
+ bits->bits[0] = 0b10000000;
+
+ bits_t *not = bits_not(bits);
+ cr_assert_not_null(not, );
+ cr_assert_eq(not->bitlen, 6, );
+ cr_assert_eq(not->bits[0], 0b01111100, );
+ bits_free(&bits);
+ bits_free(&not);
+}
+
+Test(bits, test_bits_rotz) {
+ bits_t *bits = bits_new(10);
+ bits->bits[0] = 0b11111000;
+ bits->bits[1] = 0b00000000;
+
+ bits_rotz(bits);
+ cr_assert_eq(bits->bitlen, 10, );
+ cr_assert_eq(bits->bits[0], 0b00000111, );
+ cr_assert_eq(bits->bits[1], 0b11000000, );
+ bits_free(&bits);
+}
+
+Test(bits, test_bits_rot) {
+ bits_t *bits = bits_new(6);
+ bits->bits[0] = 0b10000000;
+
+ bits_t *rot = bits_rot(bits);
+ cr_assert_not_null(rot, );
+ cr_assert_eq(rot->bitlen, 6, );
+ cr_assert_eq(rot->bits[0], 0b00000100, );
+ bits_free(&bits);
+ bits_free(&rot);
+
+ bits = bits_new(5);
+ bits->bits[0] = 0b10100000;
+
+ rot = bits_rot(bits);
+ cr_assert_not_null(rot, );
+ cr_assert_eq(rot->bitlen, 5, );
+ cr_assert_eq(rot->bits[0], 0b00101000, );
+ bits_free(&bits);
+ bits_free(&rot);
+}
+
+Test(bits, test_bits_shiftz) {
+ bits_t *bits = bits_new(6);
+ bits->bits[0] = 0b10101000;
+
+ bits_shiftz(bits, -1);
+ cr_assert_eq(bits->bitlen, 6, );
+ cr_assert_eq(bits->bits[0], 0b01010100, );
+ bits_free(&bits);
+}
+
+Test(bits, test_bits_shift) {
+ bits_t *bits = bits_new(8);
+ bits->bits[0] = 0b11001100;
+
+ bits_t *shift = bits_shift(bits, 2);
+ cr_assert_not_null(shift, );
+ cr_assert_eq(shift->bitlen, 8, );
+ cr_assert_eq(shift->bits[0], 0b00110000, );
+ bits_free(&bits);
+ bits_free(&shift);
+}
+
+Test(bits, test_bits_shiftrz) {
+ bits_t *bits = bits_new(8);
+ bits->bits[0] = 0b11001100;
+
+ bits_shiftrz(bits, 1);
+ cr_assert_eq(bits->bitlen, 8, );
+ cr_assert_eq(bits->bits[0], 0b10011001, );
+ bits->bits[0] = 0b11001100;
+
+ bits_shiftrz(bits, 9);
+ cr_assert_eq(bits->bitlen, 8, );
+ cr_assert_eq(bits->bits[0], 0b10011001, );
+ bits->bits[0] = 0b11001100;
+
+ bits_shiftrz(bits, -10);
+ cr_assert_eq(bits->bitlen, 8, );
+ cr_assert_eq(bits->bits[0], 0b00110011, );
+ bits_free(&bits);
+}
+
+Test(bits, test_bits_shiftr) {
+ bits_t *bits = bits_new(8);
+ bits->bits[0] = 0b11001100;
+
+ bits_t *shift = bits_shiftr(bits, 1);
+ cr_assert_eq(shift->bitlen, 8, );
+ cr_assert_eq(shift->bits[0], 0b10011001, );
+ bits_free(&bits);
+ bits_free(&shift);
+}
+
+Test(bits, test_bits_shiftiz) {
+ bits_t *bits = bits_new(8);
+ bits->bits[0] = 0b11001100;
+
+ bits_shiftiz(bits, 2);
+ cr_assert_eq(bits->bitlen, 10, );
+ cr_assert_eq(bits->bits[0], 0b11001100, );
+ cr_assert_eq(bits->bits[1], 0b00000000, );
+
+ bits_shiftiz(bits, -2);
+ cr_assert_eq(bits->bitlen, 8, );
+ cr_assert_eq(bits->bits[0], 0b11001100, );
+ bits_free(&bits);
+}
+
+Test(bits, test_bits_shitfi) {
+ bits_t *bits = bits_new(8);
+ bits->bits[0] = 0b11001100;
+
+ bits_t *shift = bits_shifti(bits, -4);
+ cr_assert_eq(shift->bitlen, 4, );
+ cr_assert_eq(shift->bits[0], 0b11000000, );
+ bits_free(&bits);
+ bits_free(&shift);
+}
+
+Test(bits, test_bits_lengthenz) {
+ bits_t *bits = bits_new(8);
+ bits->bits[0] = 0b11001100;
+
+ bits_lengthenz(bits, 4);
+ cr_assert_eq(bits->bitlen, 12, );
+ cr_assert_eq(bits->bits[0], 0b00001100, );
+ cr_assert_eq(bits->bits[1], 0b11000000, );
+
+ bits_lengthenz(bits, -4);
+ cr_assert_eq(bits->bitlen, 16, );
+ cr_assert_eq(bits->bits[0], 0b00001100, );
+ cr_assert_eq(bits->bits[1], 0b11000000, );
+
+ bits_free(&bits);
+}
+
+Test(bits, test_bits_lengthen) {
+ bits_t *bits = bits_new(6);
+ bits->bits[0] = 0b11111100;
+
+ bits_t *longer = bits_lengthen(bits, 2);
+ cr_assert_not_null(longer, );
+ cr_assert_eq(longer->bitlen, 8, );
+ cr_assert_eq(longer->bits[0], 0b00111111, );
+ bits_free(&bits);
+ bits_free(&longer);
+}
+
+Test(bits, test_bits_shortenz) {
+ bits_t *bits = bits_new(6);
+ bits->bits[0] = 0b10110100;
+
+ bits_shortenz(bits, 2);
+ cr_assert_eq(bits->bitlen, 4, );
+ cr_assert_eq(bits->bits[0], 0b11010000, );
+
+ bits_shortenz(bits, -2);
+ cr_assert_eq(bits->bitlen, 2, );
+ cr_assert_eq(bits->bits[0], 0b11000000, );
+ bits_free(&bits);
+}
+
+Test(bits, test_bits_shorten) {
+ bits_t *bits = bits_new(6);
+ bits->bits[0] = 0b10110100;
+
+ bits_t *shorter = bits_shorten(bits, 4);
+ cr_assert_not_null(shorter, );
+ cr_assert_eq(shorter->bitlen, 2, );
+ cr_assert_eq(shorter->bits[0], 0b01000000, );
+ bits_free(&bits);
+ bits_free(&shorter);
+}
+
+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);
+
+ for (size_t i = 0; i < 20; ++i) {
+ cr_assert_eq(hashout[i], param->hashout[i], );
+ }
+
+ bits_free(&bits);
+}
+
+Test(bits, test_bits_eq) {
+ bits_t *bits = bits_new(6);
+ bits->bits[0] = 0b10000000;
+
+ bits_t *other_bits = bits_new(6);
+ other_bits->bits[0] = 0b10000000;
+
+ cr_assert(bits_eq(bits, other_bits), );
+
+ bits->bits[0] = 0b10010000;
+ other_bits->bits[0] = 0b10000000;
+
+ cr_assert_not(bits_eq(bits, other_bits), );
+
+ bits_free(&bits);
+ bits_free(&other_bits);
+}
+
+Test(bits, test_bits_eq_len) {
+ bits_t *bits = bits_new(5);
+ bits->bits[0] = 0b10000000;
+
+ bits_t *other_bits = bits_new(6);
+ other_bits->bits[0] = 0b10000000;
+ cr_assert_not(bits_eq(bits, other_bits), );
+ bits_free(&bits);
+ bits_free(&other_bits);
+}
+
+Test(bits, test_bits_eq_large) {
+ bits_t *bits = bits_new(10);
+ bits->bits[0] = 0b10000010;
+ bits->bits[1] = 0b11000000;
+
+ bits_t *other_bits = bits_new(10);
+ other_bits->bits[0] = 0b10000010;
+ other_bits->bits[1] = 0b11000000;
+
+ cr_assert(bits_eq(bits, other_bits), );
+
+ bits->bits[0] = 0b10000000;
+ other_bits->bits[0] = 0b00000010;
+
+ cr_assert_not(bits_eq(bits, other_bits), );
+
+ bits_free(&bits);
+ bits_free(&other_bits);
+}
diff --git a/test/src/util/test_random.c b/test/src/util/test_random.c
index 5e7f854..bb632a6 100644
--- a/test/src/util/test_random.c
+++ b/test/src/util/test_random.c
@@ -3,9 +3,9 @@
* Copyright (C) 2017 J08nY
*/
-#include "test/utils.h"
-#include "util/random.h"
#include <criterion/criterion.h>
+#include "test/default.h"
+#include "util/random.h"
void random_setup() {
default_setup();
@@ -17,18 +17,16 @@ TestSuite(random, .init = random_setup, .fini = default_teardown);
Test(random, test_random_prime) {
for (size_t i = 0; i < 100; ++i) {
GEN p = random_prime(10);
- cr_assert(isprime(p),);
- cr_assert_lt(gcmp(p, int2n(10)), 0,);
- cr_assert_gt(gcmp(p, int2n(9)), 0,);
+ cr_assert(isprime(p), );
+ cr_assert_leq(cmpii(p, int2n(10)), 0, );
+ cr_assert_geq(cmpii(p, int2n(9)), 0, );
}
}
Test(random, test_random_int) {
for (size_t i = 0; i < 100; ++i) {
GEN j = random_int(10);
- cr_assert_lt(gcmp(j, int2n(10)), 0,);
- cr_assert_gt(gcmp(j, int2n(9)), 0,);
+ cr_assert_leq(cmpii(j, int2n(10)), 0, );
+ cr_assert_geq(cmpii(j, int2n(9)), 0, );
}
}
-
-