aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/org/zwobble/couscous/tests/interpreter
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2015-10-05 17:21:55 +0100
committerMichael Williamson <mike@zwobble.org>2015-10-05 17:21:55 +0100
commit1448733a03e965d5cb9261a3519370ff5b34122d (patch)
treeb79a987f1f1591e431393ba4eee45a37310820a1 /src/test/java/org/zwobble/couscous/tests/interpreter
parent1c2195e727aaed3afe604eb602b105d7fa1f917d (diff)
Support ternary conditionals in Python backend
Diffstat (limited to 'src/test/java/org/zwobble/couscous/tests/interpreter')
-rw-r--r--src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java24
1 files changed, 9 insertions, 15 deletions
diff --git a/src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java b/src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java
index 40cdf8f..0a2a947 100644
--- a/src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java
+++ b/src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java
@@ -4,6 +4,7 @@ import org.junit.Test;
import org.zwobble.couscous.JavaProject;
import org.zwobble.couscous.MapBackedProject;
import org.zwobble.couscous.ast.ClassNode;
+import org.zwobble.couscous.ast.ExpressionNode;
import org.zwobble.couscous.ast.MethodNode;
import org.zwobble.couscous.ast.ReturnNode;
import org.zwobble.couscous.ast.TernaryConditionalNode;
@@ -16,7 +17,9 @@ import org.zwobble.couscous.interpreter.WrongNumberOfArguments;
import org.zwobble.couscous.interpreter.values.ConcreteType;
import org.zwobble.couscous.interpreter.values.IntegerInterpreterValue;
import org.zwobble.couscous.interpreter.values.StringInterpreterValue;
+import org.zwobble.couscous.tests.BackendEvalTests;
import org.zwobble.couscous.values.IntegerValue;
+import org.zwobble.couscous.values.PrimitiveValue;
import org.zwobble.couscous.values.StringValue;
import com.google.common.collect.ImmutableMap;
@@ -34,7 +37,7 @@ import static org.zwobble.couscous.tests.util.ExtraAsserts.assertThrows;
import lombok.val;
-public class EvaluatorTests {
+public class EvaluatorTests extends BackendEvalTests {
@Test
public void valueOfAssignmentExpressionIsNewValue() {
val arg = formalArg(var(42, "x", StringValue.REF));
@@ -46,20 +49,6 @@ public class EvaluatorTests {
}
@Test
- public void whenConditionIsTrueThenValueOfConditionalTernaryIsTrueBranch() {
- val result = eval(emptyEnvironment(),
- new TernaryConditionalNode(literal(true), literal("T"), literal("F")));
- assertEquals(new StringInterpreterValue("T"), result);
- }
-
- @Test
- public void whenConditionIsFalseThenValueOfConditionalTernaryIsFalseBranch() {
- val result = eval(emptyEnvironment(),
- new TernaryConditionalNode(literal(false), literal("T"), literal("F")));
- assertEquals(new StringInterpreterValue("F"), result);
- }
-
- @Test
public void errorIfConditionIsNotBoolean() {
val exception = assertThrows(ConditionMustBeBoolean.class,
() -> eval(emptyEnvironment(),
@@ -134,4 +123,9 @@ public class EvaluatorTests {
JavaProject.builder().build(),
ImmutableMap.of());
}
+
+ @Override
+ protected PrimitiveValue evalExpression(ExpressionNode expression) {
+ return eval(emptyEnvironment(), expression).toPrimitiveValue().get();
+ }
}