diff --git a/src/gadgets/biguint.rs b/src/gadgets/biguint.rs index 9fe47bf9..0f7ac993 100644 --- a/src/gadgets/biguint.rs +++ b/src/gadgets/biguint.rs @@ -258,7 +258,6 @@ mod tests { let data = builder.build(); let proof = data.prove(pw).unwrap(); - verify(proof, &data.verifier_only, &data.common) } @@ -282,7 +281,6 @@ mod tests { let data = builder.build(); let proof = data.prove(pw).unwrap(); - verify(proof, &data.verifier_only, &data.common) } @@ -306,7 +304,6 @@ mod tests { let data = builder.build(); let proof = data.prove(pw).unwrap(); - verify(proof, &data.verifier_only, &data.common) } @@ -329,7 +326,6 @@ mod tests { let data = builder.build(); let proof = data.prove(pw).unwrap(); - verify(proof, &data.verifier_only, &data.common) } @@ -356,7 +352,6 @@ mod tests { let data = builder.build(); let proof = data.prove(pw).unwrap(); - verify(proof, &data.verifier_only, &data.common) } } diff --git a/src/gadgets/multiple_comparison.rs b/src/gadgets/multiple_comparison.rs index bfeaa098..d9578e46 100644 --- a/src/gadgets/multiple_comparison.rs +++ b/src/gadgets/multiple_comparison.rs @@ -53,3 +53,48 @@ impl, const D: usize> CircuitBuilder { BoolTarget::new_unsafe(result) } } + +#[cfg(test)] +mod tests { + use anyhow::Result; + use rand::Rng; + + use crate::field::crandall_field::CrandallField; + use crate::field::field_types::Field; + use crate::iop::witness::PartialWitness; + use crate::plonk::circuit_builder::CircuitBuilder; + use crate::plonk::circuit_data::CircuitConfig; + use crate::plonk::verifier::verify; + + fn test_list_le(size: usize) -> Result<()> { + type F = CrandallField; + let config = CircuitConfig::large_config(); + let pw = PartialWitness::new(); + let mut builder = CircuitBuilder::::new(config); + + let mut rng = rand::thread_rng(); + + let lst1: Vec = (0..size) + .map(|_| F::from_canonical_u32(rng.gen())) + .collect(); + let lst2: Vec = (0..size) + .map(|_| F::from_canonical_u32(rng.gen())) + .collect(); + let a = lst1.iter().map(|&x| builder.constant(x)).collect(); + let b = lst2.iter().map(|&x| builder.constant(x)).collect(); + + let result = builder.list_le(a, b, 32); + + let expected_result = builder.constant_bool(true); + builder.connect(result.target, expected_result.target); + + let data = builder.build(); + let proof = data.prove(pw).unwrap(); + verify(proof, &data.verifier_only, &data.common) + } + + #[test] + fn test_multiple_comparison_trivial() -> Result<()> { + test_list_le(1) + } +}