binius_circuits/builder/
test_utils.rs1use binius_core::constraint_system::{channel::Boundary, validate::validate_witness};
4
5use super::{types::F, ConstraintSystemBuilder};
6
7pub fn test_circuit(
8 build_circuit: fn(&mut ConstraintSystemBuilder) -> Result<Vec<Boundary<F>>, anyhow::Error>,
9) -> Result<(), anyhow::Error> {
10 let mut verifier_builder = ConstraintSystemBuilder::new();
11 let verifier_boundaries = build_circuit(&mut verifier_builder)?;
12 let verifier_constraint_system = verifier_builder.build()?;
13
14 let allocator = bumpalo::Bump::new();
15 let mut prover_builder = ConstraintSystemBuilder::new_with_witness(&allocator);
16 let prover_boundaries = build_circuit(&mut prover_builder)?;
17 let prover_witness = prover_builder.take_witness()?;
18 let _prover_constraint_system = prover_builder.build()?;
19
20 assert_eq!(verifier_boundaries, prover_boundaries);
21 validate_witness(&verifier_constraint_system, &verifier_boundaries, &prover_witness)?;
22 Ok(())
23}