aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/org/zwobble
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/org/zwobble')
-rw-r--r--src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java25
-rw-r--r--src/test/java/org/zwobble/couscous/tests/interpreter/InterpreterTests.java15
2 files changed, 27 insertions, 13 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
new file mode 100644
index 0000000..075d9b3
--- /dev/null
+++ b/src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java
@@ -0,0 +1,25 @@
+package org.zwobble.couscous.tests.interpreter;
+
+import org.junit.Test;
+import org.zwobble.couscous.ast.FormalArgumentNode;
+import org.zwobble.couscous.interpreter.Environment;
+import org.zwobble.couscous.values.StringValue;
+
+import com.google.common.collect.ImmutableMap;
+
+import static org.junit.Assert.assertEquals;
+import static org.zwobble.couscous.ast.Assignment.assign;
+import static org.zwobble.couscous.ast.LiteralNode.literal;
+import static org.zwobble.couscous.interpreter.Evaluator.eval;
+
+import lombok.val;
+
+public class EvaluatorTests {
+ @Test
+ public void valueOfAssignmentExpressionIsNewValue() {
+ val arg = new FormalArgumentNode(42, "x");
+ val environment = new Environment(ImmutableMap.of(arg.getId(), new StringValue("[initial value]")));
+ val result = eval(environment, assign(arg, literal("[updated value]")));
+ assertEquals(new StringValue("[updated value]"), result);
+ }
+}
diff --git a/src/test/java/org/zwobble/couscous/tests/interpreter/InterpreterTests.java b/src/test/java/org/zwobble/couscous/tests/interpreter/InterpreterTests.java
index d3bc21c..54abd8a 100644
--- a/src/test/java/org/zwobble/couscous/tests/interpreter/InterpreterTests.java
+++ b/src/test/java/org/zwobble/couscous/tests/interpreter/InterpreterTests.java
@@ -31,7 +31,7 @@ public class InterpreterTests {
@Test
public void canReturnLiteralValue() {
val method = staticMethod("hello")
- .statement(new ReturnNode(LiteralNode.of("hello, world!")));
+ .statement(new ReturnNode(LiteralNode.literal("hello, world!")));
val result = runMethod(method);
assertEquals(new StringValue("hello, world!"), result);
@@ -63,7 +63,7 @@ public class InterpreterTests {
val arg = new FormalArgumentNode(42, "x");
val method = staticMethod("hello")
.argument(arg)
- .statement(new ExpressionStatementNode(new Assignment(reference(arg), LiteralNode.of("[updated value]"))))
+ .statement(new ExpressionStatementNode(new Assignment(reference(arg), LiteralNode.literal("[updated value]"))))
.statement(new ReturnNode(reference(arg)));
val result = runMethod(method, new StringValue("[initial value]"));
@@ -71,17 +71,6 @@ public class InterpreterTests {
}
@Test
- public void valueOfAssignmentExpressionIsNewValue() {
- val arg = new FormalArgumentNode(42, "x");
- val method = staticMethod("hello")
- .argument(arg)
- .statement(new ReturnNode(new Assignment(reference(arg), LiteralNode.of("[updated value]"))));
- val result = runMethod(method, new StringValue("[initial value]"));
-
- assertEquals(new StringValue("[updated value]"), result);
- }
-
- @Test
public void methodWithNoStatementsReturnsUnit() {
val method = staticMethod("hello");
val result = runMethod(method);