mirror of https://github.com/zcash/halo2.git
Add test cases exercising Error::NotEnoughColumnsForConstants
This commit is contained in:
parent
6420a25c8c
commit
4e6c857854
|
@ -305,3 +305,58 @@ impl<'r, 'a, F: Field, CS: Assignment<F> + 'a> RegionLayouter<F>
|
|||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use pasta_curves::vesta;
|
||||
|
||||
use super::SimpleFloorPlanner;
|
||||
use crate::{
|
||||
dev::MockProver,
|
||||
plonk::{Advice, Circuit, Column, Error},
|
||||
};
|
||||
|
||||
#[test]
|
||||
fn not_enough_columns_for_constants() {
|
||||
struct MyCircuit {}
|
||||
|
||||
impl Circuit<vesta::Scalar> for MyCircuit {
|
||||
type Config = Column<Advice>;
|
||||
type FloorPlanner = SimpleFloorPlanner;
|
||||
|
||||
fn without_witnesses(&self) -> Self {
|
||||
MyCircuit {}
|
||||
}
|
||||
|
||||
fn configure(meta: &mut crate::plonk::ConstraintSystem<vesta::Scalar>) -> Self::Config {
|
||||
meta.advice_column()
|
||||
}
|
||||
|
||||
fn synthesize(
|
||||
&self,
|
||||
config: Self::Config,
|
||||
mut layouter: impl crate::circuit::Layouter<vesta::Scalar>,
|
||||
) -> Result<(), crate::plonk::Error> {
|
||||
layouter.assign_region(
|
||||
|| "assign constant",
|
||||
|mut region| {
|
||||
region.assign_advice_from_constant(
|
||||
|| "one",
|
||||
config,
|
||||
0,
|
||||
vesta::Scalar::one(),
|
||||
)
|
||||
},
|
||||
)?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
let circuit = MyCircuit {};
|
||||
assert_eq!(
|
||||
MockProver::run(3, &circuit, vec![]).unwrap_err(),
|
||||
Error::NotEnoughColumnsForConstants,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -414,3 +414,57 @@ impl<'r, 'a, F: Field, CS: Assignment<F> + 'a> RegionLayouter<F> for V1Region<'r
|
|||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use pasta_curves::vesta;
|
||||
|
||||
use crate::{
|
||||
dev::MockProver,
|
||||
plonk::{Advice, Circuit, Column, Error},
|
||||
};
|
||||
|
||||
#[test]
|
||||
fn not_enough_columns_for_constants() {
|
||||
struct MyCircuit {}
|
||||
|
||||
impl Circuit<vesta::Scalar> for MyCircuit {
|
||||
type Config = Column<Advice>;
|
||||
type FloorPlanner = super::V1;
|
||||
|
||||
fn without_witnesses(&self) -> Self {
|
||||
MyCircuit {}
|
||||
}
|
||||
|
||||
fn configure(meta: &mut crate::plonk::ConstraintSystem<vesta::Scalar>) -> Self::Config {
|
||||
meta.advice_column()
|
||||
}
|
||||
|
||||
fn synthesize(
|
||||
&self,
|
||||
config: Self::Config,
|
||||
mut layouter: impl crate::circuit::Layouter<vesta::Scalar>,
|
||||
) -> Result<(), crate::plonk::Error> {
|
||||
layouter.assign_region(
|
||||
|| "assign constant",
|
||||
|mut region| {
|
||||
region.assign_advice_from_constant(
|
||||
|| "one",
|
||||
config,
|
||||
0,
|
||||
vesta::Scalar::one(),
|
||||
)
|
||||
},
|
||||
)?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
let circuit = MyCircuit {};
|
||||
assert_eq!(
|
||||
MockProver::run(3, &circuit, vec![]).unwrap_err(),
|
||||
Error::NotEnoughColumnsForConstants,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -134,7 +134,7 @@ pub struct ProvingKey<C: CurveAffine> {
|
|||
|
||||
/// This is an error that could occur during proving or circuit synthesis.
|
||||
// TODO: these errors need to be cleaned up
|
||||
#[derive(Debug)]
|
||||
#[derive(Debug, PartialEq)]
|
||||
pub enum Error {
|
||||
/// This is an error that can occur during synthesis of the circuit, for
|
||||
/// example, when the witness is not present.
|
||||
|
|
Loading…
Reference in New Issue