(info: TestInfo<F, P, S>)
| 759 | } |
| 760 | |
| 761 | fn test_template<F, P, PC, S>(info: TestInfo<F, P, S>) -> Result<(), PC::Error> |
| 762 | where |
| 763 | F: PrimeField, |
| 764 | P: Polynomial<F>, |
| 765 | PC: PolynomialCommitment<F, P>, |
| 766 | S: CryptographicSponge, |
| 767 | { |
| 768 | let TestInfo { |
| 769 | num_iters, |
| 770 | max_degree, |
| 771 | supported_degree, |
| 772 | num_vars, |
| 773 | num_polynomials, |
| 774 | enforce_degree_bounds, |
| 775 | max_num_queries, |
| 776 | num_equations: _, |
| 777 | rand_poly, |
| 778 | rand_point, |
| 779 | sponge, |
| 780 | } = info; |
| 781 | |
| 782 | let sponge = sponge(); |
| 783 | |
| 784 | let rng = &mut ChaCha20Rng::from_rng(test_rng()).unwrap(); |
| 785 | // If testing multivariate polynomials, make the max degree lower |
| 786 | let max_degree = match num_vars { |
| 787 | Some(_) => max_degree.unwrap_or(Uniform::from(2..=10).sample(rng)), |
| 788 | None => max_degree.unwrap_or(Uniform::from(2..=64).sample(rng)), |
| 789 | }; |
| 790 | let pp = PC::setup(max_degree, num_vars, rng)?; |
| 791 | |
| 792 | for _ in 0..num_iters { |
| 793 | let supported_degree = |
| 794 | supported_degree.unwrap_or(Uniform::from(1..=max_degree).sample(rng)); |
| 795 | assert!( |
| 796 | max_degree >= supported_degree, |
| 797 | "max_degree < supported_degree" |
| 798 | ); |
| 799 | let mut polynomials: Vec<LabeledPolynomial<F, P>> = Vec::new(); |
| 800 | let mut degree_bounds = if enforce_degree_bounds { |
| 801 | Some(Vec::new()) |
| 802 | } else { |
| 803 | None |
| 804 | }; |
| 805 | |
| 806 | let mut labels = Vec::new(); |
| 807 | println!("Sampled supported degree"); |
| 808 | |
| 809 | // Generate polynomials |
| 810 | let num_points_in_query_set = Uniform::from(1..=max_num_queries).sample(rng); |
| 811 | for i in 0..num_polynomials { |
| 812 | let label = format!("Test{}", i); |
| 813 | labels.push(label.clone()); |
| 814 | let degree = Uniform::from(1..=supported_degree).sample(rng); |
| 815 | let degree_bound = if let Some(degree_bounds) = &mut degree_bounds { |
| 816 | let range = Uniform::from(degree..=supported_degree); |
| 817 | let degree_bound = range.sample(rng); |
| 818 | degree_bounds.push(degree_bound); |
nothing calls this directly
no test coverage detected