diff options
Diffstat (limited to 'src/test/java/org')
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); + } +} |
