aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/org/zwobble
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2015-10-01 21:49:18 +0100
committerMichael Williamson <mike@zwobble.org>2015-10-01 21:49:18 +0100
commit30d2215800deafbdcfb134f1356777ec0139bb7a (patch)
treee687fa289e269bd91ab19b027d6d8a96b9c96b4d /src/test/java/org/zwobble
parent8187130b8a8aabbcf983e530413d6969141d6da2 (diff)
Use normal method call exec in interpreter entry point
Diffstat (limited to 'src/test/java/org/zwobble')
-rw-r--r--src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java10
-rw-r--r--src/test/java/org/zwobble/couscous/tests/interpreter/InterpreterTests.java24
-rw-r--r--src/test/java/org/zwobble/couscous/tests/interpreter/MapBackedProject.java19
3 files changed, 30 insertions, 23 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 d17e7fc..72a3ab4 100644
--- a/src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java
+++ b/src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java
@@ -26,8 +26,10 @@ 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 arg = new FormalArgumentNode(42, () -> StringValue.TYPE, "x");
+ val environment = new Environment(
+ new MapBackedProject(ImmutableMap.of()),
+ ImmutableMap.of(arg.getId(), new StringValue("[initial value]")));
val result = eval(environment, assign(arg, literal("[updated value]")));
assertEquals(new StringValue("[updated value]"), result);
}
@@ -100,6 +102,8 @@ public class EvaluatorTests {
}
private static Environment emptyEnvironment() {
- return new Environment(ImmutableMap.of());
+ return new Environment(
+ new MapBackedProject(ImmutableMap.of("java.lang.Integer", IntegerValue.TYPE)),
+ ImmutableMap.of());
}
}
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 bfdadf8..c764261 100644
--- a/src/test/java/org/zwobble/couscous/tests/interpreter/InterpreterTests.java
+++ b/src/test/java/org/zwobble/couscous/tests/interpreter/InterpreterTests.java
@@ -1,9 +1,6 @@
package org.zwobble.couscous.tests.interpreter;
-import java.util.Map;
-
import org.junit.Test;
-import org.zwobble.couscous.Project;
import org.zwobble.couscous.ast.Assignment;
import org.zwobble.couscous.ast.ClassNode;
import org.zwobble.couscous.ast.ExpressionStatementNode;
@@ -13,6 +10,7 @@ import org.zwobble.couscous.ast.MethodNode;
import org.zwobble.couscous.ast.ReturnNode;
import org.zwobble.couscous.interpreter.Interpreter;
import org.zwobble.couscous.interpreter.WrongNumberOfArguments;
+import org.zwobble.couscous.values.ConcreteType;
import org.zwobble.couscous.values.InterpreterValue;
import org.zwobble.couscous.values.StringValue;
@@ -47,7 +45,7 @@ public class InterpreterTests {
@Test
public void canPassValueToMethod() {
- val arg = new FormalArgumentNode(42, "x");
+ val arg = new FormalArgumentNode(42, () -> StringValue.TYPE, "x");
val method = staticMethod("hello")
.argument(arg)
.statement(new ReturnNode(reference(arg)));
@@ -68,7 +66,7 @@ public class InterpreterTests {
@Test
public void canReassignValueToArgument() {
- val arg = new FormalArgumentNode(42, "x");
+ val arg = new FormalArgumentNode(42, () -> StringValue.TYPE, "x");
val method = staticMethod("hello")
.argument(arg)
.statement(new ExpressionStatementNode(new Assignment(reference(arg), LiteralNode.literal("[updated value]"))))
@@ -85,22 +83,8 @@ public class InterpreterTests {
.build();
val className = "com.example.Program";
val interpreter = new Interpreter(new MapBackedProject(ImmutableMap.of(
- className, classNode)));
+ className, ConcreteType.fromNode(classNode))));
return interpreter.run(className, method.getName(), asList(arguments));
}
-
- private static class MapBackedProject implements Project {
- private Map<String, ClassNode> classes;
-
- public MapBackedProject(Map<String, ClassNode> classes) {
- this.classes = classes;
- }
-
- @Override
- public ClassNode findClass(String name) {
- return classes.get(name);
- }
-
- }
}
diff --git a/src/test/java/org/zwobble/couscous/tests/interpreter/MapBackedProject.java b/src/test/java/org/zwobble/couscous/tests/interpreter/MapBackedProject.java
new file mode 100644
index 0000000..0874afb
--- /dev/null
+++ b/src/test/java/org/zwobble/couscous/tests/interpreter/MapBackedProject.java
@@ -0,0 +1,19 @@
+package org.zwobble.couscous.tests.interpreter;
+
+import java.util.Map;
+
+import org.zwobble.couscous.Project;
+import org.zwobble.couscous.values.ConcreteType;
+
+public class MapBackedProject implements Project {
+ private Map<String, ConcreteType<?>> classes;
+
+ public MapBackedProject(Map<String, ConcreteType<?>> classes) {
+ this.classes = classes;
+ }
+
+ @Override
+ public ConcreteType<?> findClass(String name) {
+ return classes.get(name);
+ }
+}