poly_commitment/
pbt_srs.rs1use ark_ff::Zero;
7use ark_poly::{univariate::DensePolynomial, DenseUVPolynomial};
8use rand::Rng;
9
10use crate::{commitment::CommitmentCurve, SRS};
11
12pub fn test_regression_commit_non_hiding_expected_number_of_chunks<
15 G: CommitmentCurve,
16 Srs: SRS<G>,
17>() {
18 let mut rng = &mut o1_utils::tests::make_test_rng(None);
19 let log2_srs_size = rng.gen_range(1..6);
21 let srs_size = 1 << log2_srs_size;
22 let srs = Srs::create(srs_size);
23
24 {
27 let poly_degree = srs_size - 1;
29 let poly = DensePolynomial::<G::ScalarField>::rand(poly_degree, &mut rng);
30 let commitment = srs.commit_non_hiding(&poly, 1);
31 assert_eq!(commitment.len(), 1);
32 }
33
34 {
37 let poly_degree = srs_size - 1;
39 let k = rng.gen_range(2..10);
41 let poly = DensePolynomial::<G::ScalarField>::rand(poly_degree, &mut rng);
42 let commitment = srs.commit_non_hiding(&poly, k);
43 assert_eq!(commitment.len(), k);
44 }
45
46 {
49 let k = rng.gen_range(1..10);
50 let poly = DensePolynomial::<G::ScalarField>::zero();
51 let commitment = srs.commit_non_hiding(&poly, k);
52 assert_eq!(commitment.len(), k);
53 }
54
55 {
58 let k = rng.gen_range(2..5);
59 let poly_degree = k * srs_size - 1;
60 let poly = DensePolynomial::<G::ScalarField>::rand(poly_degree, &mut rng);
61 let requested_num_chunks = rng.gen_range(1..k);
64 let commitment = srs.commit_non_hiding(&poly, requested_num_chunks);
65 assert_eq!(commitment.len(), k);
66
67 let commitment = srs.commit_non_hiding(&poly, k);
70 assert_eq!(commitment.len(), k);
71
72 let requested_num_chunks = rng.gen_range(k + 1..10);
75 let commitment = srs.commit_non_hiding(&poly, requested_num_chunks);
76 assert_eq!(commitment.len(), requested_num_chunks);
77 }
78}