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 {
48 let k = rng.gen_range(1..10);
49 let poly = DensePolynomial::<G::ScalarField>::zero();
50 let commitment = srs.commit_non_hiding(&poly, k);
51 assert_eq!(commitment.len(), k);
52 }
53
54 {
57 let k = rng.gen_range(2..5);
58 let poly_degree = k * srs_size - 1;
59 let poly = DensePolynomial::<G::ScalarField>::rand(poly_degree, &mut rng);
60 let requested_num_chunks = rng.gen_range(1..k);
63 let commitment = srs.commit_non_hiding(&poly, requested_num_chunks);
64 assert_eq!(commitment.len(), k);
65
66 let commitment = srs.commit_non_hiding(&poly, k);
69 assert_eq!(commitment.len(), k);
70
71 let requested_num_chunks = rng.gen_range(k + 1..10);
74 let commitment = srs.commit_non_hiding(&poly, requested_num_chunks);
75 assert_eq!(commitment.len(), requested_num_chunks);
76 }
77}