From 5d30124101e7951db4b0ec6afd1c3722f36c29ca Mon Sep 17 00:00:00 2001 From: Nicholas Ward Date: Thu, 22 Jul 2021 10:55:11 -0700 Subject: [PATCH] moved specific tests to prime_field_arithmetic --- src/field/crandall_field.rs | 4 +-- src/field/extension_field/quadratic.rs | 4 +-- src/field/extension_field/quartic.rs | 4 +-- src/field/field_testing.rs | 44 ++++++++++++++++---------- 4 files changed, 34 insertions(+), 22 deletions(-) diff --git a/src/field/crandall_field.rs b/src/field/crandall_field.rs index 1c57efa7..3946ead5 100644 --- a/src/field/crandall_field.rs +++ b/src/field/crandall_field.rs @@ -480,7 +480,7 @@ impl Frobenius<1> for CrandallField {} #[cfg(test)] mod tests { - use crate::test_arithmetic; + use crate::test_prime_field_arithmetic; - test_arithmetic!(crate::field::crandall_field::CrandallField); + test_prime_field_arithmetic!(crate::field::crandall_field::CrandallField); } diff --git a/src/field/extension_field/quadratic.rs b/src/field/extension_field/quadratic.rs index 491d06e6..1b9c78a1 100644 --- a/src/field/extension_field/quadratic.rs +++ b/src/field/extension_field/quadratic.rs @@ -222,7 +222,7 @@ mod tests { use crate::field::extension_field::quadratic::QuadraticCrandallField; use crate::field::extension_field::{FieldExtension, Frobenius}; use crate::field::field::Field; - use crate::test_arithmetic; + use crate::test_field_arithmetic; #[test] fn test_add_neg_sub_mul() { @@ -294,5 +294,5 @@ mod tests { ); } - test_arithmetic!(crate::field::extension_field::quadratic::QuadraticCrandallField); + test_field_arithmetic!(crate::field::extension_field::quadratic::QuadraticCrandallField); } diff --git a/src/field/extension_field/quartic.rs b/src/field/extension_field/quartic.rs index c6d152a3..15f90a5d 100644 --- a/src/field/extension_field/quartic.rs +++ b/src/field/extension_field/quartic.rs @@ -289,7 +289,7 @@ mod tests { use crate::field::extension_field::quartic::QuarticCrandallField; use crate::field::extension_field::{FieldExtension, Frobenius}; use crate::field::field::Field; - use crate::test_arithmetic; + use crate::test_field_arithmetic; fn exp_naive(x: F, power: u128) -> F { let mut current = x; @@ -388,5 +388,5 @@ mod tests { ); } - test_arithmetic!(crate::field::extension_field::quartic::QuarticCrandallField); + test_field_arithmetic!(crate::field::extension_field::quartic::QuarticCrandallField); } diff --git a/src/field/field_testing.rs b/src/field/field_testing.rs index 4822024a..e2ae0fa7 100644 --- a/src/field/field_testing.rs +++ b/src/field/field_testing.rs @@ -149,9 +149,9 @@ pub fn run_binaryop_test_cases( } #[macro_export] -macro_rules! test_arithmetic { +macro_rules! test_prime_field_arithmetic { ($field:ty) => { - mod arithmetic { + mod prime_field_arithmetic { use std::ops::{Add, Mul, Neg, Sub}; use num_bigint::BigUint; @@ -161,7 +161,7 @@ macro_rules! test_arithmetic { // Can be 32 or 64; doesn't have to be computer's actual word // bits. Choosing 32 gives more tests... const WORD_BITS: usize = 32; - + #[test] fn arithmetic_addition() { let modulus = <$field>::order(); @@ -251,6 +251,30 @@ macro_rules! test_arithmetic { } } + #[test] + fn subtraction() { + type F = $field; + + let (a, b) = ( + F::from_canonical_biguint((F::order() + 1u32) / 2u32), + F::TWO, + ); + let x = a * b; + assert_eq!(x, F::ONE); + assert_eq!(F::ZERO - x, F::NEG_ONE); + } + } + }; +} + +#[macro_export] +macro_rules! test_field_arithmetic { + ($field:ty) => { + mod field_arithmetic { + use num_bigint::BigUint; + + use crate::field::field::Field; + #[test] fn batch_inversion() { let xs = (1..=3) @@ -322,19 +346,6 @@ macro_rules! test_arithmetic { } } - #[test] - fn subtraction() { - type F = $field; - - let (a, b) = ( - F::from_canonical_biguint((F::order() + 1u32) / 2u32), - F::TWO, - ); - let x = a * b; - assert_eq!(x, F::ONE); - assert_eq!(F::ZERO - x, F::NEG_ONE); - } - #[test] fn inverse_2exp() { // Just check consistency with try_inverse() @@ -351,3 +362,4 @@ macro_rules! test_arithmetic { } }; } +