@@ -196,26 +196,21 @@ impl PrimeField for FieldElement {
196196mod tests {
197197 use super :: FieldElement ;
198198 use crate :: { FieldBytes , test_vectors:: field:: DBL_TEST_VECTORS } ;
199- use core:: ops:: Mul ;
200199
201200 #[ cfg( target_pointer_width = "64" ) ]
202201 use crate :: U256 ;
203202 #[ cfg( target_pointer_width = "64" ) ]
204203 use proptest:: { num:: u64:: ANY , prelude:: * } ;
205204
206- # [ test ]
207- fn zero_is_additive_identity ( ) {
208- let zero = FieldElement :: ZERO ;
209- let one = FieldElement :: ONE ;
210- assert_eq ! ( zero . add ( & zero ) , zero ) ;
211- assert_eq ! ( one . add ( & zero ) , one ) ;
212- }
205+ /// t = (modulus - 1) >> S
206+ const T : [ u64 ; 4 ] = [
207+ 0xffffffffffffffff ,
208+ 0x000000007fffffff ,
209+ 0x8000000000000000 ,
210+ 0x7fffffff80000000 ,
211+ ] ;
213212
214- #[ test]
215- fn one_is_multiplicative_identity ( ) {
216- let one = FieldElement :: ONE ;
217- assert_eq ! ( one. mul( & one) , one) ;
218- }
213+ primefield:: test_primefield!( FieldElement , T ) ;
219214
220215 #[ test]
221216 fn from_bytes ( ) {
@@ -295,26 +290,6 @@ mod tests {
295290 assert_eq ! ( two. pow_vartime( & [ 2 , 0 , 0 , 0 ] ) , four) ;
296291 }
297292
298- #[ test]
299- fn invert ( ) {
300- assert ! ( bool :: from( FieldElement :: ZERO . invert( ) . is_none( ) ) ) ;
301-
302- let one = FieldElement :: ONE ;
303- assert_eq ! ( one. invert( ) . unwrap( ) , one) ;
304-
305- let two = one + & one;
306- let inv_two = two. invert ( ) . unwrap ( ) ;
307- assert_eq ! ( two * & inv_two, one) ;
308- }
309-
310- #[ test]
311- fn sqrt ( ) {
312- let one = FieldElement :: ONE ;
313- let two = one + & one;
314- let four = two. square ( ) ;
315- assert_eq ! ( four. sqrt( ) . unwrap( ) , two) ;
316- }
317-
318293 #[ cfg( target_pointer_width = "64" ) ]
319294 proptest ! {
320295 /// This checks behaviour well within the field ranges, because it doesn't set the
0 commit comments