diff --git a/zokrates_core_test/tests/tests/add.json b/zokrates_core_test/tests/tests/add.json index ebc660a9..55ceb698 100644 --- a/zokrates_core_test/tests/tests/add.json +++ b/zokrates_core_test/tests/tests/add.json @@ -1,5 +1,6 @@ { "entry_point": "./tests/tests/add.zok", + "curve": "Bn128", "tests": [ { "input": { diff --git a/zokrates_core_test/tests/tests/array_if.json b/zokrates_core_test/tests/tests/array_if.json index 6cfec59b..c85ac9e8 100644 --- a/zokrates_core_test/tests/tests/array_if.json +++ b/zokrates_core_test/tests/tests/array_if.json @@ -1,5 +1,6 @@ { "entry_point": "./tests/tests/array_if.zok", + "curve": "Bn128", "tests": [ { "input": { diff --git a/zokrates_core_test/tests/tests/arrays/identity.json b/zokrates_core_test/tests/tests/arrays/identity.json index e6a36236..2409da17 100644 --- a/zokrates_core_test/tests/tests/arrays/identity.json +++ b/zokrates_core_test/tests/tests/arrays/identity.json @@ -1,5 +1,6 @@ { "entry_point": "./tests/tests/arrays/identity.code", + "curve": "Bn128", "tests": [ { "input": { diff --git a/zokrates_core_test/tests/tests/assert_one.json b/zokrates_core_test/tests/tests/assert_one.json index 2a8a099d..1e682907 100644 --- a/zokrates_core_test/tests/tests/assert_one.json +++ b/zokrates_core_test/tests/tests/assert_one.json @@ -1,5 +1,6 @@ { "entry_point": "./tests/tests/assert_one.zok", + "curve": "Bn128", "tests": [ { "input": { diff --git a/zokrates_core_test/tests/tests/bool_compare.json b/zokrates_core_test/tests/tests/bool_compare.json index 7455cc05..c775d2be 100644 --- a/zokrates_core_test/tests/tests/bool_compare.json +++ b/zokrates_core_test/tests/tests/bool_compare.json @@ -1,6 +1,7 @@ { "entry_point": "./tests/tests/bool_compare.zok", - "tests": [ + "curve": "Bn128", + "tests": [ { "input": { "values": [ diff --git a/zokrates_core_test/tests/tests/fact_up_to_4.json b/zokrates_core_test/tests/tests/fact_up_to_4.json index b3936a18..ba395239 100644 --- a/zokrates_core_test/tests/tests/fact_up_to_4.json +++ b/zokrates_core_test/tests/tests/fact_up_to_4.json @@ -1,5 +1,6 @@ { "entry_point": "./tests/tests/fact_up_to_4.zok", + "curve": "Bn128", "tests": [ { "input": { diff --git a/zokrates_core_test/tests/tests/precedence.json b/zokrates_core_test/tests/tests/precedence.json index 6d9a678e..3aaa08ee 100644 --- a/zokrates_core_test/tests/tests/precedence.json +++ b/zokrates_core_test/tests/tests/precedence.json @@ -1,6 +1,7 @@ { "entry_point": "./tests/tests/precedence.zok", - "tests": [ + "curve": "Bn128", + "tests": [ { "input": { "values": [ diff --git a/zokrates_core_test/tests/tests/split.json b/zokrates_core_test/tests/tests/split.json index f1d5cfb8..b0a77fb3 100644 --- a/zokrates_core_test/tests/tests/split.json +++ b/zokrates_core_test/tests/tests/split.json @@ -1,5 +1,6 @@ { "entry_point": "./tests/tests/split.zok", + "curve": "Bn128", "tests": [ { "input": { diff --git a/zokrates_core_test/tests/tests/spread_slice.json b/zokrates_core_test/tests/tests/spread_slice.json index afedb079..a76fba20 100644 --- a/zokrates_core_test/tests/tests/spread_slice.json +++ b/zokrates_core_test/tests/tests/spread_slice.json @@ -1,5 +1,6 @@ { "entry_point": "./tests/tests/spread_slice.zok", + "curve": "Bn128", "tests": [ { "input": { diff --git a/zokrates_core_test/tests/tests/structs/identity.json b/zokrates_core_test/tests/tests/structs/identity.json index db4b136e..e30fec87 100644 --- a/zokrates_core_test/tests/tests/structs/identity.json +++ b/zokrates_core_test/tests/tests/structs/identity.json @@ -1,5 +1,6 @@ { "entry_point": "./tests/tests/structs/identity.code", + "curve": "Bn128", "tests": [ { "input": { diff --git a/zokrates_stdlib/tests/tests/and.json b/zokrates_stdlib/tests/tests/and.json index 64273a19..ac50829f 100644 --- a/zokrates_stdlib/tests/tests/and.json +++ b/zokrates_stdlib/tests/tests/and.json @@ -1,5 +1,6 @@ { "entry_point": "./stdlib/utils/binary/and.zok", + "curve": "Bn128", "tests": [ { "input": { diff --git a/zokrates_stdlib/tests/tests/ecc/edwardsAdd.json b/zokrates_stdlib/tests/tests/ecc/edwardsAdd.json index c7e6c571..6ab431c9 100644 --- a/zokrates_stdlib/tests/tests/ecc/edwardsAdd.json +++ b/zokrates_stdlib/tests/tests/ecc/edwardsAdd.json @@ -1,5 +1,6 @@ { "entry_point": "./tests/tests/ecc/edwardsAdd.zok", + "curve": "Bn128", "tests": [ { "input": { diff --git a/zokrates_stdlib/tests/tests/ecc/edwardsCompress.json b/zokrates_stdlib/tests/tests/ecc/edwardsCompress.json index e4d6e067..ca4c36f2 100644 --- a/zokrates_stdlib/tests/tests/ecc/edwardsCompress.json +++ b/zokrates_stdlib/tests/tests/ecc/edwardsCompress.json @@ -1,5 +1,6 @@ { "entry_point": "./tests/tests/ecc/edwardsCompress.zok", + "curve": "Bn128", "tests": [ { "input": { diff --git a/zokrates_stdlib/tests/tests/ecc/edwardsOnCurve.json b/zokrates_stdlib/tests/tests/ecc/edwardsOnCurve.json index c4bf025e..fcad4fad 100644 --- a/zokrates_stdlib/tests/tests/ecc/edwardsOnCurve.json +++ b/zokrates_stdlib/tests/tests/ecc/edwardsOnCurve.json @@ -1,5 +1,6 @@ { "entry_point": "./tests/tests/ecc/edwardsOnCurve.zok", + "curve": "Bn128", "tests": [ { "input": { diff --git a/zokrates_stdlib/tests/tests/ecc/edwardsOrderCheck.json b/zokrates_stdlib/tests/tests/ecc/edwardsOrderCheck.json index 55f1af76..ec1663c2 100644 --- a/zokrates_stdlib/tests/tests/ecc/edwardsOrderCheck.json +++ b/zokrates_stdlib/tests/tests/ecc/edwardsOrderCheck.json @@ -1,5 +1,6 @@ { "entry_point": "./tests/tests/ecc/edwardsOrderCheck.zok", + "curve": "Bn128", "tests": [ { "input": { diff --git a/zokrates_stdlib/tests/tests/ecc/edwardsScalarMult.json b/zokrates_stdlib/tests/tests/ecc/edwardsScalarMult.json index be2699b9..f939d1f7 100644 --- a/zokrates_stdlib/tests/tests/ecc/edwardsScalarMult.json +++ b/zokrates_stdlib/tests/tests/ecc/edwardsScalarMult.json @@ -1,5 +1,6 @@ { "entry_point": "./tests/tests/ecc/edwardsScalarMult.zok", + "curve": "Bn128", "tests": [ { "input": { diff --git a/zokrates_stdlib/tests/tests/ecc/proofOfOwnership.json b/zokrates_stdlib/tests/tests/ecc/proofOfOwnership.json index 08148630..fd225d04 100644 --- a/zokrates_stdlib/tests/tests/ecc/proofOfOwnership.json +++ b/zokrates_stdlib/tests/tests/ecc/proofOfOwnership.json @@ -1,5 +1,6 @@ { "entry_point": "./tests/tests/ecc/proofOfOwnership.zok", + "curve": "Bn128", "tests": [ { "input": { diff --git a/zokrates_stdlib/tests/tests/hashes/pedersen/512bit.json b/zokrates_stdlib/tests/tests/hashes/pedersen/512bit.json index 18627080..ebf9b74e 100644 --- a/zokrates_stdlib/tests/tests/hashes/pedersen/512bit.json +++ b/zokrates_stdlib/tests/tests/hashes/pedersen/512bit.json @@ -1,5 +1,6 @@ { "entry_point": "./tests/tests/hashes/pedersen/512bit.zok", + "curve": "Bn128", "tests": [ { "input": { diff --git a/zokrates_stdlib/tests/tests/hashes/pedersen/6bit.json b/zokrates_stdlib/tests/tests/hashes/pedersen/6bit.json index 9104faf1..e409c037 100644 --- a/zokrates_stdlib/tests/tests/hashes/pedersen/6bit.json +++ b/zokrates_stdlib/tests/tests/hashes/pedersen/6bit.json @@ -1,5 +1,6 @@ { "entry_point": "./tests/tests/hashes/pedersen/6bit.zok", + "curve": "Bn128", "tests": [ { "input": { diff --git a/zokrates_stdlib/tests/tests/hashes/sha256/512bit.json b/zokrates_stdlib/tests/tests/hashes/sha256/512bit.json index 672e60f9..d9d3aa62 100644 --- a/zokrates_stdlib/tests/tests/hashes/sha256/512bit.json +++ b/zokrates_stdlib/tests/tests/hashes/sha256/512bit.json @@ -1,5 +1,6 @@ { "entry_point": "./tests/tests/hashes/sha256/512bit.zok", + "curve": "Bn128", "tests": [ { "input": { diff --git a/zokrates_stdlib/tests/tests/hashes/sha256/512bitPacked.json b/zokrates_stdlib/tests/tests/hashes/sha256/512bitPacked.json index 4dfa5270..7bb0a98d 100644 --- a/zokrates_stdlib/tests/tests/hashes/sha256/512bitPacked.json +++ b/zokrates_stdlib/tests/tests/hashes/sha256/512bitPacked.json @@ -1,5 +1,6 @@ { "entry_point": "./stdlib/hashes/sha256/512bitPacked.zok", + "curve": "Bn128", "tests": [ { "input": { diff --git a/zokrates_stdlib/tests/tests/hashes/sha256/512bitPacked2.json b/zokrates_stdlib/tests/tests/hashes/sha256/512bitPacked2.json index 5d2cc9cd..1aa9eaf7 100644 --- a/zokrates_stdlib/tests/tests/hashes/sha256/512bitPacked2.json +++ b/zokrates_stdlib/tests/tests/hashes/sha256/512bitPacked2.json @@ -1,5 +1,6 @@ { "entry_point": "./tests/tests/hashes/sha256/512bitPacked.zok", + "curve": "Bn128", "tests": [ { "input": { diff --git a/zokrates_stdlib/tests/tests/hashes/sha256/512bitPadded.json b/zokrates_stdlib/tests/tests/hashes/sha256/512bitPadded.json index 5136a964..b756da2f 100644 --- a/zokrates_stdlib/tests/tests/hashes/sha256/512bitPadded.json +++ b/zokrates_stdlib/tests/tests/hashes/sha256/512bitPadded.json @@ -1,5 +1,6 @@ { "entry_point": "./tests/tests/hashes/sha256/512bitPadded.zok", + "curve": "Bn128", "tests": [ { "input": { diff --git a/zokrates_stdlib/tests/tests/hashes/utils/256bitsDirectionHelper.json b/zokrates_stdlib/tests/tests/hashes/utils/256bitsDirectionHelper.json index 6fc884cb..bb6b8711 100644 --- a/zokrates_stdlib/tests/tests/hashes/utils/256bitsDirectionHelper.json +++ b/zokrates_stdlib/tests/tests/hashes/utils/256bitsDirectionHelper.json @@ -1,5 +1,6 @@ { "entry_point": "./tests/tests/hashes/utils/256bitsDirectionHelper.zok", + "curve": "Bn128", "tests": [ { "input": { diff --git a/zokrates_stdlib/tests/tests/or.json b/zokrates_stdlib/tests/tests/or.json index 6fa25fdc..6116cfd2 100644 --- a/zokrates_stdlib/tests/tests/or.json +++ b/zokrates_stdlib/tests/tests/or.json @@ -1,5 +1,6 @@ { "entry_point": "./stdlib/utils/binary/or.zok", + "curve": "Bn128", "tests": [ { "input": { diff --git a/zokrates_stdlib/tests/tests/signatures/verifyEddsa.json b/zokrates_stdlib/tests/tests/signatures/verifyEddsa.json index f0a753d4..9167732d 100644 --- a/zokrates_stdlib/tests/tests/signatures/verifyEddsa.json +++ b/zokrates_stdlib/tests/tests/signatures/verifyEddsa.json @@ -1,5 +1,6 @@ { "entry_point": "./tests/tests/signatures/verifyEddsa.zok", + "curve": "Bn128", "tests": [ { "input": { diff --git a/zokrates_stdlib/tests/tests/utils/multiplexer/256bit.json b/zokrates_stdlib/tests/tests/utils/multiplexer/256bit.json index 738c3f03..fae7f59f 100644 --- a/zokrates_stdlib/tests/tests/utils/multiplexer/256bit.json +++ b/zokrates_stdlib/tests/tests/utils/multiplexer/256bit.json @@ -1,5 +1,6 @@ { "entry_point": "./tests/tests/utils/multiplexer/256bit.zok", + "curve": "Bn128", "tests": [ { "input": { diff --git a/zokrates_stdlib/tests/tests/utils/multiplexer/2bit.json b/zokrates_stdlib/tests/tests/utils/multiplexer/2bit.json index 95cb4b28..1f3d4c95 100644 --- a/zokrates_stdlib/tests/tests/utils/multiplexer/2bit.json +++ b/zokrates_stdlib/tests/tests/utils/multiplexer/2bit.json @@ -1,5 +1,6 @@ { "entry_point": "./tests/tests/utils/multiplexer/2bit.zok", + "curve": "Bn128", "tests": [ { "input": { diff --git a/zokrates_stdlib/tests/tests/utils/multiplexer/lookup1bit.json b/zokrates_stdlib/tests/tests/utils/multiplexer/lookup1bit.json index 81068184..5059db7f 100644 --- a/zokrates_stdlib/tests/tests/utils/multiplexer/lookup1bit.json +++ b/zokrates_stdlib/tests/tests/utils/multiplexer/lookup1bit.json @@ -1,5 +1,6 @@ { "entry_point": "./tests/tests/utils/multiplexer/lookup1bit.zok", + "curve": "Bn128", "tests": [ { "input": { diff --git a/zokrates_stdlib/tests/tests/utils/multiplexer/lookup2bit.json b/zokrates_stdlib/tests/tests/utils/multiplexer/lookup2bit.json index 97866512..a8d81a06 100644 --- a/zokrates_stdlib/tests/tests/utils/multiplexer/lookup2bit.json +++ b/zokrates_stdlib/tests/tests/utils/multiplexer/lookup2bit.json @@ -1,5 +1,6 @@ { "entry_point": "./tests/tests/utils/multiplexer/lookup2bit.zok", + "curve": "Bn128", "tests": [ { "input": { diff --git a/zokrates_stdlib/tests/tests/utils/multiplexer/lookup3bitSigned.json b/zokrates_stdlib/tests/tests/utils/multiplexer/lookup3bitSigned.json index ddc4b935..7bb21cf9 100644 --- a/zokrates_stdlib/tests/tests/utils/multiplexer/lookup3bitSigned.json +++ b/zokrates_stdlib/tests/tests/utils/multiplexer/lookup3bitSigned.json @@ -1,5 +1,6 @@ { "entry_point": "./tests/tests/utils/multiplexer/lookup3bitSigned.zok", + "curve": "Bn128", "tests": [ { "input": { diff --git a/zokrates_stdlib/tests/tests/utils/pack/nonStrictUnpack256.json b/zokrates_stdlib/tests/tests/utils/pack/nonStrictUnpack256.json index 3f6a3ffb..7db8b89c 100644 --- a/zokrates_stdlib/tests/tests/utils/pack/nonStrictUnpack256.json +++ b/zokrates_stdlib/tests/tests/utils/pack/nonStrictUnpack256.json @@ -1,5 +1,6 @@ { "entry_point": "./tests/tests/utils/pack/nonStrictUnpack256.zok", + "curve": "Bn128", "tests": [ { "input": { diff --git a/zokrates_stdlib/tests/tests/utils/pack/pack128.json b/zokrates_stdlib/tests/tests/utils/pack/pack128.json index f339e1be..a1c9afb4 100644 --- a/zokrates_stdlib/tests/tests/utils/pack/pack128.json +++ b/zokrates_stdlib/tests/tests/utils/pack/pack128.json @@ -1,5 +1,6 @@ { "entry_point": "./tests/tests/utils/pack/pack128.zok", + "curve": "Bn128", "tests": [ { "input": { diff --git a/zokrates_stdlib/tests/tests/utils/pack/unpack128.json b/zokrates_stdlib/tests/tests/utils/pack/unpack128.json index 81cec6a8..0d23ce30 100644 --- a/zokrates_stdlib/tests/tests/utils/pack/unpack128.json +++ b/zokrates_stdlib/tests/tests/utils/pack/unpack128.json @@ -1,5 +1,6 @@ { "entry_point": "./tests/tests/utils/pack/unpack128.zok", + "curve": "Bn128", "tests": [ { "input": { diff --git a/zokrates_test/src/lib.rs b/zokrates_test/src/lib.rs index a9cf55e2..70c5bc15 100644 --- a/zokrates_test/src/lib.rs +++ b/zokrates_test/src/lib.rs @@ -3,11 +3,18 @@ extern crate serde_derive; use std::path::PathBuf; use zokrates_core::ir; -use zokrates_field::{Bn128Field, Field}; +use zokrates_field::{Bls12Field, Bn128Field, Field}; + +#[derive(Serialize, Deserialize)] +enum Curve { + Bn128, + Bls12, +} #[derive(Serialize, Deserialize)] struct Tests { pub entry_point: PathBuf, + pub curve: Curve, pub tests: Vec, } @@ -25,7 +32,7 @@ struct Test { type TestResult = Result; #[derive(PartialEq, Debug)] -struct ComparableResult(Result, ir::Error>); +struct ComparableResult(Result, ir::Error>); #[derive(Serialize, Deserialize)] struct Output { @@ -34,24 +41,24 @@ struct Output { type Val = String; -impl From> for ComparableResult { - fn from(r: ir::ExecutionResult) -> ComparableResult { +impl From> for ComparableResult { + fn from(r: ir::ExecutionResult) -> ComparableResult { ComparableResult(r.map(|v| v.return_values())) } } -impl From for ComparableResult { - fn from(r: TestResult) -> ComparableResult { +impl From for ComparableResult { + fn from(r: TestResult) -> ComparableResult { ComparableResult(r.map(|v| { v.values .iter() - .map(|v| Bn128Field::try_from_dec_str(v).unwrap()) + .map(|v| T::try_from_dec_str(v).unwrap()) .collect() })) } } -fn compare(result: ir::ExecutionResult, expected: TestResult) -> Result<(), String> { +fn compare(result: ir::ExecutionResult, expected: TestResult) -> Result<(), String> { // extract outputs from result let result = ComparableResult::from(result); // deserialize expected result @@ -75,9 +82,16 @@ pub fn test_inner(test_path: &str) { let t: Tests = serde_json::from_reader(BufReader::new(File::open(Path::new(test_path)).unwrap())).unwrap(); + match t.curve { + Curve::Bn128 => compile_and_run::(t), + Curve::Bls12 => compile_and_run::(t), + } +} + +fn compile_and_run(t: Tests) { let mut code_reader = BufReader::new(File::open(&t.entry_point).unwrap()); - let bin = compile( + let bin = compile::( &mut code_reader, Some( t.entry_point @@ -96,7 +110,7 @@ pub fn test_inner(test_path: &str) { let output = bin.execute( &input .iter() - .map(|v| Bn128Field::try_from_dec_str(&v.clone()).unwrap()) + .map(|v| T::try_from_dec_str(&v.clone()).unwrap()) .collect(), );