aboutsummaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/test')
-rw-r--r--src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java19
1 files changed, 19 insertions, 0 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 9cf87a4..2cec753 100644
--- a/src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java
+++ b/src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java
@@ -27,6 +27,7 @@ import com.google.common.collect.ImmutableMap;
import static java.util.Arrays.asList;
import static org.junit.Assert.assertEquals;
import static org.zwobble.couscous.ast.AssignmentNode.assign;
+import static org.zwobble.couscous.ast.ConstructorCallNode.constructorCall;
import static org.zwobble.couscous.ast.FormalArgumentNode.formalArg;
import static org.zwobble.couscous.ast.LiteralNode.literal;
import static org.zwobble.couscous.ast.MethodCallNode.methodCall;
@@ -93,6 +94,24 @@ public class EvaluatorTests extends BackendEvalTests {
assertEquals(new UnexpectedValueType(IntegerValue.REF, StringValue.REF), exception);
}
+ @Test
+ public void errorIfConstructorArgumentIsWrongType() {
+ val argument = formalArg(var(42, "x", IntegerValue.REF));
+ val classNode = ClassNode.builder("com.example.Example")
+ .constructor(constructor -> constructor
+ .argument(argument))
+ .build();
+
+ val exception = assertThrows(UnexpectedValueType.class,
+ () -> evalExpression(
+ asList(classNode),
+ constructorCall(
+ classNode.getName(),
+ asList(literal("")))));
+
+ assertEquals(new UnexpectedValueType(IntegerValue.REF, StringValue.REF), exception);
+ }
+
private static Environment emptyEnvironment() {
return new Environment(
JavaProject.builder().build(),