Skip to content

Commit 021bdea

Browse files
committed
Add test
1 parent f026dce commit 021bdea

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed

src/backends/plonky2/circuits/mainpod.rs

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -548,6 +548,7 @@ impl MainPodVerifyCircuit {
548548

549549
#[cfg(test)]
550550
mod tests {
551+
use merkletree::MerkleTree;
551552
use plonky2::hash::merkle_proofs;
552553
use plonky2::plonk::{circuit_builder::CircuitBuilder, circuit_data::CircuitConfig};
553554

@@ -626,6 +627,8 @@ mod tests {
626627

627628
#[test]
628629
fn test_operation_verify() -> Result<()> {
630+
let params = Params::default();
631+
629632
// None
630633
let st: mainpod::Statement = Statement::None.into();
631634
let op = mainpod::Operation(
@@ -711,6 +714,39 @@ mod tests {
711714
let prev_statements = vec![st1.clone(), st2];
712715
operation_verify(st, op, prev_statements, merkle_proofs.clone())?;
713716

717+
// NotContainsFromEntries
718+
let kvs = [
719+
(1.into(), 55.into()),
720+
(2.into(), 88.into()),
721+
(175.into(), 0.into()),
722+
]
723+
.into_iter()
724+
.collect();
725+
let mt = MerkleTree::new(params.max_depth_mt_gadget, &kvs)?;
726+
727+
let root = mt.root().into();
728+
let root_ak = AnchoredKey(PodId(Value::from(88).into()), "merkle root".into());
729+
730+
let key = 5.into();
731+
let key_ak = AnchoredKey(PodId(Value::from(88).into()), "key".into());
732+
733+
let no_key_pf = mt.prove_nonexistence(&key)?;
734+
735+
let root_st: mainpod::Statement = Statement::ValueOf(root_ak, root).into();
736+
let key_st: mainpod::Statement = Statement::ValueOf(key_ak, key).into();
737+
let st: mainpod::Statement = Statement::NotContains(root_ak, key_ak).into();
738+
let op = mainpod::Operation(
739+
OperationType::Native(NativeOperation::NotContainsFromEntries),
740+
vec![OperationArg::Index(0), OperationArg::Index(1)],
741+
OperationAux::MerkleProofIndex(0),
742+
);
743+
744+
let merkle_proofs = vec![mainpod::MerkleProof::try_from_middleware(
745+
&params, &root, &key, None, &no_key_pf,
746+
)?];
747+
let prev_statements = vec![root_st, key_st];
748+
operation_verify(st, op, prev_statements, merkle_proofs.clone())?;
749+
714750
Ok(())
715751
}
716752
}

0 commit comments

Comments
 (0)