aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/common.sh8
-rwxr-xr-xtest/ecgen.sh55
-rw-r--r--test/src/util/test_bits.c4
3 files changed, 54 insertions, 13 deletions
diff --git a/test/common.sh b/test/common.sh
index 42978a3..7d1ea22 100644
--- a/test/common.sh
+++ b/test/common.sh
@@ -7,7 +7,6 @@
####
ecgen="../ecgen"
-econvert="../econvert"
ASSERT="lib/assert.sh/assert.sh"
JSON="lib/JSON.sh/JSON.sh"
@@ -41,3 +40,10 @@ canonical_num() {
num=$(strip_num "$1")
echo "ibase=16;${num^^}" | bc
}
+
+get_pari_order() {
+ p=$(canonical_num $(echo $1 | ${JSON} -x field\",\"p | cut -f 2))
+ a=$(canonical_num $(echo $1 | ${JSON} -x \"a | cut -f 2))
+ b=$(canonical_num $(echo $1 | ${JSON} -x \"b | cut -f 2))
+ echo "ellcard(ellinit([${a}, ${b}], ${p}))" | gp -f -q | tr -cd [:digit:] 2>/dev/null
+} \ No newline at end of file
diff --git a/test/ecgen.sh b/test/ecgen.sh
index 38670bc..96dacb3 100755
--- a/test/ecgen.sh
+++ b/test/ecgen.sh
@@ -101,20 +101,24 @@ function nums() {
function anomalous() {
start_test
assert_raises "${ecgen} --fp --anomalous -r 20"
- out=$(${ecgen} --fp --anomalous -r 20 2>/dev/null)
- p=$(echo $out | ${JSON} -x field\",\"p | cut -f 2)
- order=$(echo $out | ${JSON} -x ^0,\"order\" | cut -f 2)
- assert "strip_num $p" $(strip_num $order)
+ for i in $(seq 10); do
+ out=$(${ecgen} --fp --anomalous -r 20 2>/dev/null)
+ p=$(echo $out | ${JSON} -x field\",\"p | cut -f 2)
+ order=$(echo $out | ${JSON} -x ^0,\"order\" | cut -f 2)
+ assert "strip_num $p" $(strip_num $order)
+ done
}
function supersingular() {
start_test
assert_raises "${ecgen} --fp --supersingular -r -c 5 20"
- out=$(${ecgen} --fp --supersingular -r 20 2>/dev/null)
- p=$(echo $out | ${JSON} -x field\",\"p | cut -f 2)
- order=$(echo $out | ${JSON} -x ^0,\"order\" | cut -f 2)
- order_m1=$(echo $(canonical_num $order) - 1 | bc)
- assert "canonical_num $p" $order_m1
+ for i in $(seq 10); do
+ out=$(${ecgen} --fp --supersingular -r 20 2>/dev/null)
+ p=$(echo $out | ${JSON} -x field\",\"p | cut -f 2)
+ order=$(echo $out | ${JSON} -x ^0,\"order\" | cut -f 2)
+ order_m1=$(echo $(canonical_num $order) - 1 | bc)
+ assert "canonical_num $p" $order_m1
+ done
assert_raises "${ecgen} --fp --supersingular --input=data/prime.in 64"
@@ -187,12 +191,42 @@ function hex() {
function cm() {
start_test
assert_raises "${ecgen} --fp --order=2147483723 32"
- assert_raises "${ecgen} --fp --order=123456789012345678901234567890123456789012345678901234568197 196"
+ assert_raises "${ecgen} --fp --order=123456789012345678901234567890123456789012345678901234568197 --threads=5 196"
assert_raises "${ecgen} --fp --order=46874566546,3546,3125 64"
+ assert_raises "${ecgen} --fp -u --order=46874566546,3546,3125 64"
assert_raises "${ecgen} --fp --order=0 16" 1
assert_raises "${ecgen} --fp --order=0x1000 8" 1
}
+function cm_orders() {
+ start_test
+ for i in $(seq 5 100); do
+ out=$(timeout -k 4 3 ${ecgen} --fp -n $i --points=none 6 2>/dev/null)
+ if [[ -z "$out" || "$out" = "[" ]]; then
+ continue
+ fi
+ order=$(echo $out | ${JSON} -x ^0,\"order\" | cut -f 2)
+ pari_order=$(get_pari_order "$out")
+ assert "canonical_num $order" "$pari_order"
+ done
+
+ prime_orders=(45678945611413 47889465415131 78246132456157 3879641663983 134537095890397 3790687732807)
+ for ord in "${prime_orders[@]}"; do
+ out=$(${ecgen} --fp -r --order=$ord 64 2>/dev/null)
+ p=$(echo $out | ${JSON} -x field\",\"p | cut -f 2)
+ order=$(echo $out | ${JSON} -x ^0,\"order\" | cut -f 2)
+ assert "canonical_num $order" $ord
+ done
+
+ composite_orders=(106618070007935 32268705670290 78286235471710 93953327960423 17042092126557 43615536370894)
+ for ord in "${composite_orders[@]}"; do
+ out=$(${ecgen} --fp -r --order=$ord 64 2>/dev/null)
+ p=$(echo $out | ${JSON} -x field\",\"p | cut -f 2)
+ order=$(echo $out | ${JSON} -x ^0,\"order\" | cut -f 2)
+ assert "canonical_num $order" $ord
+ done
+}
+
function secg() {
function test_order() {
name="${1}"
@@ -235,5 +269,6 @@ twist
cli
hex
cm
+cm_orders
secg
end_suite ecgen
diff --git a/test/src/util/test_bits.c b/test/src/util/test_bits.c
index 269d1f6..e5a2f73 100644
--- a/test/src/util/test_bits.c
+++ b/test/src/util/test_bits.c
@@ -243,14 +243,14 @@ Test(bits, test_bits_or) {
bits_t *other_bits = bits_new(6);
other_bits->bits[0] = 0b10000000;
- bits_t * or = bits_or(bits, other_bits);
+ 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);
+ bits_free(&or);
}
Test(bits, test_bits_and) {