From 22cdb975e82be5b861436aba1f72ac18351db3be Mon Sep 17 00:00:00 2001 From: J08nY Date: Tue, 17 Oct 2017 13:00:51 +0200 Subject: Add tests for order.c. --- src/gen/order.c | 2 +- test/src/gen/test_gens.c | 4 +- test/src/gen/test_order.c | 99 ++++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 101 insertions(+), 4 deletions(-) diff --git a/src/gen/order.c b/src/gen/order.c index 92b1489..6af1f00 100644 --- a/src/gen/order.c +++ b/src/gen/order.c @@ -146,7 +146,7 @@ CHECK(order_check_discriminant) { D = mulis(D, 4); } - if (mpcmp(D, mind) <= 0) { + if (abscmpii(D, mind) <= 0) { avma = ltop; return -4; } diff --git a/test/src/gen/test_gens.c b/test/src/gen/test_gens.c index 2092aed..49f82e2 100644 --- a/test/src/gen/test_gens.c +++ b/test/src/gen/test_gens.c @@ -15,7 +15,7 @@ Test(gens, test_gens_gen_any) { .a = mkintmodu(3, 19), .b = mkintmodu(5, 19), .curve = ellinit(mkvec2(stoi(3), stoi(5)), stoi(19), 0), - .order = stoi(16)}; + .order = stoi(26)}; pari_sp to = avma; int ret = gens_gen_any(&curve, NULL, OFFSET_GENERATORS); @@ -45,7 +45,7 @@ Test(gens, test_gens_gen_one) { .a = mkintmodu(3, 19), .b = mkintmodu(5, 19), .curve = ellinit(mkvec2(stoi(3), stoi(5)), stoi(19), 0), - .order = stoi(16)}; + .order = stoi(26)}; pari_sp to = avma; int ret = gens_gen_one(&curve, NULL, OFFSET_GENERATORS); diff --git a/test/src/gen/test_order.c b/test/src/gen/test_order.c index e88724a..aa7dc08 100644 --- a/test/src/gen/test_order.c +++ b/test/src/gen/test_order.c @@ -3,6 +3,103 @@ * Copyright (C) 2017 J08nY */ #include +#include "gen/order.h" #include "test/io.h" -TestSuite(order, .init = io_setup, .fini = io_teardown); \ No newline at end of file +TestSuite(order, .init = io_setup, .fini = io_teardown); + +Test(order, test_order_gen_input) { + curve_t curve = {.field = stoi(19), + .a = mkintmodu(3, 19), + .b = mkintmodu(5, 19), + .curve = ellinit(mkvec2(stoi(3), stoi(5)), stoi(19), 0)}; + cfg->bits = 16; + + long ord = 26; + fprintf(write_in, "%li\n", ord); + int ret = order_gen_input(&curve, NULL, OFFSET_ORDER); + cr_assert_eq(ret, 1, ); + cr_assert(gequal(curve.order, stoi(ord)), ); +} + +Test(order, test_order_gen_any) { + curve_t curve = {.field = stoi(19), + .a = mkintmodu(3, 19), + .b = mkintmodu(5, 19), + .curve = ellinit(mkvec2(stoi(3), stoi(5)), stoi(19), 0)}; + cfg->bits = 16; + + int ret = order_gen_any(&curve, NULL, OFFSET_ORDER); + cr_assert_eq(ret, 1, ); + cr_assert(gequal(curve.order, stoi(26)), ); +} + +Test(order, test_order_gen_sea) { + curve_t curve = {.field = stoi(19), + .a = mkintmodu(3, 19), + .b = mkintmodu(5, 19), + .curve = ellinit(mkvec2(stoi(3), stoi(5)), stoi(19), 0)}; + cfg->bits = 16; + + int ret = order_gen_sea(&curve, NULL, OFFSET_ORDER); + cr_assert_eq(ret, 1, ); + cr_assert(gequal(curve.order, stoi(26)), ); +} + +Test(order, test_order_gen_smallfact) { + curve_t curve = {.field = stoi(19), + .a = mkintmodu(3, 19), + .b = mkintmodu(5, 19), + .curve = ellinit(mkvec2(stoi(3), stoi(5)), stoi(19), 0)}; + cfg->bits = 16; + + pari_ulong smallfact = 5; + arg_t arg = {.args = &smallfact, .nargs = 1}; + + int ret = order_gen_smallfact(&curve, &arg, OFFSET_ORDER); + cr_assert_eq(ret, 1, ); + cr_assert(gequal(curve.order, stoi(26)), ); +} + +Test(order, test_order_gen_prime) { + curve_t curve = {.field = stoi(19), + .a = mkintmodu(1, 19), + .b = mkintmodu(4, 19), + .curve = ellinit(mkvec2(stoi(1), stoi(4)), stoi(19), 0)}; + cfg->bits = 16; + + int ret = order_gen_prime(&curve, NULL, OFFSET_ORDER); + cr_assert_eq(ret, 1, ); + cr_assert(gequal(curve.order, stoi(19)), ); +} + +Test(order, test_order_check_pohlig_hellman) { + curve_t curve = {.field = stoi(19), + .a = mkintmodu(3, 19), + .b = mkintmodu(5, 19), + .curve = ellinit(mkvec2(stoi(3), stoi(5)), stoi(19), 0), + .order = stoi(26)}; + cfg->bits = 16; + + char *min_factor = "12"; + arg_t arg = {.args = min_factor, .nargs = 1}; + + int ret = order_check_pohlig_hellman(&curve, &arg, OFFSET_ORDER); + cr_assert_eq(ret, 1, ); +} + +Test(order, test_order_check_discriminant) { + curve_t curve = {.field = stoi(19), + .a = mkintmodu(3, 19), + .b = mkintmodu(5, 19), + .curve = ellinit(mkvec2(stoi(3), stoi(5)), stoi(19), 0), + .order = stoi(26)}; + cfg->bits = 16; + cfg->field = FIELD_PRIME; + + char *min_factor = "12"; + arg_t arg = {.args = min_factor, .nargs = 1}; + + int ret = order_check_discriminant(&curve, &arg, OFFSET_ORDER); + cr_assert_eq(ret, 1, ); +} \ No newline at end of file -- cgit v1.2.3-70-g09d2