diff options
| author | J08nY | 2017-08-30 01:33:51 +0200 |
|---|---|---|
| committer | J08nY | 2017-08-30 01:33:51 +0200 |
| commit | e8623c98acfda4e839a552d5d23e80287be1ec11 (patch) | |
| tree | 9998d0fe016ad411131dc768c7ffb30dc5bafbbf | |
| parent | 9988d8068461550e7b303a4cad46926aa27bf8dd (diff) | |
| download | ecgen-e8623c98acfda4e839a552d5d23e80287be1ec11.tar.gz ecgen-e8623c98acfda4e839a552d5d23e80287be1ec11.tar.zst ecgen-e8623c98acfda4e839a552d5d23e80287be1ec11.zip | |
| -rw-r--r-- | test/src/gen/test_point.c | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/test/src/gen/test_point.c b/test/src/gen/test_point.c new file mode 100644 index 0000000..fd928d6 --- /dev/null +++ b/test/src/gen/test_point.c @@ -0,0 +1,49 @@ +/* + * ecgen, tool for generating Elliptic curve domain parameters + * Copyright (C) 2017 J08nY + */ + +#include "gen/types.h" +#include "gen/point.h" +#include "test/utils.h" +#include <criterion/criterion.h> + +TestSuite(point, .init=default_setup, .fini=default_teardown); + +Test(point, test_point_random) { + GEN e = ellinit(mkvec2s(1, 3), stoi(23), -1); + curve_t curve = {.order = stoi(27), .curve = e}; + config_t cfg = {}; + int ret = point_gen_random(&curve, &cfg, NULL); + + 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."); + + points_free_deep(&curve.points, 1); +} + +Test(point, test_points_random) { + GEN e = ellinit(mkvec2s(1, 3), stoi(23), -1); + curve_t curve = {.order = stoi(27), .curve = e}; + config_t cfg = {}; + size_t npoints = 3; + arg_t arg = {.args = &npoints, .nargs = 1}; + int ret = points_gen_random(&curve, &cfg, &arg); + + cr_assert_eq(ret, 1, "Points weren't generated."); + cr_assert_eq(curve.npoints, npoints, "Incorrect number of points."); + 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(gequal(ellorder(e, point->point, NULL), point->order), + "Point has wrong order set."); + } + + points_free_deep(&curve.points, npoints); +} |
