From ae7b5c0daad1db9e1cdacbd0ddc206a18a557d7a Mon Sep 17 00:00:00 2001 From: schaeff Date: Fri, 18 Jan 2019 19:59:17 +0100 Subject: [PATCH] change test to check flattening of 1-sized array is identical to flattening of single value --- zokrates_core/src/flatten/mod.rs | 87 ++++++++++++++++++++++---------- 1 file changed, 60 insertions(+), 27 deletions(-) diff --git a/zokrates_core/src/flatten/mod.rs b/zokrates_core/src/flatten/mod.rs index ce6be4cb..511afc31 100644 --- a/zokrates_core/src/flatten/mod.rs +++ b/zokrates_core/src/flatten/mod.rs @@ -2406,36 +2406,69 @@ mod tests { fn array_if() { // if 1 == 1 then [1] else [3] fi - let mut flattener = Flattener::new(FieldPrime::get_required_bits()); - let mut functions_flattened = vec![]; - flattener.load_corelib(&mut functions_flattened); - let arguments_flattened = vec![]; - let mut statements_flattened = vec![]; + let with_arrays = { + let mut flattener = Flattener::new(FieldPrime::get_required_bits()); + let mut functions_flattened = vec![]; + flattener.load_corelib(&mut functions_flattened); + let arguments_flattened = vec![]; + let mut statements_flattened = vec![]; - let e = FieldElementArrayExpression::IfElse( - box BooleanExpression::Eq( - box FieldElementExpression::Number(FieldPrime::from(1)), - box FieldElementExpression::Number(FieldPrime::from(1)), - ), - box FieldElementArrayExpression::Value( - 1, - vec![FieldElementExpression::Number(FieldPrime::from(1))], - ), - box FieldElementArrayExpression::Value( - 1, - vec![FieldElementExpression::Number(FieldPrime::from(3))], - ), - ); + let e = FieldElementArrayExpression::IfElse( + box BooleanExpression::Eq( + box FieldElementExpression::Number(FieldPrime::from(1)), + box FieldElementExpression::Number(FieldPrime::from(1)), + ), + box FieldElementArrayExpression::Value( + 1, + vec![FieldElementExpression::Number(FieldPrime::from(1))], + ), + box FieldElementArrayExpression::Value( + 1, + vec![FieldElementExpression::Number(FieldPrime::from(3))], + ), + ); - println!( - "{:?}", - flattener.flatten_field_array_expression( - &mut functions_flattened, - &arguments_flattened, - &mut statements_flattened, - e, + ( + flattener.flatten_field_array_expression( + &mut functions_flattened, + &arguments_flattened, + &mut statements_flattened, + e, + )[0] + .clone(), + statements_flattened, ) - ); + }; + + let without_arrays = { + let mut flattener = Flattener::new(FieldPrime::get_required_bits()); + let mut functions_flattened = vec![]; + flattener.load_corelib(&mut functions_flattened); + let arguments_flattened = vec![]; + let mut statements_flattened = vec![]; + + // if 1 == 1 then 1 else 3 fi + let e = FieldElementExpression::IfElse( + box BooleanExpression::Eq( + box FieldElementExpression::Number(FieldPrime::from(1)), + box FieldElementExpression::Number(FieldPrime::from(1)), + ), + box FieldElementExpression::Number(FieldPrime::from(1)), + box FieldElementExpression::Number(FieldPrime::from(3)), + ); + + ( + flattener.flatten_field_expression( + &mut functions_flattened, + &arguments_flattened, + &mut statements_flattened, + e, + ), + statements_flattened, + ) + }; + + assert_eq!(with_arrays, without_arrays); } #[test]