diff --git a/zokrates_core/src/flatten/mod.rs b/zokrates_core/src/flatten/mod.rs index 00087ca2..61c287aa 100644 --- a/zokrates_core/src/flatten/mod.rs +++ b/zokrates_core/src/flatten/mod.rs @@ -1133,7 +1133,7 @@ impl<'ast, T: Field> Flattener<'ast, T> { let _ = self.get_bits( FlatUExpression::with_field(FlatExpression::Add( box FlatExpression::Sub(box r.into(), box d.clone()), - box FlatExpression::Number(T::from(2usize.pow(target_bitwidth.to_usize() as u32))), + box FlatExpression::Number(T::from(2_u128.pow(target_bitwidth.to_usize() as u32))), )), target_bitwidth.to_usize(), target_bitwidth, diff --git a/zokrates_core/src/static_analysis/uint_optimizer.rs b/zokrates_core/src/static_analysis/uint_optimizer.rs index cf28977b..10296a20 100644 --- a/zokrates_core/src/static_analysis/uint_optimizer.rs +++ b/zokrates_core/src/static_analysis/uint_optimizer.rs @@ -117,7 +117,7 @@ impl<'ast, T: Field> Folder<'ast, T> for UintOptimizer<'ast, T> { let range = e.bitwidth.to_usize(); - let range_max: T = (2_usize.pow(range as u32) - 1).into(); + let range_max: T = (2_u128.pow(range as u32) - 1).into(); assert!(range < max_bitwidth / 2); @@ -319,7 +319,7 @@ impl<'ast, T: Field> Folder<'ast, T> for UintOptimizer<'ast, T> { let e = self.fold_uint_expression(e); let by = self.fold_uint_expression(by); - let by_max: usize = by + let by_max: u128 = by .metadata .clone() .unwrap() @@ -327,7 +327,7 @@ impl<'ast, T: Field> Folder<'ast, T> for UintOptimizer<'ast, T> { .to_dec_string() .parse() .unwrap(); - let e_max: usize = e + let e_max: u128 = e .metadata .clone() .unwrap() @@ -336,7 +336,7 @@ impl<'ast, T: Field> Folder<'ast, T> for UintOptimizer<'ast, T> { .parse() .unwrap(); - let max = T::from((e_max << by_max) & (2_usize.pow(range as u32) - 1)); + let max = T::from((e_max << by_max) & (2_u128.pow(range as u32) - 1)); UExpression::left_shift(force_reduce(e), force_reduce(by)).with_max(max) } @@ -351,7 +351,7 @@ impl<'ast, T: Field> Folder<'ast, T> for UintOptimizer<'ast, T> { _ => 0, }; - let e_max: usize = e + let e_max: u128 = e .metadata .clone() .unwrap() @@ -360,7 +360,7 @@ impl<'ast, T: Field> Folder<'ast, T> for UintOptimizer<'ast, T> { .parse() .unwrap(); - let max = (e_max & (2_usize.pow(range as u32) - 1)) >> by_u; + let max = (e_max & (2_u128.pow(range as u32) - 1)) >> by_u; let max = T::from(max); diff --git a/zokrates_core_test/tests/tests/uint/div.json b/zokrates_core_test/tests/tests/uint/div.json deleted file mode 100644 index 91f0ce15..00000000 --- a/zokrates_core_test/tests/tests/uint/div.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "entry_point": "./tests/tests/uint/div.zok", - "max_constraint_count": 43, - "tests": [ - { - "input": { - "values": ["255", "1"] - }, - "output": { - "Ok": { - "values": ["255"] - } - } - }, - { - "input": { - "values": ["42", "10"] - }, - "output": { - "Ok": { - "values": ["4"] - } - } - } - ] -} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/div.zok b/zokrates_core_test/tests/tests/uint/div.zok deleted file mode 100644 index 730ce4b2..00000000 --- a/zokrates_core_test/tests/tests/uint/div.zok +++ /dev/null @@ -1,6 +0,0 @@ -def main(u8 x, u8 y) -> u8: - assert(0x02 / 0x02 == 0x01) - assert(0x04 / 0x02 == 0x02) - assert(0x05 / 0x02 == 0x02) - assert(0xff / 0x03 == 0x55) - return x / y \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/div_rem.json b/zokrates_core_test/tests/tests/uint/div_rem.json deleted file mode 100644 index c01879bb..00000000 --- a/zokrates_core_test/tests/tests/uint/div_rem.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "entry_point": "./tests/tests/uint/div_rem.zok", - "max_constraint_count": 43, - "tests": [ - { - "input": { - "values": ["255", "1"] - }, - "output": { - "Ok": { - "values": ["255", "0"] - } - } - }, - { - "input": { - "values": ["42", "10"] - }, - "output": { - "Ok": { - "values": ["4", "2"] - } - } - } - ] -} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/div_rem.zok b/zokrates_core_test/tests/tests/uint/div_rem.zok deleted file mode 100644 index 73f5f16f..00000000 --- a/zokrates_core_test/tests/tests/uint/div_rem.zok +++ /dev/null @@ -1,2 +0,0 @@ -def main(u8 n, u8 d) -> (u8, u8): - return n / d, n % d \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/from_to_bits.json b/zokrates_core_test/tests/tests/uint/from_to_bits.json index e086d206..13b55420 100644 --- a/zokrates_core_test/tests/tests/uint/from_to_bits.json +++ b/zokrates_core_test/tests/tests/uint/from_to_bits.json @@ -1,34 +1,34 @@ { "entry_point": "./tests/tests/uint/from_to_bits.zok", - "max_constraint_count": 34, + "max_constraint_count": 128, "tests": [ { "input": { - "values": ["0x00000000", "0x0000", "0x00"] + "values": ["0x0000000000000000", "0x00000000", "0x0000", "0x00"] }, "output": { "Ok": { - "values": ["0x00000000", "0x0000", "0x00"] + "values": ["0x0000000000000000", "0x00000000", "0x0000", "0x00"] } } }, { "input": { - "values": ["0xffffffff", "0xffff", "0xff"] + "values": ["0xffffffffffffffff", "0xffffffff", "0xffff", "0xff"] }, "output": { "Ok": { - "values": ["0xffffffff", "0xffff", "0xff"] + "values": ["0xffffffffffffffff", "0xffffffff", "0xffff", "0xff"] } } }, { "input": { - "values": ["0x12345678", "0x1234", "0x12"] + "values": ["0x1234567812345678", "0x12345678", "0x1234", "0x12"] }, "output": { "Ok": { - "values": ["0x12345678", "0x1234", "0x12"] + "values": ["0x1234567812345678", "0x12345678", "0x1234", "0x12"] } } } diff --git a/zokrates_core_test/tests/tests/uint/from_to_bits.zok b/zokrates_core_test/tests/tests/uint/from_to_bits.zok index 6bb7b804..b3b52ccc 100644 --- a/zokrates_core_test/tests/tests/uint/from_to_bits.zok +++ b/zokrates_core_test/tests/tests/uint/from_to_bits.zok @@ -1,3 +1,5 @@ +import "EMBED/u64_to_bits" as to_bits_64 +import "EMBED/u64_from_bits" as from_bits_64 import "EMBED/u32_to_bits" as to_bits_32 import "EMBED/u32_from_bits" as from_bits_32 import "EMBED/u16_to_bits" as to_bits_16 @@ -5,8 +7,9 @@ import "EMBED/u16_from_bits" as from_bits_16 import "EMBED/u8_to_bits" as to_bits_8 import "EMBED/u8_from_bits" as from_bits_8 -def main(u32 e, u16 f, u8 g) -> (u32, u16, u8): +def main(u64 d, u32 e, u16 f, u8 g) -> (u64, u32, u16, u8): + bool[64] d_bits = to_bits_64(d) bool[32] e_bits = to_bits_32(e) bool[16] f_bits = to_bits_16(f) bool[8] g_bits = to_bits_8(g) - return from_bits_32(e_bits), from_bits_16(f_bits), from_bits_8(g_bits) \ No newline at end of file + return from_bits_64(d_bits), from_bits_32(e_bits), from_bits_16(f_bits), from_bits_8(g_bits) \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/mul.json b/zokrates_core_test/tests/tests/uint/mul.json deleted file mode 100644 index 628b71ae..00000000 --- a/zokrates_core_test/tests/tests/uint/mul.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "entry_point": "./tests/tests/uint/mul.zok", - "max_constraint_count": 37, - "tests": [ - { - "input": { - "values": ["2", "2"] - }, - "output": { - "Ok": { - "values": ["4"] - } - } - } - ] -} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/rem.json b/zokrates_core_test/tests/tests/uint/rem.json deleted file mode 100644 index a8a9e7ac..00000000 --- a/zokrates_core_test/tests/tests/uint/rem.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "entry_point": "./tests/tests/uint/rem.zok", - "max_constraint_count": 43, - "tests": [ - { - "input": { - "values": ["255", "1"] - }, - "output": { - "Ok": { - "values": ["0"] - } - } - }, - { - "input": { - "values": ["42", "10"] - }, - "output": { - "Ok": { - "values": ["2"] - } - } - } - ] -} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/rem.zok b/zokrates_core_test/tests/tests/uint/rem.zok deleted file mode 100644 index c72401dc..00000000 --- a/zokrates_core_test/tests/tests/uint/rem.zok +++ /dev/null @@ -1,7 +0,0 @@ -def main(u8 x, u8 y) -> u8: - assert(0x02 % 0x02 == 0x00) - assert(0x04 % 0x02 == 0x00) - assert(0x05 % 0x02 == 0x01) - assert(0xff % 0x03 == 0x00) - assert(0xff % 0x01 == 0x00) - return x % y \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/shift.json b/zokrates_core_test/tests/tests/uint/shift.json deleted file mode 100644 index 654da115..00000000 --- a/zokrates_core_test/tests/tests/uint/shift.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "entry_point": "./tests/tests/uint/shift.zok", - "max_constraint_count": 34, - "tests": [ - { - "input": { - "values": ["0x12345678"] - }, - "output": { - "Ok": { - "values": ["0x01234567"] - } - } - }, - { - "input": { - "values": ["0x01234567"] - }, - "output": { - "Ok": { - "values": ["0x00123456"] - } - } - } - ] -} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u16/add.json b/zokrates_core_test/tests/tests/uint/u16/add.json new file mode 100644 index 00000000..9cf286be --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u16/add.json @@ -0,0 +1,36 @@ +{ + "entry_point": "./tests/tests/uint/u16/add.zok", + "max_constraint_count": 53, + "tests": [ + { + "input": { + "values": ["0xffff", "0x0001"] + }, + "output": { + "Ok": { + "values": ["0x0000"] + } + } + }, + { + "input": { + "values": ["0x1000", "0x1000"] + }, + "output": { + "Ok": { + "values": ["0x2000"] + } + } + }, + { + "input": { + "values": ["0xffff", "0xffff"] + }, + "output": { + "Ok": { + "values": ["0xfffe"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u16/add.zok b/zokrates_core_test/tests/tests/uint/u16/add.zok new file mode 100644 index 00000000..9cc1c17c --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u16/add.zok @@ -0,0 +1,2 @@ +def main(u16 a, u16 b) -> u16: + return a + b \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u16/and.json b/zokrates_core_test/tests/tests/uint/u16/and.json new file mode 100644 index 00000000..69ad1bb2 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u16/and.json @@ -0,0 +1,36 @@ +{ + "entry_point": "./tests/tests/uint/u16/and.zok", + "max_constraint_count": 51, + "tests": [ + { + "input": { + "values": ["0xffff", "0xffff"] + }, + "output": { + "Ok": { + "values": ["0xffff"] + } + } + }, + { + "input": { + "values": ["0xffff", "0x0000"] + }, + "output": { + "Ok": { + "values": ["0x0000"] + } + } + }, + { + "input": { + "values": ["0x1234", "0x5678"] + }, + "output": { + "Ok": { + "values": ["0x1230"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u16/and.zok b/zokrates_core_test/tests/tests/uint/u16/and.zok new file mode 100644 index 00000000..0c7515ce --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u16/and.zok @@ -0,0 +1,2 @@ +def main(u16 a, u16 b) -> u16: + return a & b \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u16/div.json b/zokrates_core_test/tests/tests/uint/u16/div.json new file mode 100644 index 00000000..6fce4ecb --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u16/div.json @@ -0,0 +1,36 @@ +{ + "entry_point": "./tests/tests/uint/u16/div.zok", + "max_constraint_count": 88, + "tests": [ + { + "input": { + "values": ["0x1000", "0x1000"] + }, + "output": { + "Ok": { + "values": ["0x0001"] + } + } + }, + { + "input": { + "values": ["0x1000", "0x0002"] + }, + "output": { + "Ok": { + "values": ["0x0800"] + } + } + }, + { + "input": { + "values": ["0x1001", "0x0002"] + }, + "output": { + "Ok": { + "values": ["0x0800"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u16/div.zok b/zokrates_core_test/tests/tests/uint/u16/div.zok new file mode 100644 index 00000000..677747f7 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u16/div.zok @@ -0,0 +1,2 @@ +def main(u16 x, u16 y) -> u16: + return x / y \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u16/eq.json b/zokrates_core_test/tests/tests/uint/u16/eq.json new file mode 100644 index 00000000..19e68395 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u16/eq.json @@ -0,0 +1,26 @@ +{ + "entry_point": "./tests/tests/uint/u16/eq.zok", + "max_constraint_count": 37, + "tests": [ + { + "input": { + "values": ["0x0002", "0x0002"] + }, + "output": { + "Ok": { + "values": ["1"] + } + } + }, + { + "input": { + "values": ["0x0002", "0x0004"] + }, + "output": { + "Ok": { + "values": ["0"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u16/eq.zok b/zokrates_core_test/tests/tests/uint/u16/eq.zok new file mode 100644 index 00000000..da6bde28 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u16/eq.zok @@ -0,0 +1,2 @@ +def main(u16 a, u16 b) -> bool: + return a == b \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u16/gt.json b/zokrates_core_test/tests/tests/uint/u16/gt.json new file mode 100644 index 00000000..f9845b43 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u16/gt.json @@ -0,0 +1,26 @@ +{ + "entry_point": "./tests/tests/uint/u16/gt.zok", + "max_constraint_count": 697, + "tests": [ + { + "input": { + "values": ["0x0004", "0x0002"] + }, + "output": { + "Ok": { + "values": ["1"] + } + } + }, + { + "input": { + "values": ["0x0002", "0x0002"] + }, + "output": { + "Ok": { + "values": ["0"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u16/gt.zok b/zokrates_core_test/tests/tests/uint/u16/gt.zok new file mode 100644 index 00000000..41453552 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u16/gt.zok @@ -0,0 +1,2 @@ +def main(u16 a, u16 b) -> bool: + return a > b \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u16/gte.json b/zokrates_core_test/tests/tests/uint/u16/gte.json new file mode 100644 index 00000000..5512846a --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u16/gte.json @@ -0,0 +1,36 @@ +{ + "entry_point": "./tests/tests/uint/u16/gte.zok", + "max_constraint_count": 699, + "tests": [ + { + "input": { + "values": ["0x0004", "0x0002"] + }, + "output": { + "Ok": { + "values": ["1"] + } + } + }, + { + "input": { + "values": ["0x0002", "0x0002"] + }, + "output": { + "Ok": { + "values": ["1"] + } + } + }, + { + "input": { + "values": ["0x0001", "0x0002"] + }, + "output": { + "Ok": { + "values": ["0"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u16/gte.zok b/zokrates_core_test/tests/tests/uint/u16/gte.zok new file mode 100644 index 00000000..4111057a --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u16/gte.zok @@ -0,0 +1,2 @@ +def main(u16 a, u16 b) -> bool: + return a >= b \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u16/lshift.json b/zokrates_core_test/tests/tests/uint/u16/lshift.json new file mode 100644 index 00000000..466e1b0a --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u16/lshift.json @@ -0,0 +1,26 @@ +{ + "entry_point": "./tests/tests/uint/u16/lshift.zok", + "max_constraint_count": 18, + "tests": [ + { + "input": { + "values": ["0x0002"] + }, + "output": { + "Ok": { + "values": ["0x0004"] + } + } + }, + { + "input": { + "values": ["0xffff"] + }, + "output": { + "Ok": { + "values": ["0xfffe"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u16/lshift.zok b/zokrates_core_test/tests/tests/uint/u16/lshift.zok new file mode 100644 index 00000000..6c34073d --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u16/lshift.zok @@ -0,0 +1,2 @@ +def main(u16 x) -> u16: + return x << 1 \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u16/lt.json b/zokrates_core_test/tests/tests/uint/u16/lt.json new file mode 100644 index 00000000..f21f396a --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u16/lt.json @@ -0,0 +1,26 @@ +{ + "entry_point": "./tests/tests/uint/u16/lt.zok", + "max_constraint_count": 697, + "tests": [ + { + "input": { + "values": ["0x0002", "0x0004"] + }, + "output": { + "Ok": { + "values": ["1"] + } + } + }, + { + "input": { + "values": ["0x0002", "0x0002"] + }, + "output": { + "Ok": { + "values": ["0"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u16/lt.zok b/zokrates_core_test/tests/tests/uint/u16/lt.zok new file mode 100644 index 00000000..9a6b2b49 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u16/lt.zok @@ -0,0 +1,2 @@ +def main(u16 a, u16 b) -> bool: + return a < b \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u16/lte.json b/zokrates_core_test/tests/tests/uint/u16/lte.json new file mode 100644 index 00000000..a7b170c3 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u16/lte.json @@ -0,0 +1,36 @@ +{ + "entry_point": "./tests/tests/uint/u16/lte.zok", + "max_constraint_count": 699, + "tests": [ + { + "input": { + "values": ["0x0002", "0x0004"] + }, + "output": { + "Ok": { + "values": ["1"] + } + } + }, + { + "input": { + "values": ["0x0002", "0x0002"] + }, + "output": { + "Ok": { + "values": ["1"] + } + } + }, + { + "input": { + "values": ["0x0003", "0x0002"] + }, + "output": { + "Ok": { + "values": ["0"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u16/lte.zok b/zokrates_core_test/tests/tests/uint/u16/lte.zok new file mode 100644 index 00000000..f60160af --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u16/lte.zok @@ -0,0 +1,2 @@ +def main(u16 a, u16 b) -> bool: + return a <= b \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u16/mul.json b/zokrates_core_test/tests/tests/uint/u16/mul.json new file mode 100644 index 00000000..4b8ca537 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u16/mul.json @@ -0,0 +1,26 @@ +{ + "entry_point": "./tests/tests/uint/u16/mul.zok", + "max_constraint_count": 69, + "tests": [ + { + "input": { + "values": ["0x0002", "0x0008"] + }, + "output": { + "Ok": { + "values": ["0x0010"] + } + } + }, + { + "input": { + "values": ["0xffff", "0x0002"] + }, + "output": { + "Ok": { + "values": ["0xfffe"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u16/mul.zok b/zokrates_core_test/tests/tests/uint/u16/mul.zok new file mode 100644 index 00000000..da465553 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u16/mul.zok @@ -0,0 +1,2 @@ +def main(u16 a, u16 b) -> u16: + return a * b \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u16/neq.json b/zokrates_core_test/tests/tests/uint/u16/neq.json new file mode 100644 index 00000000..4a37373d --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u16/neq.json @@ -0,0 +1,26 @@ +{ + "entry_point": "./tests/tests/uint/u16/neq.zok", + "max_constraint_count": 37, + "tests": [ + { + "input": { + "values": ["0x0002", "0x0002"] + }, + "output": { + "Ok": { + "values": ["0"] + } + } + }, + { + "input": { + "values": ["0x0002", "0x0004"] + }, + "output": { + "Ok": { + "values": ["1"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u16/neq.zok b/zokrates_core_test/tests/tests/uint/u16/neq.zok new file mode 100644 index 00000000..906da545 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u16/neq.zok @@ -0,0 +1,2 @@ +def main(u16 a, u16 b) -> bool: + return a != b \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u16/not.json b/zokrates_core_test/tests/tests/uint/u16/not.json new file mode 100644 index 00000000..d544a576 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u16/not.json @@ -0,0 +1,26 @@ +{ + "entry_point": "./tests/tests/uint/u16/not.zok", + "max_constraint_count": 18, + "tests": [ + { + "input": { + "values": ["0x0001"] + }, + "output": { + "Ok": { + "values": ["0xfffe"] + } + } + }, + { + "input": { + "values": ["0xffff"] + }, + "output": { + "Ok": { + "values": ["0x0000"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u16/not.zok b/zokrates_core_test/tests/tests/uint/u16/not.zok new file mode 100644 index 00000000..0b03209c --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u16/not.zok @@ -0,0 +1,2 @@ +def main(u16 a) -> u16: + return !a \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u16/or.json b/zokrates_core_test/tests/tests/uint/u16/or.json new file mode 100644 index 00000000..9a1256f6 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u16/or.json @@ -0,0 +1,36 @@ +{ + "entry_point": "./tests/tests/uint/u16/or.zok", + "max_constraint_count": 51, + "tests": [ + { + "input": { + "values": ["0xffff", "0xffff"] + }, + "output": { + "Ok": { + "values": ["0xffff"] + } + } + }, + { + "input": { + "values": ["0xffff", "0x0000"] + }, + "output": { + "Ok": { + "values": ["0xffff"] + } + } + }, + { + "input": { + "values": ["0x1234", "0x5678"] + }, + "output": { + "Ok": { + "values": ["0x567c"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u16/or.zok b/zokrates_core_test/tests/tests/uint/u16/or.zok new file mode 100644 index 00000000..daeb5b07 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u16/or.zok @@ -0,0 +1,2 @@ +def main(u16 x, u16 y) -> u16: + return x | y \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u16/rem.json b/zokrates_core_test/tests/tests/uint/u16/rem.json new file mode 100644 index 00000000..ba7f40af --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u16/rem.json @@ -0,0 +1,36 @@ +{ + "entry_point": "./tests/tests/uint/u16/rem.zok", + "max_constraint_count": 88, + "tests": [ + { + "input": { + "values": ["0x0002", "0x0004"] + }, + "output": { + "Ok": { + "values": ["0x0002"] + } + } + }, + { + "input": { + "values": ["0xffff", "0x0001"] + }, + "output": { + "Ok": { + "values": ["0x0000"] + } + } + }, + { + "input": { + "values": ["0x1001", "0x0002"] + }, + "output": { + "Ok": { + "values": ["0x0001"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u16/rem.zok b/zokrates_core_test/tests/tests/uint/u16/rem.zok new file mode 100644 index 00000000..82d6b8b5 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u16/rem.zok @@ -0,0 +1,2 @@ +def main(u16 x, u16 y) -> u16: + return x % y \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u16/rshift.json b/zokrates_core_test/tests/tests/uint/u16/rshift.json new file mode 100644 index 00000000..d8129016 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u16/rshift.json @@ -0,0 +1,26 @@ +{ + "entry_point": "./tests/tests/uint/u16/rshift.zok", + "max_constraint_count": 18, + "tests": [ + { + "input": { + "values": ["0x1000"] + }, + "output": { + "Ok": { + "values": ["0x0800"] + } + } + }, + { + "input": { + "values": ["0xffff"] + }, + "output": { + "Ok": { + "values": ["0x7fff"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u16/rshift.zok b/zokrates_core_test/tests/tests/uint/u16/rshift.zok new file mode 100644 index 00000000..1f6ace84 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u16/rshift.zok @@ -0,0 +1,2 @@ +def main(u16 x) -> u16: + return x >> 1 \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u16/sub.json b/zokrates_core_test/tests/tests/uint/u16/sub.json new file mode 100644 index 00000000..39e6bd1b --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u16/sub.json @@ -0,0 +1,26 @@ +{ + "entry_point": "./tests/tests/uint/u16/sub.zok", + "max_constraint_count": 53, + "tests": [ + { + "input": { + "values": ["0xffff", "0x0001"] + }, + "output": { + "Ok": { + "values": ["0xfffe"] + } + } + }, + { + "input": { + "values": ["0x0000", "0x0001"] + }, + "output": { + "Ok": { + "values": ["0xffff"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u16/sub.zok b/zokrates_core_test/tests/tests/uint/u16/sub.zok new file mode 100644 index 00000000..d6e31c7d --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u16/sub.zok @@ -0,0 +1,2 @@ +def main(u16 a, u16 b) -> u16: + return a - b \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u16/xor.json b/zokrates_core_test/tests/tests/uint/u16/xor.json new file mode 100644 index 00000000..168c3484 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u16/xor.json @@ -0,0 +1,36 @@ +{ + "entry_point": "./tests/tests/uint/u16/xor.zok", + "max_constraint_count": 51, + "tests": [ + { + "input": { + "values": ["0xffff", "0xffff"] + }, + "output": { + "Ok": { + "values": ["0x0000"] + } + } + }, + { + "input": { + "values": ["0xffff", "0x0000"] + }, + "output": { + "Ok": { + "values": ["0xffff"] + } + } + }, + { + "input": { + "values": ["0x1234", "0x5678"] + }, + "output": { + "Ok": { + "values": ["0x444c"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u16/xor.zok b/zokrates_core_test/tests/tests/uint/u16/xor.zok new file mode 100644 index 00000000..bfc23bf0 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u16/xor.zok @@ -0,0 +1,2 @@ +def main(u16 a, u16 b) -> u16: + return a ^ b \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u32/add.json b/zokrates_core_test/tests/tests/uint/u32/add.json new file mode 100644 index 00000000..91c876af --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u32/add.json @@ -0,0 +1,36 @@ +{ + "entry_point": "./tests/tests/uint/u32/add.zok", + "max_constraint_count": 101, + "tests": [ + { + "input": { + "values": ["0xffffffff", "0x00000001"] + }, + "output": { + "Ok": { + "values": ["0x00000000"] + } + } + }, + { + "input": { + "values": ["0x10000000", "0x10000000"] + }, + "output": { + "Ok": { + "values": ["0x20000000"] + } + } + }, + { + "input": { + "values": ["0xffffffff", "0xffffffff"] + }, + "output": { + "Ok": { + "values": ["0xfffffffe"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u32/add.zok b/zokrates_core_test/tests/tests/uint/u32/add.zok new file mode 100644 index 00000000..f3846ffb --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u32/add.zok @@ -0,0 +1,2 @@ +def main(u32 a, u32 b) -> u32: + return a + b \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u32/and.json b/zokrates_core_test/tests/tests/uint/u32/and.json new file mode 100644 index 00000000..ff7165c0 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u32/and.json @@ -0,0 +1,36 @@ +{ + "entry_point": "./tests/tests/uint/u32/and.zok", + "max_constraint_count": 99, + "tests": [ + { + "input": { + "values": ["0xffffffff", "0xffffffff"] + }, + "output": { + "Ok": { + "values": ["0xffffffff"] + } + } + }, + { + "input": { + "values": ["0xffffffff", "0x00000000"] + }, + "output": { + "Ok": { + "values": ["0x00000000"] + } + } + }, + { + "input": { + "values": ["0x12345678", "0x87654321"] + }, + "output": { + "Ok": { + "values": ["0x02244220"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u32/and.zok b/zokrates_core_test/tests/tests/uint/u32/and.zok new file mode 100644 index 00000000..a51c99ad --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u32/and.zok @@ -0,0 +1,2 @@ +def main(u32 a, u32 b) -> u32: + return a & b \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u32/div.json b/zokrates_core_test/tests/tests/uint/u32/div.json new file mode 100644 index 00000000..f54b32b1 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u32/div.json @@ -0,0 +1,36 @@ +{ + "entry_point": "./tests/tests/uint/u32/div.zok", + "max_constraint_count": 168, + "tests": [ + { + "input": { + "values": ["0x10000000", "0x10000000"] + }, + "output": { + "Ok": { + "values": ["0x00000001"] + } + } + }, + { + "input": { + "values": ["0x10000000", "0x00000002"] + }, + "output": { + "Ok": { + "values": ["0x08000000"] + } + } + }, + { + "input": { + "values": ["0x10000001", "0x00000002"] + }, + "output": { + "Ok": { + "values": ["0x08000000"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u32/div.zok b/zokrates_core_test/tests/tests/uint/u32/div.zok new file mode 100644 index 00000000..93cfc38d --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u32/div.zok @@ -0,0 +1,2 @@ +def main(u32 x, u32 y) -> u32: + return x / y \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u32/eq.json b/zokrates_core_test/tests/tests/uint/u32/eq.json new file mode 100644 index 00000000..e5040792 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u32/eq.json @@ -0,0 +1,26 @@ +{ + "entry_point": "./tests/tests/uint/u32/eq.zok", + "max_constraint_count": 69, + "tests": [ + { + "input": { + "values": ["0x00000002", "0x00000002"] + }, + "output": { + "Ok": { + "values": ["1"] + } + } + }, + { + "input": { + "values": ["0x00000002", "0x00000004"] + }, + "output": { + "Ok": { + "values": ["0"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u32/eq.zok b/zokrates_core_test/tests/tests/uint/u32/eq.zok new file mode 100644 index 00000000..b2087fdf --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u32/eq.zok @@ -0,0 +1,2 @@ +def main(u32 a, u32 b) -> bool: + return a == b \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u32/gt.json b/zokrates_core_test/tests/tests/uint/u32/gt.json new file mode 100644 index 00000000..71b7e1d6 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u32/gt.json @@ -0,0 +1,26 @@ +{ + "entry_point": "./tests/tests/uint/u32/gt.zok", + "max_constraint_count": 729, + "tests": [ + { + "input": { + "values": ["0x00000004", "0x00000002"] + }, + "output": { + "Ok": { + "values": ["1"] + } + } + }, + { + "input": { + "values": ["0x00000002", "0x00000002"] + }, + "output": { + "Ok": { + "values": ["0"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u32/gt.zok b/zokrates_core_test/tests/tests/uint/u32/gt.zok new file mode 100644 index 00000000..acb0df0c --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u32/gt.zok @@ -0,0 +1,2 @@ +def main(u32 a, u32 b) -> bool: + return a > b \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u32/gte.json b/zokrates_core_test/tests/tests/uint/u32/gte.json new file mode 100644 index 00000000..feb45f8b --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u32/gte.json @@ -0,0 +1,36 @@ +{ + "entry_point": "./tests/tests/uint/u32/gte.zok", + "max_constraint_count": 731, + "tests": [ + { + "input": { + "values": ["0x00000004", "0x00000002"] + }, + "output": { + "Ok": { + "values": ["1"] + } + } + }, + { + "input": { + "values": ["0x00000002", "0x00000002"] + }, + "output": { + "Ok": { + "values": ["1"] + } + } + }, + { + "input": { + "values": ["0x00000001", "0x00000002"] + }, + "output": { + "Ok": { + "values": ["0"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u32/gte.zok b/zokrates_core_test/tests/tests/uint/u32/gte.zok new file mode 100644 index 00000000..e08264a9 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u32/gte.zok @@ -0,0 +1,2 @@ +def main(u32 a, u32 b) -> bool: + return a >= b \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u32/lshift.json b/zokrates_core_test/tests/tests/uint/u32/lshift.json new file mode 100644 index 00000000..9fddb95e --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u32/lshift.json @@ -0,0 +1,26 @@ +{ + "entry_point": "./tests/tests/uint/u32/lshift.zok", + "max_constraint_count": 34, + "tests": [ + { + "input": { + "values": ["0x00000002"] + }, + "output": { + "Ok": { + "values": ["0x00000004"] + } + } + }, + { + "input": { + "values": ["0xffffffff"] + }, + "output": { + "Ok": { + "values": ["0xfffffffe"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u32/lshift.zok b/zokrates_core_test/tests/tests/uint/u32/lshift.zok new file mode 100644 index 00000000..3ae1b2ab --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u32/lshift.zok @@ -0,0 +1,2 @@ +def main(u32 x) -> u32: + return x << 1 \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u32/lt.json b/zokrates_core_test/tests/tests/uint/u32/lt.json new file mode 100644 index 00000000..5a80d005 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u32/lt.json @@ -0,0 +1,26 @@ +{ + "entry_point": "./tests/tests/uint/u32/lt.zok", + "max_constraint_count": 729, + "tests": [ + { + "input": { + "values": ["0x00000002", "0x00000004"] + }, + "output": { + "Ok": { + "values": ["1"] + } + } + }, + { + "input": { + "values": ["0x00000002", "0x00000002"] + }, + "output": { + "Ok": { + "values": ["0"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u32/lt.zok b/zokrates_core_test/tests/tests/uint/u32/lt.zok new file mode 100644 index 00000000..05cc5d53 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u32/lt.zok @@ -0,0 +1,2 @@ +def main(u32 a, u32 b) -> bool: + return a < b \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u32/lte.json b/zokrates_core_test/tests/tests/uint/u32/lte.json new file mode 100644 index 00000000..32532942 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u32/lte.json @@ -0,0 +1,36 @@ +{ + "entry_point": "./tests/tests/uint/u32/lte.zok", + "max_constraint_count": 731, + "tests": [ + { + "input": { + "values": ["0x00000002", "0x00000004"] + }, + "output": { + "Ok": { + "values": ["1"] + } + } + }, + { + "input": { + "values": ["0x00000002", "0x00000002"] + }, + "output": { + "Ok": { + "values": ["1"] + } + } + }, + { + "input": { + "values": ["0x00000003", "0x00000002"] + }, + "output": { + "Ok": { + "values": ["0"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u32/lte.zok b/zokrates_core_test/tests/tests/uint/u32/lte.zok new file mode 100644 index 00000000..0975ee9d --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u32/lte.zok @@ -0,0 +1,2 @@ +def main(u32 a, u32 b) -> bool: + return a <= b \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u32/mul.json b/zokrates_core_test/tests/tests/uint/u32/mul.json new file mode 100644 index 00000000..8504aafb --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u32/mul.json @@ -0,0 +1,26 @@ +{ + "entry_point": "./tests/tests/uint/u32/mul.zok", + "max_constraint_count": 133, + "tests": [ + { + "input": { + "values": ["0x00000002", "0x00000008"] + }, + "output": { + "Ok": { + "values": ["0x00000010"] + } + } + }, + { + "input": { + "values": ["0xffffffff", "0x00000002"] + }, + "output": { + "Ok": { + "values": ["0xfffffffe"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u32/mul.zok b/zokrates_core_test/tests/tests/uint/u32/mul.zok new file mode 100644 index 00000000..bfeb9156 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u32/mul.zok @@ -0,0 +1,2 @@ +def main(u32 a, u32 b) -> u32: + return a * b \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u32/neq.json b/zokrates_core_test/tests/tests/uint/u32/neq.json new file mode 100644 index 00000000..c64f2d39 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u32/neq.json @@ -0,0 +1,26 @@ +{ + "entry_point": "./tests/tests/uint/u32/neq.zok", + "max_constraint_count": 69, + "tests": [ + { + "input": { + "values": ["0x00000002", "0x00000002"] + }, + "output": { + "Ok": { + "values": ["0"] + } + } + }, + { + "input": { + "values": ["0x00000002", "0x00000004"] + }, + "output": { + "Ok": { + "values": ["1"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u32/neq.zok b/zokrates_core_test/tests/tests/uint/u32/neq.zok new file mode 100644 index 00000000..db6f1b1d --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u32/neq.zok @@ -0,0 +1,2 @@ +def main(u32 a, u32 b) -> bool: + return a != b \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u32/not.json b/zokrates_core_test/tests/tests/uint/u32/not.json new file mode 100644 index 00000000..a17fe27d --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u32/not.json @@ -0,0 +1,26 @@ +{ + "entry_point": "./tests/tests/uint/u32/not.zok", + "max_constraint_count": 34, + "tests": [ + { + "input": { + "values": ["0x00000001"] + }, + "output": { + "Ok": { + "values": ["0xfffffffe"] + } + } + }, + { + "input": { + "values": ["0xffffffff"] + }, + "output": { + "Ok": { + "values": ["0x00000000"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/shift.zok b/zokrates_core_test/tests/tests/uint/u32/not.zok similarity index 51% rename from zokrates_core_test/tests/tests/uint/shift.zok rename to zokrates_core_test/tests/tests/uint/u32/not.zok index f962c5f2..8a3545af 100644 --- a/zokrates_core_test/tests/tests/uint/shift.zok +++ b/zokrates_core_test/tests/tests/uint/u32/not.zok @@ -1,2 +1,2 @@ def main(u32 a) -> u32: - return a >> 0x00000004 \ No newline at end of file + return !a \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u32/or.json b/zokrates_core_test/tests/tests/uint/u32/or.json new file mode 100644 index 00000000..ab5801eb --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u32/or.json @@ -0,0 +1,36 @@ +{ + "entry_point": "./tests/tests/uint/u32/or.zok", + "max_constraint_count": 99, + "tests": [ + { + "input": { + "values": ["0xffffffff", "0xffffffff"] + }, + "output": { + "Ok": { + "values": ["0xffffffff"] + } + } + }, + { + "input": { + "values": ["0xffffffff", "0x00000000"] + }, + "output": { + "Ok": { + "values": ["0xffffffff"] + } + } + }, + { + "input": { + "values": ["0x12345678", "0x87654321"] + }, + "output": { + "Ok": { + "values": ["0x97755779"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u32/or.zok b/zokrates_core_test/tests/tests/uint/u32/or.zok new file mode 100644 index 00000000..91245371 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u32/or.zok @@ -0,0 +1,2 @@ +def main(u32 x, u32 y) -> u32: + return x | y \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u32/rem.json b/zokrates_core_test/tests/tests/uint/u32/rem.json new file mode 100644 index 00000000..94d6360f --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u32/rem.json @@ -0,0 +1,36 @@ +{ + "entry_point": "./tests/tests/uint/u32/rem.zok", + "max_constraint_count": 168, + "tests": [ + { + "input": { + "values": ["0x00000002", "0x00000004"] + }, + "output": { + "Ok": { + "values": ["0x00000002"] + } + } + }, + { + "input": { + "values": ["0xffffffff", "0x00000001"] + }, + "output": { + "Ok": { + "values": ["0x00000000"] + } + } + }, + { + "input": { + "values": ["0x10000001", "0x00000002"] + }, + "output": { + "Ok": { + "values": ["0x00000001"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u32/rem.zok b/zokrates_core_test/tests/tests/uint/u32/rem.zok new file mode 100644 index 00000000..e09059a3 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u32/rem.zok @@ -0,0 +1,2 @@ +def main(u32 x, u32 y) -> u32: + return x % y \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u32/rshift.json b/zokrates_core_test/tests/tests/uint/u32/rshift.json new file mode 100644 index 00000000..1b852b57 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u32/rshift.json @@ -0,0 +1,26 @@ +{ + "entry_point": "./tests/tests/uint/u32/rshift.zok", + "max_constraint_count": 34, + "tests": [ + { + "input": { + "values": ["0x10000000"] + }, + "output": { + "Ok": { + "values": ["0x08000000"] + } + } + }, + { + "input": { + "values": ["0xffffffff"] + }, + "output": { + "Ok": { + "values": ["0x7fffffff"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u32/rshift.zok b/zokrates_core_test/tests/tests/uint/u32/rshift.zok new file mode 100644 index 00000000..5586820f --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u32/rshift.zok @@ -0,0 +1,2 @@ +def main(u32 x) -> u32: + return x >> 1 \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u32/sub.json b/zokrates_core_test/tests/tests/uint/u32/sub.json new file mode 100644 index 00000000..2d607519 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u32/sub.json @@ -0,0 +1,26 @@ +{ + "entry_point": "./tests/tests/uint/u32/sub.zok", + "max_constraint_count": 101, + "tests": [ + { + "input": { + "values": ["0xffffffff", "0x00000001"] + }, + "output": { + "Ok": { + "values": ["0xfffffffe"] + } + } + }, + { + "input": { + "values": ["0x00000000", "0x00000001"] + }, + "output": { + "Ok": { + "values": ["0xffffffff"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u32/sub.zok b/zokrates_core_test/tests/tests/uint/u32/sub.zok new file mode 100644 index 00000000..5700177c --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u32/sub.zok @@ -0,0 +1,2 @@ +def main(u32 a, u32 b) -> u32: + return a - b \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u32/xor.json b/zokrates_core_test/tests/tests/uint/u32/xor.json new file mode 100644 index 00000000..71562843 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u32/xor.json @@ -0,0 +1,36 @@ +{ + "entry_point": "./tests/tests/uint/u32/xor.zok", + "max_constraint_count": 99, + "tests": [ + { + "input": { + "values": ["0xffffffff", "0xffffffff"] + }, + "output": { + "Ok": { + "values": ["0x00000000"] + } + } + }, + { + "input": { + "values": ["0xffffffff", "0x00000000"] + }, + "output": { + "Ok": { + "values": ["0xffffffff"] + } + } + }, + { + "input": { + "values": ["0x12345678", "0x87654321"] + }, + "output": { + "Ok": { + "values": ["0x95511559"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u32/xor.zok b/zokrates_core_test/tests/tests/uint/u32/xor.zok new file mode 100644 index 00000000..5a405e21 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u32/xor.zok @@ -0,0 +1,2 @@ +def main(u32 a, u32 b) -> u32: + return a ^ b \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u64/add.json b/zokrates_core_test/tests/tests/uint/u64/add.json new file mode 100644 index 00000000..0663fc03 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u64/add.json @@ -0,0 +1,36 @@ +{ + "entry_point": "./tests/tests/uint/u64/add.zok", + "max_constraint_count": 197, + "tests": [ + { + "input": { + "values": ["0xffffffffffffffff", "0x0000000000000001"] + }, + "output": { + "Ok": { + "values": ["0x0000000000000000"] + } + } + }, + { + "input": { + "values": ["0x1000000000000000", "0x1000000000000000"] + }, + "output": { + "Ok": { + "values": ["0x2000000000000000"] + } + } + }, + { + "input": { + "values": ["0xffffffffffffffff", "0xffffffffffffffff"] + }, + "output": { + "Ok": { + "values": ["0xfffffffffffffffe"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u64/add.zok b/zokrates_core_test/tests/tests/uint/u64/add.zok new file mode 100644 index 00000000..66077da7 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u64/add.zok @@ -0,0 +1,2 @@ +def main(u64 a, u64 b) -> u64: + return a + b \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u64/and.json b/zokrates_core_test/tests/tests/uint/u64/and.json new file mode 100644 index 00000000..b18d6826 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u64/and.json @@ -0,0 +1,36 @@ +{ + "entry_point": "./tests/tests/uint/u64/and.zok", + "max_constraint_count": 195, + "tests": [ + { + "input": { + "values": ["0xffffffffffffffff", "0xffffffffffffffff"] + }, + "output": { + "Ok": { + "values": ["0xffffffffffffffff"] + } + } + }, + { + "input": { + "values": ["0xffffffffffffffff", "0x0000000000000000"] + }, + "output": { + "Ok": { + "values": ["0x0000000000000000"] + } + } + }, + { + "input": { + "values": ["0x1234567812345678", "0x8765432187654321"] + }, + "output": { + "Ok": { + "values": ["0x224422002244220"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u64/and.zok b/zokrates_core_test/tests/tests/uint/u64/and.zok new file mode 100644 index 00000000..60860d20 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u64/and.zok @@ -0,0 +1,2 @@ +def main(u64 a, u64 b) -> u64: + return a & b \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u64/div.json b/zokrates_core_test/tests/tests/uint/u64/div.json new file mode 100644 index 00000000..f2cd1923 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u64/div.json @@ -0,0 +1,36 @@ +{ + "entry_point": "./tests/tests/uint/u64/div.zok", + "max_constraint_count": 328, + "tests": [ + { + "input": { + "values": ["0x1000000000000000", "0x1000000000000000"] + }, + "output": { + "Ok": { + "values": ["0x0000000000000001"] + } + } + }, + { + "input": { + "values": ["0x1000000000000000", "0x0000000000000002"] + }, + "output": { + "Ok": { + "values": ["0x0800000000000000"] + } + } + }, + { + "input": { + "values": ["0x1000000000000001", "0x0000000000000002"] + }, + "output": { + "Ok": { + "values": ["0x0800000000000000"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u64/div.zok b/zokrates_core_test/tests/tests/uint/u64/div.zok new file mode 100644 index 00000000..90860bcc --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u64/div.zok @@ -0,0 +1,2 @@ +def main(u64 x, u64 y) -> u64: + return x / y \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u64/eq.json b/zokrates_core_test/tests/tests/uint/u64/eq.json new file mode 100644 index 00000000..01480b02 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u64/eq.json @@ -0,0 +1,26 @@ +{ + "entry_point": "./tests/tests/uint/u64/eq.zok", + "max_constraint_count": 133, + "tests": [ + { + "input": { + "values": ["0x0000000000000002", "0x0000000000000002"] + }, + "output": { + "Ok": { + "values": ["1"] + } + } + }, + { + "input": { + "values": ["0x0000000000000002", "0x0000000000000004"] + }, + "output": { + "Ok": { + "values": ["0"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u64/eq.zok b/zokrates_core_test/tests/tests/uint/u64/eq.zok new file mode 100644 index 00000000..ed6c5bba --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u64/eq.zok @@ -0,0 +1,2 @@ +def main(u64 a, u64 b) -> bool: + return a == b \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u64/gt.json b/zokrates_core_test/tests/tests/uint/u64/gt.json new file mode 100644 index 00000000..7224a66d --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u64/gt.json @@ -0,0 +1,26 @@ +{ + "entry_point": "./tests/tests/uint/u64/gt.zok", + "max_constraint_count": 793, + "tests": [ + { + "input": { + "values": ["0x0000000000000004", "0x0000000000000002"] + }, + "output": { + "Ok": { + "values": ["1"] + } + } + }, + { + "input": { + "values": ["0x0000000000000002", "0x0000000000000002"] + }, + "output": { + "Ok": { + "values": ["0"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u64/gt.zok b/zokrates_core_test/tests/tests/uint/u64/gt.zok new file mode 100644 index 00000000..3af2e9eb --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u64/gt.zok @@ -0,0 +1,2 @@ +def main(u64 a, u64 b) -> bool: + return a > b \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u64/gte.json b/zokrates_core_test/tests/tests/uint/u64/gte.json new file mode 100644 index 00000000..7ab764a9 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u64/gte.json @@ -0,0 +1,36 @@ +{ + "entry_point": "./tests/tests/uint/u64/gte.zok", + "max_constraint_count": 795, + "tests": [ + { + "input": { + "values": ["0x0000000000000004", "0x0000000000000002"] + }, + "output": { + "Ok": { + "values": ["1"] + } + } + }, + { + "input": { + "values": ["0x0000000000000002", "0x0000000000000002"] + }, + "output": { + "Ok": { + "values": ["1"] + } + } + }, + { + "input": { + "values": ["0x0000000000000001", "0x0000000000000002"] + }, + "output": { + "Ok": { + "values": ["0"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u64/gte.zok b/zokrates_core_test/tests/tests/uint/u64/gte.zok new file mode 100644 index 00000000..fb6f0b5d --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u64/gte.zok @@ -0,0 +1,2 @@ +def main(u64 a, u64 b) -> bool: + return a >= b \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u64/lshift.json b/zokrates_core_test/tests/tests/uint/u64/lshift.json new file mode 100644 index 00000000..70ac4e60 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u64/lshift.json @@ -0,0 +1,26 @@ +{ + "entry_point": "./tests/tests/uint/u64/lshift.zok", + "max_constraint_count": 66, + "tests": [ + { + "input": { + "values": ["0x0000000000000002"] + }, + "output": { + "Ok": { + "values": ["0x0000000000000004"] + } + } + }, + { + "input": { + "values": ["0xffffffffffffffff"] + }, + "output": { + "Ok": { + "values": ["0xfffffffffffffffe"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u64/lshift.zok b/zokrates_core_test/tests/tests/uint/u64/lshift.zok new file mode 100644 index 00000000..b21c28e4 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u64/lshift.zok @@ -0,0 +1,2 @@ +def main(u64 x) -> u64: + return x << 1 \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u64/lt.json b/zokrates_core_test/tests/tests/uint/u64/lt.json new file mode 100644 index 00000000..4c74006a --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u64/lt.json @@ -0,0 +1,26 @@ +{ + "entry_point": "./tests/tests/uint/u64/lt.zok", + "max_constraint_count": 793, + "tests": [ + { + "input": { + "values": ["0x0000000000000002", "0x0000000000000004"] + }, + "output": { + "Ok": { + "values": ["1"] + } + } + }, + { + "input": { + "values": ["0x0000000000000002", "0x0000000000000002"] + }, + "output": { + "Ok": { + "values": ["0"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u64/lt.zok b/zokrates_core_test/tests/tests/uint/u64/lt.zok new file mode 100644 index 00000000..32769392 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u64/lt.zok @@ -0,0 +1,2 @@ +def main(u64 a, u64 b) -> bool: + return a < b \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u64/lte.json b/zokrates_core_test/tests/tests/uint/u64/lte.json new file mode 100644 index 00000000..6c35f5d5 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u64/lte.json @@ -0,0 +1,36 @@ +{ + "entry_point": "./tests/tests/uint/u64/lte.zok", + "max_constraint_count": 795, + "tests": [ + { + "input": { + "values": ["0x0000000000000002", "0x0000000000000004"] + }, + "output": { + "Ok": { + "values": ["1"] + } + } + }, + { + "input": { + "values": ["0x0000000000000002", "0x0000000000000002"] + }, + "output": { + "Ok": { + "values": ["1"] + } + } + }, + { + "input": { + "values": ["0x0000000000000003", "0x0000000000000002"] + }, + "output": { + "Ok": { + "values": ["0"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u64/lte.zok b/zokrates_core_test/tests/tests/uint/u64/lte.zok new file mode 100644 index 00000000..3d335192 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u64/lte.zok @@ -0,0 +1,2 @@ +def main(u64 a, u64 b) -> bool: + return a <= b \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u64/mul.json b/zokrates_core_test/tests/tests/uint/u64/mul.json new file mode 100644 index 00000000..3afc1f46 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u64/mul.json @@ -0,0 +1,26 @@ +{ + "entry_point": "./tests/tests/uint/u64/mul.zok", + "max_constraint_count": 261, + "tests": [ + { + "input": { + "values": ["0x0000000000000002", "0x0000000000000008"] + }, + "output": { + "Ok": { + "values": ["0x0000000000000010"] + } + } + }, + { + "input": { + "values": ["0xffffffffffffffff", "0x0000000000000002"] + }, + "output": { + "Ok": { + "values": ["0xfffffffffffffffe"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u64/mul.zok b/zokrates_core_test/tests/tests/uint/u64/mul.zok new file mode 100644 index 00000000..99ad92d6 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u64/mul.zok @@ -0,0 +1,2 @@ +def main(u64 a, u64 b) -> u64: + return a * b \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u64/neq.json b/zokrates_core_test/tests/tests/uint/u64/neq.json new file mode 100644 index 00000000..72e448b7 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u64/neq.json @@ -0,0 +1,26 @@ +{ + "entry_point": "./tests/tests/uint/u64/neq.zok", + "max_constraint_count": 133, + "tests": [ + { + "input": { + "values": ["0x0000000000000002", "0x0000000000000002"] + }, + "output": { + "Ok": { + "values": ["0"] + } + } + }, + { + "input": { + "values": ["0x0000000000000002", "0x0000000000000004"] + }, + "output": { + "Ok": { + "values": ["1"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u64/neq.zok b/zokrates_core_test/tests/tests/uint/u64/neq.zok new file mode 100644 index 00000000..e2db5d37 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u64/neq.zok @@ -0,0 +1,2 @@ +def main(u64 a, u64 b) -> bool: + return a != b \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u64/not.json b/zokrates_core_test/tests/tests/uint/u64/not.json new file mode 100644 index 00000000..244feef6 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u64/not.json @@ -0,0 +1,26 @@ +{ + "entry_point": "./tests/tests/uint/u64/not.zok", + "max_constraint_count": 66, + "tests": [ + { + "input": { + "values": ["0x0000000000000001"] + }, + "output": { + "Ok": { + "values": ["0xfffffffffffffffe"] + } + } + }, + { + "input": { + "values": ["0xffffffffffffffff"] + }, + "output": { + "Ok": { + "values": ["0x0000000000000000"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u64/not.zok b/zokrates_core_test/tests/tests/uint/u64/not.zok new file mode 100644 index 00000000..fbbc0009 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u64/not.zok @@ -0,0 +1,2 @@ +def main(u64 a) -> u64: + return !a \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u64/or.json b/zokrates_core_test/tests/tests/uint/u64/or.json new file mode 100644 index 00000000..8e5c63c0 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u64/or.json @@ -0,0 +1,36 @@ +{ + "entry_point": "./tests/tests/uint/u64/or.zok", + "max_constraint_count": 195, + "tests": [ + { + "input": { + "values": ["0xffffffffffffffff", "0xffffffffffffffff"] + }, + "output": { + "Ok": { + "values": ["0xffffffffffffffff"] + } + } + }, + { + "input": { + "values": ["0xffffffffffffffff", "0x0000000000000000"] + }, + "output": { + "Ok": { + "values": ["0xffffffffffffffff"] + } + } + }, + { + "input": { + "values": ["0x1234567812345678", "0x8765432187654321"] + }, + "output": { + "Ok": { + "values": ["0x9775577997755779"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u64/or.zok b/zokrates_core_test/tests/tests/uint/u64/or.zok new file mode 100644 index 00000000..afc4db79 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u64/or.zok @@ -0,0 +1,2 @@ +def main(u64 x, u64 y) -> u64: + return x | y \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u64/rem.json b/zokrates_core_test/tests/tests/uint/u64/rem.json new file mode 100644 index 00000000..a6f9842c --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u64/rem.json @@ -0,0 +1,36 @@ +{ + "entry_point": "./tests/tests/uint/u64/rem.zok", + "max_constraint_count": 328, + "tests": [ + { + "input": { + "values": ["0x0000000000000002", "0x0000000000000004"] + }, + "output": { + "Ok": { + "values": ["0x0000000000000002"] + } + } + }, + { + "input": { + "values": ["0xffffffffffffffff", "0x0000000000000001"] + }, + "output": { + "Ok": { + "values": ["0x0000000000000000"] + } + } + }, + { + "input": { + "values": ["0x1000000000000001", "0x0000000000000002"] + }, + "output": { + "Ok": { + "values": ["0x0000000000000001"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u64/rem.zok b/zokrates_core_test/tests/tests/uint/u64/rem.zok new file mode 100644 index 00000000..4e7d25ee --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u64/rem.zok @@ -0,0 +1,2 @@ +def main(u64 x, u64 y) -> u64: + return x % y \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u64/rshift.json b/zokrates_core_test/tests/tests/uint/u64/rshift.json new file mode 100644 index 00000000..e279b3a7 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u64/rshift.json @@ -0,0 +1,26 @@ +{ + "entry_point": "./tests/tests/uint/u64/rshift.zok", + "max_constraint_count": 66, + "tests": [ + { + "input": { + "values": ["0x1000000000000000"] + }, + "output": { + "Ok": { + "values": ["0x0800000000000000"] + } + } + }, + { + "input": { + "values": ["0xffffffffffffffff"] + }, + "output": { + "Ok": { + "values": ["0x7fffffffffffffff"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u64/rshift.zok b/zokrates_core_test/tests/tests/uint/u64/rshift.zok new file mode 100644 index 00000000..1b9059fc --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u64/rshift.zok @@ -0,0 +1,2 @@ +def main(u64 x) -> u64: + return x >> 1 \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u64/sub.json b/zokrates_core_test/tests/tests/uint/u64/sub.json new file mode 100644 index 00000000..93b4c3b8 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u64/sub.json @@ -0,0 +1,26 @@ +{ + "entry_point": "./tests/tests/uint/u64/sub.zok", + "max_constraint_count": 197, + "tests": [ + { + "input": { + "values": ["0xffffffffffffffff", "0x0000000000000001"] + }, + "output": { + "Ok": { + "values": ["0xfffffffffffffffe"] + } + } + }, + { + "input": { + "values": ["0x0000000000000000", "0x0000000000000001"] + }, + "output": { + "Ok": { + "values": ["0xffffffffffffffff"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u64/sub.zok b/zokrates_core_test/tests/tests/uint/u64/sub.zok new file mode 100644 index 00000000..deda0fb5 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u64/sub.zok @@ -0,0 +1,2 @@ +def main(u64 a, u64 b) -> u64: + return a - b \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u64/xor.json b/zokrates_core_test/tests/tests/uint/u64/xor.json new file mode 100644 index 00000000..1dbb8089 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u64/xor.json @@ -0,0 +1,36 @@ +{ + "entry_point": "./tests/tests/uint/u64/xor.zok", + "max_constraint_count": 195, + "tests": [ + { + "input": { + "values": ["0xffffffffffffffff", "0xffffffffffffffff"] + }, + "output": { + "Ok": { + "values": ["0x0000000000000000"] + } + } + }, + { + "input": { + "values": ["0xffffffffffffffff", "0x0000000000000000"] + }, + "output": { + "Ok": { + "values": ["0xffffffffffffffff"] + } + } + }, + { + "input": { + "values": ["0x1234567812345678", "0x8765432187654321"] + }, + "output": { + "Ok": { + "values": ["0x9551155995511559"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u64/xor.zok b/zokrates_core_test/tests/tests/uint/u64/xor.zok new file mode 100644 index 00000000..ce47b92a --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u64/xor.zok @@ -0,0 +1,2 @@ +def main(u64 a, u64 b) -> u64: + return a ^ b \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u8/add.json b/zokrates_core_test/tests/tests/uint/u8/add.json new file mode 100644 index 00000000..4a51cd8c --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u8/add.json @@ -0,0 +1,36 @@ +{ + "entry_point": "./tests/tests/uint/u8/add.zok", + "max_constraint_count": 29, + "tests": [ + { + "input": { + "values": ["0xff", "0x01"] + }, + "output": { + "Ok": { + "values": ["0x00"] + } + } + }, + { + "input": { + "values": ["0x02", "0x02"] + }, + "output": { + "Ok": { + "values": ["0x04"] + } + } + }, + { + "input": { + "values": ["0xff", "0xff"] + }, + "output": { + "Ok": { + "values": ["0xfe"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/add.zok b/zokrates_core_test/tests/tests/uint/u8/add.zok similarity index 63% rename from zokrates_core_test/tests/tests/uint/add.zok rename to zokrates_core_test/tests/tests/uint/u8/add.zok index 925f2208..2fc36f43 100644 --- a/zokrates_core_test/tests/tests/uint/add.zok +++ b/zokrates_core_test/tests/tests/uint/u8/add.zok @@ -1,2 +1,2 @@ def main(u8 a, u8 b) -> u8: - return a + b \ No newline at end of file + return a + b \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/and.json b/zokrates_core_test/tests/tests/uint/u8/and.json similarity index 89% rename from zokrates_core_test/tests/tests/uint/and.json rename to zokrates_core_test/tests/tests/uint/u8/and.json index 19217cd1..935a5618 100644 --- a/zokrates_core_test/tests/tests/uint/and.json +++ b/zokrates_core_test/tests/tests/uint/u8/and.json @@ -1,5 +1,5 @@ { - "entry_point": "./tests/tests/uint/and.zok", + "entry_point": "./tests/tests/uint/u8/and.zok", "max_constraint_count": 27, "tests": [ { diff --git a/zokrates_core_test/tests/tests/uint/and.zok b/zokrates_core_test/tests/tests/uint/u8/and.zok similarity index 100% rename from zokrates_core_test/tests/tests/uint/and.zok rename to zokrates_core_test/tests/tests/uint/u8/and.zok diff --git a/zokrates_core_test/tests/tests/uint/u8/div.json b/zokrates_core_test/tests/tests/uint/u8/div.json new file mode 100644 index 00000000..033897c2 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u8/div.json @@ -0,0 +1,36 @@ +{ + "entry_point": "./tests/tests/uint/u8/div.zok", + "max_constraint_count": 48, + "tests": [ + { + "input": { + "values": ["0x02", "0x02"] + }, + "output": { + "Ok": { + "values": ["0x01"] + } + } + }, + { + "input": { + "values": ["0x04", "0x02"] + }, + "output": { + "Ok": { + "values": ["0x02"] + } + } + }, + { + "input": { + "values": ["0x2a", "0x0a"] + }, + "output": { + "Ok": { + "values": ["0x04"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u8/div.zok b/zokrates_core_test/tests/tests/uint/u8/div.zok new file mode 100644 index 00000000..0ac951ed --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u8/div.zok @@ -0,0 +1,2 @@ +def main(u8 x, u8 y) -> u8: + return x / y \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u8/eq.json b/zokrates_core_test/tests/tests/uint/u8/eq.json new file mode 100644 index 00000000..46bf0752 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u8/eq.json @@ -0,0 +1,26 @@ +{ + "entry_point": "./tests/tests/uint/u8/eq.zok", + "max_constraint_count": 21, + "tests": [ + { + "input": { + "values": ["0x02", "0x02"] + }, + "output": { + "Ok": { + "values": ["1"] + } + } + }, + { + "input": { + "values": ["0x02", "0x04"] + }, + "output": { + "Ok": { + "values": ["0"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u8/eq.zok b/zokrates_core_test/tests/tests/uint/u8/eq.zok new file mode 100644 index 00000000..fe36c5e6 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u8/eq.zok @@ -0,0 +1,2 @@ +def main(u8 a, u8 b) -> bool: + return a == b \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u8/gt.json b/zokrates_core_test/tests/tests/uint/u8/gt.json new file mode 100644 index 00000000..e1432041 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u8/gt.json @@ -0,0 +1,26 @@ +{ + "entry_point": "./tests/tests/uint/u8/gt.zok", + "max_constraint_count": 681, + "tests": [ + { + "input": { + "values": ["0x04", "0x02"] + }, + "output": { + "Ok": { + "values": ["1"] + } + } + }, + { + "input": { + "values": ["0x02", "0x02"] + }, + "output": { + "Ok": { + "values": ["0"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u8/gt.zok b/zokrates_core_test/tests/tests/uint/u8/gt.zok new file mode 100644 index 00000000..689b1548 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u8/gt.zok @@ -0,0 +1,2 @@ +def main(u8 a, u8 b) -> bool: + return a > b \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u8/gte.json b/zokrates_core_test/tests/tests/uint/u8/gte.json new file mode 100644 index 00000000..1b3d35b8 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u8/gte.json @@ -0,0 +1,36 @@ +{ + "entry_point": "./tests/tests/uint/u8/gte.zok", + "max_constraint_count": 681, + "tests": [ + { + "input": { + "values": ["0x04", "0x02"] + }, + "output": { + "Ok": { + "values": ["1"] + } + } + }, + { + "input": { + "values": ["0x02", "0x02"] + }, + "output": { + "Ok": { + "values": ["1"] + } + } + }, + { + "input": { + "values": ["0x01", "0x02"] + }, + "output": { + "Ok": { + "values": ["0"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u8/gte.zok b/zokrates_core_test/tests/tests/uint/u8/gte.zok new file mode 100644 index 00000000..88cb58bb --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u8/gte.zok @@ -0,0 +1,2 @@ +def main(u8 a, u8 b) -> bool: + return a >= b \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u8/lshift.json b/zokrates_core_test/tests/tests/uint/u8/lshift.json new file mode 100644 index 00000000..ca664ad9 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u8/lshift.json @@ -0,0 +1,26 @@ +{ + "entry_point": "./tests/tests/uint/u8/lshift.zok", + "max_constraint_count": 10, + "tests": [ + { + "input": { + "values": ["0x02"] + }, + "output": { + "Ok": { + "values": ["0x04"] + } + } + }, + { + "input": { + "values": ["0xff"] + }, + "output": { + "Ok": { + "values": ["0xfe"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u8/lshift.zok b/zokrates_core_test/tests/tests/uint/u8/lshift.zok new file mode 100644 index 00000000..530e5a49 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u8/lshift.zok @@ -0,0 +1,2 @@ +def main(u8 x) -> u8: + return x << 1 \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u8/lt.json b/zokrates_core_test/tests/tests/uint/u8/lt.json new file mode 100644 index 00000000..c290cd94 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u8/lt.json @@ -0,0 +1,26 @@ +{ + "entry_point": "./tests/tests/uint/u8/lt.zok", + "max_constraint_count": 681, + "tests": [ + { + "input": { + "values": ["0x02", "0x04"] + }, + "output": { + "Ok": { + "values": ["1"] + } + } + }, + { + "input": { + "values": ["0x02", "0x02"] + }, + "output": { + "Ok": { + "values": ["0"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u8/lt.zok b/zokrates_core_test/tests/tests/uint/u8/lt.zok new file mode 100644 index 00000000..258c943f --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u8/lt.zok @@ -0,0 +1,2 @@ +def main(u8 a, u8 b) -> bool: + return a < b \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u8/lte.json b/zokrates_core_test/tests/tests/uint/u8/lte.json new file mode 100644 index 00000000..f2bd803f --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u8/lte.json @@ -0,0 +1,36 @@ +{ + "entry_point": "./tests/tests/uint/u8/lte.zok", + "max_constraint_count": 683, + "tests": [ + { + "input": { + "values": ["0x02", "0x04"] + }, + "output": { + "Ok": { + "values": ["1"] + } + } + }, + { + "input": { + "values": ["0x02", "0x02"] + }, + "output": { + "Ok": { + "values": ["1"] + } + } + }, + { + "input": { + "values": ["0x03", "0x02"] + }, + "output": { + "Ok": { + "values": ["0"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u8/lte.zok b/zokrates_core_test/tests/tests/uint/u8/lte.zok new file mode 100644 index 00000000..47de1f47 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u8/lte.zok @@ -0,0 +1,2 @@ +def main(u8 a, u8 b) -> bool: + return a <= b \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u8/mul.json b/zokrates_core_test/tests/tests/uint/u8/mul.json new file mode 100644 index 00000000..72878d75 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u8/mul.json @@ -0,0 +1,26 @@ +{ + "entry_point": "./tests/tests/uint/u8/mul.zok", + "max_constraint_count": 37, + "tests": [ + { + "input": { + "values": ["0x02", "0x02"] + }, + "output": { + "Ok": { + "values": ["0x04"] + } + } + }, + { + "input": { + "values": ["0xff", "0x02"] + }, + "output": { + "Ok": { + "values": ["0xfe"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/mul.zok b/zokrates_core_test/tests/tests/uint/u8/mul.zok similarity index 63% rename from zokrates_core_test/tests/tests/uint/mul.zok rename to zokrates_core_test/tests/tests/uint/u8/mul.zok index 195ff2b4..6336cced 100644 --- a/zokrates_core_test/tests/tests/uint/mul.zok +++ b/zokrates_core_test/tests/tests/uint/u8/mul.zok @@ -1,2 +1,2 @@ def main(u8 a, u8 b) -> u8: - return a * b \ No newline at end of file + return a * b \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u8/neq.json b/zokrates_core_test/tests/tests/uint/u8/neq.json new file mode 100644 index 00000000..fae87c75 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u8/neq.json @@ -0,0 +1,26 @@ +{ + "entry_point": "./tests/tests/uint/u8/neq.zok", + "max_constraint_count": 21, + "tests": [ + { + "input": { + "values": ["0x02", "0x02"] + }, + "output": { + "Ok": { + "values": ["0"] + } + } + }, + { + "input": { + "values": ["0x02", "0x04"] + }, + "output": { + "Ok": { + "values": ["1"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u8/neq.zok b/zokrates_core_test/tests/tests/uint/u8/neq.zok new file mode 100644 index 00000000..50dbe3be --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u8/neq.zok @@ -0,0 +1,2 @@ +def main(u8 a, u8 b) -> bool: + return a != b \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u8/not.json b/zokrates_core_test/tests/tests/uint/u8/not.json new file mode 100644 index 00000000..40e9153d --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u8/not.json @@ -0,0 +1,26 @@ +{ + "entry_point": "./tests/tests/uint/u8/not.zok", + "max_constraint_count": 10, + "tests": [ + { + "input": { + "values": ["0x01"] + }, + "output": { + "Ok": { + "values": ["0xfe"] + } + } + }, + { + "input": { + "values": ["0xff"] + }, + "output": { + "Ok": { + "values": ["0x00"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u8/not.zok b/zokrates_core_test/tests/tests/uint/u8/not.zok new file mode 100644 index 00000000..422b309c --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u8/not.zok @@ -0,0 +1,2 @@ +def main(u8 a) -> u8: + return !a \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/or.json b/zokrates_core_test/tests/tests/uint/u8/or.json similarity index 89% rename from zokrates_core_test/tests/tests/uint/or.json rename to zokrates_core_test/tests/tests/uint/u8/or.json index 28273855..1387450d 100644 --- a/zokrates_core_test/tests/tests/uint/or.json +++ b/zokrates_core_test/tests/tests/uint/u8/or.json @@ -1,5 +1,5 @@ { - "entry_point": "./tests/tests/uint/or.zok", + "entry_point": "./tests/tests/uint/u8/or.zok", "max_constraint_count": 27, "tests": [ { diff --git a/zokrates_core_test/tests/tests/uint/or.zok b/zokrates_core_test/tests/tests/uint/u8/or.zok similarity index 100% rename from zokrates_core_test/tests/tests/uint/or.zok rename to zokrates_core_test/tests/tests/uint/u8/or.zok diff --git a/zokrates_core_test/tests/tests/uint/add.json b/zokrates_core_test/tests/tests/uint/u8/rem.json similarity index 59% rename from zokrates_core_test/tests/tests/uint/add.json rename to zokrates_core_test/tests/tests/uint/u8/rem.json index e42dc1d6..9e5e04c0 100644 --- a/zokrates_core_test/tests/tests/uint/add.json +++ b/zokrates_core_test/tests/tests/uint/u8/rem.json @@ -1,7 +1,17 @@ { - "entry_point": "./tests/tests/uint/add.zok", - "max_constraint_count": 29, + "entry_point": "./tests/tests/uint/u8/rem.zok", + "max_constraint_count": 48, "tests": [ + { + "input": { + "values": ["0x02", "0x04"] + }, + "output": { + "Ok": { + "values": ["0x02"] + } + } + }, { "input": { "values": ["0xff", "0x01"] @@ -14,21 +24,11 @@ }, { "input": { - "values": ["0x00", "0x01"] + "values": ["0x2a", "0x0a"] }, "output": { "Ok": { - "values": ["0x01"] - } - } - }, - { - "input": { - "values": ["0xff", "0xff"] - }, - "output": { - "Ok": { - "values": ["0xfe"] + "values": ["0x02"] } } } diff --git a/zokrates_core_test/tests/tests/uint/u8/rem.zok b/zokrates_core_test/tests/tests/uint/u8/rem.zok new file mode 100644 index 00000000..f7097d68 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u8/rem.zok @@ -0,0 +1,2 @@ +def main(u8 x, u8 y) -> u8: + return x % y \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u8/rshift.json b/zokrates_core_test/tests/tests/uint/u8/rshift.json new file mode 100644 index 00000000..1155edbc --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u8/rshift.json @@ -0,0 +1,26 @@ +{ + "entry_point": "./tests/tests/uint/u8/rshift.zok", + "max_constraint_count": 10, + "tests": [ + { + "input": { + "values": ["0x02"] + }, + "output": { + "Ok": { + "values": ["0x01"] + } + } + }, + { + "input": { + "values": ["0xff"] + }, + "output": { + "Ok": { + "values": ["0x7f"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u8/rshift.zok b/zokrates_core_test/tests/tests/uint/u8/rshift.zok new file mode 100644 index 00000000..60ef731c --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u8/rshift.zok @@ -0,0 +1,2 @@ +def main(u8 x) -> u8: + return x >> 1 \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u8/sub.json b/zokrates_core_test/tests/tests/uint/u8/sub.json new file mode 100644 index 00000000..084bce99 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u8/sub.json @@ -0,0 +1,26 @@ +{ + "entry_point": "./tests/tests/uint/u8/sub.zok", + "max_constraint_count": 29, + "tests": [ + { + "input": { + "values": ["0xff", "0x01"] + }, + "output": { + "Ok": { + "values": ["0xfe"] + } + } + }, + { + "input": { + "values": ["0x00", "0x01"] + }, + "output": { + "Ok": { + "values": ["0xff"] + } + } + } + ] +} \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/u8/sub.zok b/zokrates_core_test/tests/tests/uint/u8/sub.zok new file mode 100644 index 00000000..7e101a83 --- /dev/null +++ b/zokrates_core_test/tests/tests/uint/u8/sub.zok @@ -0,0 +1,2 @@ +def main(u8 a, u8 b) -> u8: + return a - b \ No newline at end of file diff --git a/zokrates_core_test/tests/tests/uint/xor.json b/zokrates_core_test/tests/tests/uint/u8/xor.json similarity index 89% rename from zokrates_core_test/tests/tests/uint/xor.json rename to zokrates_core_test/tests/tests/uint/u8/xor.json index b9b98ae0..85e00d0d 100644 --- a/zokrates_core_test/tests/tests/uint/xor.json +++ b/zokrates_core_test/tests/tests/uint/u8/xor.json @@ -1,5 +1,5 @@ { - "entry_point": "./tests/tests/uint/xor.zok", + "entry_point": "./tests/tests/uint/u8/xor.zok", "max_constraint_count": 27, "tests": [ { diff --git a/zokrates_core_test/tests/tests/uint/xor.zok b/zokrates_core_test/tests/tests/uint/u8/xor.zok similarity index 100% rename from zokrates_core_test/tests/tests/uint/xor.zok rename to zokrates_core_test/tests/tests/uint/u8/xor.zok diff --git a/zokrates_test/src/lib.rs b/zokrates_test/src/lib.rs index ebcd9556..7c48ebf4 100644 --- a/zokrates_test/src/lib.rs +++ b/zokrates_test/src/lib.rs @@ -2,9 +2,13 @@ extern crate serde_derive; use std::fs::File; +use std::io::{BufReader, Read}; use std::path::{Path, PathBuf}; + +use zokrates_core::compile::{compile, CompileConfig}; use zokrates_core::ir; use zokrates_field::{Bls12_377Field, Bls12_381Field, Bn128Field, Bw6_761Field, Field}; +use zokrates_fs_resolver::FileSystemResolver; #[derive(Serialize, Deserialize, Clone)] enum Curve { @@ -46,15 +50,8 @@ struct Output { type Val = String; fn parse_val(s: String) -> T { - let s = if s.starts_with("0x") { - u32::from_str_radix(s.trim_start_matches("0x"), 16) - .unwrap() - .to_string() - } else { - s - }; - - T::try_from_dec_str(&s).unwrap() + let radix = if s.starts_with("0x") { 16 } else { 10 }; + T::try_from_str(s.trim_start_matches("0x"), radix).unwrap() } impl From> for ComparableResult { @@ -85,10 +82,6 @@ fn compare(result: ir::ExecutionResult, expected: TestResult) -> Re Ok(()) } -use std::io::{BufReader, Read}; -use zokrates_core::compile::{compile, CompileConfig}; -use zokrates_fs_resolver::FileSystemResolver; - pub fn test_inner(test_path: &str) { let t: Tests = serde_json::from_reader(BufReader::new(File::open(Path::new(test_path)).unwrap())).unwrap();