@@ -684,16 +684,16 @@ mod tests {
684
684
assert_eq!( tree. nodes, decoded. nodes) ;
685
685
}
686
686
687
- #[ test]
688
- fn test_create_batch_proof( ( t, values) in arb_tree( 30 ) ) {
689
- let mut mt_index_list : Vec <usize > = Vec :: new( ) ;
690
- for ( i, _v) in values. iter( ) . enumerate( ) {
691
- mt_index_list. push( i) ;
692
- }
693
- mt_index_list. sort_unstable( ) ;
694
- let batch_proof = t. get_batched_path( mt_index_list) ;
695
- assert!( t. to_commitment_batch_compat( ) . check( & values, & batch_proof) . is_ok( ) ) ;
696
- }
687
+ // #[test]
688
+ // fn test_create_batch_proof((t, values) in arb_tree(30)) {
689
+ // let mut mt_index_list :Vec<usize> = Vec::new();
690
+ // for (i, _v) in values.iter().enumerate() {
691
+ // mt_index_list.push(i);
692
+ // }
693
+ // mt_index_list.sort_unstable();
694
+ // let batch_proof = t.get_batched_path(mt_index_list);
695
+ // assert!(t.to_commitment_batch_compat().check(&values, &batch_proof).is_ok());
696
+ // }
697
697
698
698
#[ test]
699
699
fn test_bytes_batch_path( ( t, values) in arb_tree( 30 ) ) {
@@ -780,19 +780,66 @@ mod tests {
780
780
}
781
781
}
782
782
783
- // prop_compose! {
784
- // fn arb_tree_arb_index_list(max_size: u32)
785
- // (v in vec(any::<u64>(), 2..max_size as usize)) -> (MerkleTree<Blake2b<U32>>, Vec<MTLeaf>, Vec<&'static usize>) {
786
- // let mut rng = thread_rng();
787
- // let size = v.len();
788
- // let pks = vec![VerificationKey::default(); size];
789
- // let leaves = pks.into_iter().zip(v.into_iter()).map(|(key, stake)| MTLeaf(key, stake)).collect::<Vec<MTLeaf>>();
790
- // let mut indices :Vec<usize> = Vec::with_capacity(size);
791
- // for (i, _v) in leaves.iter().enumerate() {
792
- // indices.push(i);
793
- // }
794
- // let mt_index_list: Vec<&usize> = indices.iter().choose_multiple(&mut rng, (size/10)*7);
795
- // (MerkleTree::<Blake2b<U32>>::create(&leaves), leaves, mt_index_list)
796
- // }
797
- // }
783
+ prop_compose ! {
784
+ fn arb_tree_arb_index_list( max_size: u32 )
785
+ ( v in vec( any:: <u64 >( ) , 2 ..max_size as usize ) ) -> ( MerkleTree <Blake2b <U32 >>, Vec <MTLeaf >, Vec <usize >) {
786
+ let mut rng = thread_rng( ) ;
787
+ let size = v. len( ) ;
788
+ let pks = vec![ VerificationKey :: default ( ) ; size] ;
789
+ let leaves = pks. into_iter( ) . zip( v. into_iter( ) ) . map( |( key, stake) | MTLeaf ( key, stake) ) . collect:: <Vec <MTLeaf >>( ) ;
790
+ let mut indices : Vec <usize > = Vec :: with_capacity( size) ;
791
+ for ( i, _v) in leaves. iter( ) . enumerate( ) {
792
+ indices. push( i) ;
793
+ }
794
+ indices. iter( ) . choose_multiple( & mut rng, size / 10 * 7 ) ;
795
+ ( MerkleTree :: <Blake2b <U32 >>:: create( & leaves) , leaves, indices)
796
+ }
797
+ }
798
+
799
+ proptest ! {
800
+ // Test the relation that t.get_path(i) is a valid
801
+ // proof for i
802
+ #![ proptest_config( ProptestConfig :: with_cases( 100 ) ) ]
803
+ #[ test]
804
+ fn test_create_batch_proof( ( t, values, indices) in arb_tree_arb_index_list( 60 ) ) {
805
+
806
+ indices. clone( ) . sort_unstable( ) ;
807
+ print!( "Indices: {}\n " , indices. len( ) ) ;
808
+ let batch_proof = t. get_batched_path( indices) ;
809
+ print!( "Path: {}\n " , batch_proof. values. len( ) ) ;
810
+ print!( "tree: {}\n " , t. nodes. len( ) ) ;
811
+
812
+ assert!( t. to_commitment_batch_compat( ) . check( & values, & batch_proof) . is_ok( ) ) ;
813
+ }
814
+
815
+ // #[test]
816
+ // fn test_bytes_batch_path((t, values) in arb_tree(30)) {
817
+ // let mut mt_index_list :Vec<usize> = Vec::new();
818
+ // for (i, _v) in values.iter().enumerate() {
819
+ // mt_index_list.push(i);
820
+ // }
821
+ // mt_index_list.sort_unstable();
822
+ //
823
+ // let bp = t.get_batched_path(mt_index_list);
824
+ //
825
+ // let bytes = &bp.to_bytes();
826
+ // let deserialized = BatchPath::from_bytes(bytes).unwrap();
827
+ // assert!(t.to_commitment_batch_compat().check(&values, &deserialized).is_ok());
828
+ //
829
+ // let encoded = bincode::serialize(&bp).unwrap();
830
+ // let decoded: BatchPath<Blake2b<U32>> = bincode::deserialize(&encoded).unwrap();
831
+ // assert!(t.to_commitment_batch_compat().check(&values, &decoded).is_ok());
832
+ // }
833
+ //
834
+ // #[test]
835
+ // fn test_bytes_tree_commitment_batch_compat((t, values) in arb_tree(5)) {
836
+ // let encoded = bincode::serialize(&t.to_commitment_batch_compat()).unwrap();
837
+ // let decoded: MerkleTreeCommitmentBatchCompat::<Blake2b<U32>> = bincode::deserialize(&encoded).unwrap();
838
+ // let tree_commitment = MerkleTree::<Blake2b<U32>>::create(&values).to_commitment_batch_compat();
839
+ // assert_eq!(tree_commitment.root, decoded.root);
840
+ // assert_eq!(tree_commitment.nr_leaves, decoded.nr_leaves);
841
+ //
842
+ // }
843
+
844
+ }
798
845
}
0 commit comments