Allow if-expressions and switch-expressions in Engine::eval_expression.
This commit is contained in:
@@ -12,8 +12,47 @@ fn test_expressions() -> Result<(), Box<EvalAltResult>> {
|
||||
engine.eval_expression_with_scope::<INT>(&mut scope, "2 + (x + 10) * 2")?,
|
||||
42
|
||||
);
|
||||
assert_eq!(
|
||||
engine.eval_expression_with_scope::<INT>(&mut scope, "if x > 0 { 42 } else { 123 }")?,
|
||||
42
|
||||
);
|
||||
assert!(engine
|
||||
.eval_expression_with_scope::<INT>(&mut scope, "if x > 0 { 42 } else { 123 }")
|
||||
.eval_expression_with_scope::<INT>(&mut scope, "if x > 0 { let y = 42; y } else { 123 }")
|
||||
.is_err());
|
||||
assert!(engine
|
||||
.eval_expression_with_scope::<INT>(&mut scope, "if x > 0 { 42 } else { let y = 123; y }")
|
||||
.is_err());
|
||||
assert!(engine
|
||||
.eval_expression_with_scope::<INT>(&mut scope, "if x > 0 { 42 } else {}")
|
||||
.is_err());
|
||||
|
||||
assert_eq!(
|
||||
engine.eval_expression_with_scope::<INT>(
|
||||
&mut scope,
|
||||
"
|
||||
switch x {
|
||||
0 => 1,
|
||||
1..10 => 123,
|
||||
10 => 42,
|
||||
}
|
||||
"
|
||||
)?,
|
||||
42
|
||||
);
|
||||
assert!(engine
|
||||
.eval_expression_with_scope::<INT>(
|
||||
&mut scope,
|
||||
"
|
||||
switch x {
|
||||
0 => 1,
|
||||
1..10 => {
|
||||
let y = 123;
|
||||
y
|
||||
}
|
||||
10 => 42,
|
||||
}
|
||||
"
|
||||
)
|
||||
.is_err());
|
||||
|
||||
assert!(engine.eval_expression::<()>("40 + 2;").is_err());
|
||||
|
Reference in New Issue
Block a user