diff options
Diffstat (limited to 'test/src/gen/test_point.c')
| -rw-r--r-- | test/src/gen/test_point.c | 41 |
1 files changed, 34 insertions, 7 deletions
diff --git a/test/src/gen/test_point.c b/test/src/gen/test_point.c index fd928d6..a0c9e06 100644 --- a/test/src/gen/test_point.c +++ b/test/src/gen/test_point.c @@ -3,12 +3,11 @@ * Copyright (C) 2017 J08nY */ -#include "gen/types.h" +#include <criterion/criterion.h> #include "gen/point.h" #include "test/utils.h" -#include <criterion/criterion.h> -TestSuite(point, .init=default_setup, .fini=default_teardown); +TestSuite(point, .init = default_setup, .fini = default_teardown); Test(point, test_point_random) { GEN e = ellinit(mkvec2s(1, 3), stoi(23), -1); @@ -21,7 +20,8 @@ Test(point, test_point_random) { cr_assert_not_null(curve.points, "Points are null."); cr_assert(ellisoncurve(e, curve.points[0]->point), "Point not on curve."); cr_assert(gequal(ellorder(e, curve.points[0]->point, NULL), - curve.points[0]->order), "Point has wrong order set."); + curve.points[0]->order), + "Point has wrong order set."); points_free_deep(&curve.points, 1); } @@ -39,11 +39,38 @@ Test(point, test_points_random) { cr_assert_not_null(curve.points, "Points are null."); for (size_t i = 0; i < npoints; i++) { point_t *point = curve.points[i]; - cr_assert(ellisoncurve(e, point->point), - "Point not on curve."); + cr_assert(ellisoncurve(e, point->point), "Point not on curve."); cr_assert(gequal(ellorder(e, point->point, NULL), point->order), - "Point has wrong order set."); + "Point has wrong order set."); } points_free_deep(&curve.points, npoints); } + +Test(point, test_points_trial) { + GEN e = ellinit(mkvec2s(1, 3), stoi(23), -1); + point_t **gens = points_new(1); + gens[0] = point_new(); + gens[0]->order = stoi(27); + gens[0]->cofactor = stoi(1); + gens[0]->point = mkvec2(mkintmodu(15, 23), mkintmodu(14, 23)); + curve_t curve = { + .order = stoi(27), .curve = e, .ngens = 1, .generators = gens}; + config_t cfg = {}; + pari_ulong prime = 3; + arg_t arg = {.args = &prime, .nargs = 1}; + int ret = points_gen_trial(&curve, &cfg, &arg); + + cr_assert_eq(ret, 1, "Point wasn't generated."); + cr_assert_eq(curve.npoints, 1, "Incorrect number of points."); + cr_assert_not_null(curve.points, "Points are null."); + cr_assert(ellisoncurve(e, curve.points[0]->point), "Point not on curve."); + cr_assert(gequal(ellorder(e, curve.points[0]->point, NULL), + curve.points[0]->order), + "Point has wrong order set."); + cr_assert(gequal(curve.points[0]->order, stoi(prime)), + "Point has wrong order."); + + points_free_deep(&curve.points, 1); + points_free_deep(&curve.generators, 1); +} |
