From d4c5596cc4c20d884e33d0eb0faab87505483e46 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Thu, 31 Mar 2016 19:18:39 +0100 Subject: Add WIP test for parameterised types in the interpreter --- .../couscous/tests/interpreter/EvaluatorTests.java | 26 ++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) (limited to 'src') 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 5f42065..9fe84e6 100644 --- a/src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java +++ b/src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java @@ -2,12 +2,10 @@ package org.zwobble.couscous.tests.interpreter; import com.google.common.collect.ImmutableMap; import org.hamcrest.Matcher; +import org.junit.Ignore; import org.junit.Test; import org.zwobble.couscous.ast.*; -import org.zwobble.couscous.interpreter.Environment; -import org.zwobble.couscous.interpreter.JavaProject; -import org.zwobble.couscous.interpreter.MapBackedProject; -import org.zwobble.couscous.interpreter.StackFrameBuilder; +import org.zwobble.couscous.interpreter.*; import org.zwobble.couscous.interpreter.errors.*; import org.zwobble.couscous.interpreter.values.ArrayInterpreterValue; import org.zwobble.couscous.interpreter.values.IntegerInterpreterValue; @@ -41,7 +39,9 @@ import static org.zwobble.couscous.interpreter.values.InterpreterValues.value; import static org.zwobble.couscous.tests.TestIds.ANY_ID; import static org.zwobble.couscous.tests.util.ExtraAsserts.assertThrows; import static org.zwobble.couscous.tests.util.ExtraMatchers.*; +import static org.zwobble.couscous.types.ParameterizedType.parameterizedType; import static org.zwobble.couscous.util.ExtraLists.list; +import static org.zwobble.couscous.util.ExtraMaps.map; public class EvaluatorTests extends BackendEvalTests { @Test @@ -249,6 +249,24 @@ public class EvaluatorTests extends BackendEvalTests { StringInterpreterValue.of("two")))); } + @Test + @Ignore("WIP") + public void typeOfValueCanBeParameterisedType() { + ScalarType rawType = ScalarType.of("Box"); + ClassNode classNode = ClassNode.builder(rawType) + .addTypeParameter("T") + .build(); + Project project = JavaProject.of(list(classNode)); + Environment environment = new Environment(project, Optional.empty(), map()); + ConstructorCallNode call = constructorCall( + parameterizedType(rawType, list(Types.STRING)), + list()); + InterpreterValue value = eval(environment, call); + assertThat( + value.getType().getType(), + equalTo(parameterizedType(rawType, list(Types.STRING)))); + } + private Matcher isArrayInterpreterValue(ScalarType elementType, List elements) { return isInstance( ArrayInterpreterValue.class, -- cgit v1.2.3