ark-curves-cherry-picked/ed_on_bls12_381/src/curves/tests.rs
ed_on_bls12_381/src/curves/tests.rsRaw
1use ark_algebra_test_templates::curves::*;
2use ark_ec::{AffineCurve, ProjectiveCurve};
3use ark_ff::Zero;
4use ark_std::{ops::Mul, str::FromStr};
5
6use crate::*;
7
8#[test]
9fn test_projective_curve() {
10 curve_tests::<EdwardsProjective>();
11
12 edwards_tests::<JubjubParameters>();
13 montgomery_conversion_test::<JubjubParameters>();
14 sw_tests::<JubjubParameters>();
15}
16
17#[test]
18fn test_generator() {
19 // edward curve
20 let generator = EdwardsAffine::prime_subgroup_generator();
21 assert!(generator.is_on_curve());
22 assert!(generator.is_in_correct_subgroup_assuming_on_curve());
23
24 // weierstrass curve
25 let generator = SWAffine::prime_subgroup_generator();
26 assert!(generator.is_on_curve());
27 assert!(generator.is_in_correct_subgroup_assuming_on_curve());
28}
29
30#[test]
31fn test_scalar_multiplication() {
32 let f1 = Fr::from_str(
33 "4691331900926794624732159288782398864809513177368446695323460897088210774597",
34 )
35 .unwrap();
36 let f2 = Fr::from_str(
37 "1305028103380024953477151132159456965337646722479526711736847301646466538045",
38 )
39 .unwrap();
40
41 let g = EdwardsAffine::from_str(
42 "(1158870117176967269192899343636553522971009777237254192973081388797299308391, \
43 36933624999642413792569726058244472742169727126562409632889593958355839948294)",
44 )
45 .unwrap();
46 let f1f2g = EdwardsAffine::from_str(
47 "(12638652891150111215300246576936483137884466359309882317048163368620501191944, \
48 38385045634663742820428406709832518145724237919360177362175527604556651918148)",
49 )
50 .unwrap();
51
52 assert!(!g.is_zero());
53 assert!(!f1f2g.is_zero());
54
55 let f1g = g.mul(f1).into_affine();
56 assert_eq!(g.mul(f1 * &f2).into_affine(), f1f2g);
57 assert_eq!(f1g.mul(f2).into_affine(), f1f2g);
58}
59
60#[test]
61fn test_montgomery_conversion() {
62 montgomery_conversion_test::<JubjubParameters>();
63}