aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/org/zwobble/couscous/interpreter/Executor.java3
-rw-r--r--src/test/java/org/zwobble/couscous/tests/BackendMethodTests.java10
2 files changed, 12 insertions, 1 deletions
diff --git a/src/main/java/org/zwobble/couscous/interpreter/Executor.java b/src/main/java/org/zwobble/couscous/interpreter/Executor.java
index 9e34c42..84665a1 100644
--- a/src/main/java/org/zwobble/couscous/interpreter/Executor.java
+++ b/src/main/java/org/zwobble/couscous/interpreter/Executor.java
@@ -96,8 +96,9 @@ public class Executor implements StatementNodeMapper<Optional<InterpreterValue>>
BooleanInterpreterValue condition = (BooleanInterpreterValue) eval(environment, ifStatement.getCondition());
if (condition.getValue()) {
return exec(ifStatement.getTrueBranch());
+ } else {
+ return exec(ifStatement.getFalseBranch());
}
- return Optional.empty();
}
@Override
diff --git a/src/test/java/org/zwobble/couscous/tests/BackendMethodTests.java b/src/test/java/org/zwobble/couscous/tests/BackendMethodTests.java
index f77140b..758832f 100644
--- a/src/test/java/org/zwobble/couscous/tests/BackendMethodTests.java
+++ b/src/test/java/org/zwobble/couscous/tests/BackendMethodTests.java
@@ -96,6 +96,16 @@ public abstract class BackendMethodTests {
asList(returns(literal("[false]")))));
assertEquals(value("[true]"), runMethod(method));
}
+
+ @Test
+ public void whenConditionIsFalseIfStatementExecutesTrueBranch() {
+ MethodNode.Builder method = staticMethod("hello")
+ .statement(ifStatement(
+ literal(false),
+ asList(returns(literal("[true]"))),
+ asList(returns(literal("[false]")))));
+ assertEquals(value("[false]"), runMethod(method));
+ }
protected PrimitiveValue runMethod(MethodNode.Builder methodBuilder, PrimitiveValue... arguments) {
MethodNode method = methodBuilder.build();