diff options
| -rw-r--r-- | src/main/java/org/zwobble/couscous/interpreter/Executor.java | 3 | ||||
| -rw-r--r-- | src/test/java/org/zwobble/couscous/tests/BackendMethodTests.java | 10 |
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(); |
