diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/CMakeLists.txt | 16 | ||||
| -rw-r--r-- | test/Makefile | 15 | ||||
| -rw-r--r-- | test/data/econvert_format.csv (renamed from test/econvert_format.csv) | 0 | ||||
| -rw-r--r-- | test/data/econvert_format.json (renamed from test/econvert_format.json) | 0 | ||||
| -rw-r--r-- | test/data/f2m_10_a.csv (renamed from test/f2m_10_a.csv) | 0 | ||||
| -rw-r--r-- | test/data/f2m_10_a.csv.in (renamed from test/f2m_10_a.csv.in) | 0 | ||||
| -rw-r--r-- | test/data/f2m_10_a.json (renamed from test/f2m_10_a.json) | 0 | ||||
| -rw-r--r-- | test/data/fp_10_a.csv (renamed from test/fp_10_a.csv) | 0 | ||||
| -rw-r--r-- | test/data/fp_10_a.csv.in (renamed from test/fp_10_a.csv.in) | 0 | ||||
| -rw-r--r-- | test/data/fp_10_a.json (renamed from test/fp_10_a.json) | 0 | ||||
| -rwxr-xr-x | test/ecgen.sh | 12 | ||||
| m--------- | test/lib/criterion | 0 | ||||
| -rw-r--r-- | test/src/Makefile | 42 | ||||
| -rw-r--r-- | test/src/math/test_subgroups.c | 28 | ||||
| -rw-r--r-- | test/src/test/utils.c | 14 | ||||
| -rw-r--r-- | test/src/test/utils.h | 12 | ||||
| -rw-r--r-- | test/verify.gp | 0 |
17 files changed, 132 insertions, 7 deletions
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt new file mode 100644 index 0000000..066defb --- /dev/null +++ b/test/CMakeLists.txt @@ -0,0 +1,16 @@ +cmake_minimum_required(VERSION 2.8.11) +project(test_ecgen C) + +include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src) +include_directories(${CMAKE_CURRENT_SOURCE_DIR}/lib/criterion/include) + +find_library(criterion NAMES criterion PATHS ${CMAKE_CURRENT_SOURCE_DIR}/lib/criterion/build) + +file(GLOB TEST_SRC "src/math/*.c" "src/gen/*.c" "src/cm/*.c" "src/invalid/*.c" "src/io/*.c" "src/exhaustive/*.c" "src/util/*.c") +file(GLOB TESTING_SRC "src/test/*.c") +add_executable(test_ecgen ${TEST_SRC} ${TESTING_SRC} ${SRC}) + +target_link_libraries(test_ecgen pthread rt pari ${parson} ${sha1} ${criterion}) + +enable_testing() +add_test(NAME test_ecgen COMMAND test_ecgen)
\ No newline at end of file diff --git a/test/Makefile b/test/Makefile index 10de2dc..7ac8236 100644 --- a/test/Makefile +++ b/test/Makefile @@ -7,8 +7,21 @@ test: ecgen econvert +unittest: unit ecgen econvert + +unit: + cd lib/criterion && mkdir -p build && cd build && cmake .. && cmake --build . + +$(MAKE) -C src all + ecgen: ./ecgen.sh econvert: - ./econvert.sh
\ No newline at end of file + ./econvert.sh + +clean: + +$(MAKE) -C src clean + +clean-all: + cd lib/criterion && rm -r build + +$(MAKE) -C src clean-all
\ No newline at end of file diff --git a/test/econvert_format.csv b/test/data/econvert_format.csv index 358d807..358d807 100644 --- a/test/econvert_format.csv +++ b/test/data/econvert_format.csv diff --git a/test/econvert_format.json b/test/data/econvert_format.json index 8bb9bc2..8bb9bc2 100644 --- a/test/econvert_format.json +++ b/test/data/econvert_format.json diff --git a/test/f2m_10_a.csv b/test/data/f2m_10_a.csv index 913fe0f..913fe0f 100644 --- a/test/f2m_10_a.csv +++ b/test/data/f2m_10_a.csv diff --git a/test/f2m_10_a.csv.in b/test/data/f2m_10_a.csv.in index 33d08e3..33d08e3 100644 --- a/test/f2m_10_a.csv.in +++ b/test/data/f2m_10_a.csv.in diff --git a/test/f2m_10_a.json b/test/data/f2m_10_a.json index e04fbd8..e04fbd8 100644 --- a/test/f2m_10_a.json +++ b/test/data/f2m_10_a.json diff --git a/test/fp_10_a.csv b/test/data/fp_10_a.csv index b9ec96c..b9ec96c 100644 --- a/test/fp_10_a.csv +++ b/test/data/fp_10_a.csv diff --git a/test/fp_10_a.csv.in b/test/data/fp_10_a.csv.in index 4f4cff3..4f4cff3 100644 --- a/test/fp_10_a.csv.in +++ b/test/data/fp_10_a.csv.in diff --git a/test/fp_10_a.json b/test/data/fp_10_a.json index 666491a..666491a 100644 --- a/test/fp_10_a.json +++ b/test/data/fp_10_a.json diff --git a/test/ecgen.sh b/test/ecgen.sh index 2f69c60..c1cbc07 100755 --- a/test/ecgen.sh +++ b/test/ecgen.sh @@ -17,16 +17,16 @@ function runs() { function csv() { start_test - assert_matches "${ecgen} --fp -tcsv --input=fp_10_a.csv.in 10" "$(cat fp_10_a.csv)" - assert_matches "${ecgen} --f2m -tcsv --input=f2m_10_a.csv.in 10" "$(cat f2m_10_a.csv)" + assert_matches "${ecgen} --fp -tcsv --input=data/fp_10_a.csv.in 10" "$(cat data/fp_10_a.csv)" + assert_matches "${ecgen} --f2m -tcsv --input=data/f2m_10_a.csv.in 10" "$(cat data/f2m_10_a.csv)" } function json() { start_test - assert_raises "${ecgen} --fp -tjson --input=fp_10_a.csv.in 10" - assert_raises "${ecgen} --f2m -tjson --input=f2m_10_a.csv.in 10" - fp=$(${ecgen} --fp -tjson --input=fp_10_a.csv.in 10 2>/dev/null) - f2m=$(${ecgen} --f2m -tjson --input=f2m_10_a.csv.in 10 2>/dev/null) + assert_raises "${ecgen} --fp -tjson --input=data/fp_10_a.csv.in 10" + assert_raises "${ecgen} --f2m -tjson --input=data/f2m_10_a.csv.in 10" + fp=$(${ecgen} --fp -tjson --input=data/fp_10_a.csv.in 10 2>/dev/null) + f2m=$(${ecgen} --f2m -tjson --input=data/f2m_10_a.csv.in 10 2>/dev/null) assert_raises "${JSON}" 0 "${fp}" assert_matches "${JSON} -x field\\\",\\\"p" "0x000b" "${fp}" assert_matches "${JSON} -x \\\"a\\\"" "0x0001" "${fp}" diff --git a/test/lib/criterion b/test/lib/criterion new file mode 160000 +Subproject 514b4d820e2f8fb4daa2b95b69c981853656cb7 diff --git a/test/src/Makefile b/test/src/Makefile new file mode 100644 index 0000000..27e6ea2 --- /dev/null +++ b/test/src/Makefile @@ -0,0 +1,42 @@ +#### +# +# ecgen, tool for generating Elliptic curve domain parameters +# Copyright (C) 2017 J08nY +# +#### + + +CC ?= gcc +CFLAGS = -Wall +TEST ?= 0 +ifeq ($(TEST), 1) + CFLAGS += --coverage -g -O0 +endif +LDFLAGS = -L../../lib/parson -L../../lib/sha1 -L../../lib/pari -L../lib/criterion/build +INCLUDES = -I. -I../../src -I../../lib -I../lib/criterion/include +LIBS = -lrt -lpari -lpthread -lparson -lsha1 -lcriterion + +TEST_SRC = $(wildcard *.c) $(wildcard */*.c) +TEST_OBJ = $(patsubst %.c,%.o, $(TEST_SRC)) +TESTS = $(patsubst %.c,%, $(TEST_SRC)) + +ECGEN_SRC = $(wildcard ../../src/*/*.c) +ECGEN_OBJ = $(patsubst %.c,%.o, $(ECGEN_SRC)) + +all: test_ecgen + LD_LIBRARY_PATH=../lib/criterion/build ./test_ecgen + +test_ecgen: $(TEST_OBJ) $(ECGEN_OBJ) + $(CC) $(CFLAGS) $(INCLUDES) -o $@ $^ $(LDFLAGS) $(LIBS) + +%.o: %.c + $(CC) $(CFLAGS) $(INCLUDES) -c -o $@ $< + +clean-all: clean + rm -f ./test_ecgen + +clean: + find . -type f -name '*.o' -exec rm {} + + find . -type f -name '*.gcda' -exec rm {} + + find . -type f -name '*.gcno' -exec rm {} + + find . -type f -name '*.gcov' -exec rm {} + diff --git a/test/src/math/test_subgroups.c b/test/src/math/test_subgroups.c new file mode 100644 index 0000000..ad42282 --- /dev/null +++ b/test/src/math/test_subgroups.c @@ -0,0 +1,28 @@ +/* + * ecgen, tool for generating Elliptic curve domain parameters + * Copyright (C) 2017 J08nY + */ +#include "gen/types.h" +#include "math/subgroups.h" +#include <criterion/criterion.h> +#include "test/utils.h" + +TestSuite(subgroups, .init=default_setup, .fini=default_teardown); + +Test(subgroups, test_prime_factors) { + curve_t curve = {.order = stoi(12)}; + config_t cfg = {.prime = false}; + GEN divs = subgroups_prime(&curve, &cfg); + GEN vec = gtocol0(gen_0, 2); + gel(vec, 1) = stoi(2); + gel(vec, 2) = stoi(3); + cr_assert(gequal(divs, vec), "Factors not equal!"); +} + +Test(subgroups, test_prime_prime) { + curve_t curve = {.order = stoi(5)}; + config_t cfg = {.prime = true}; + GEN divs = subgroups_prime(&curve, &cfg); + GEN vec = gtocol(stoi(5)); + cr_assert(gequal(divs, vec), "Factors not equal!"); +}
\ No newline at end of file diff --git a/test/src/test/utils.c b/test/src/test/utils.c new file mode 100644 index 0000000..a8a11db --- /dev/null +++ b/test/src/test/utils.c @@ -0,0 +1,14 @@ +/* + * ecgen, tool for generating Elliptic curve domain parameters + * Copyright (C) 2017 J08nY + */ +#include "utils.h" +#include <pari/pari.h> + +void default_setup(void) { + pari_init(1000000, 1000000); +} + +void default_teardown(void) { + pari_close(); +}
\ No newline at end of file diff --git a/test/src/test/utils.h b/test/src/test/utils.h new file mode 100644 index 0000000..2780bd2 --- /dev/null +++ b/test/src/test/utils.h @@ -0,0 +1,12 @@ +/* + * ecgen, tool for generating Elliptic curve domain parameters + * Copyright (C) 2017 J08nY + */ +#ifndef ECGEN_UTILS_H +#define ECGEN_UTILS_H + +void default_setup(void); + +void default_teardown(void); + +#endif //ECGEN_UTILS_H diff --git a/test/verify.gp b/test/verify.gp deleted file mode 100644 index e69de29..0000000 --- a/test/verify.gp +++ /dev/null |
