aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/org
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/org')
-rw-r--r--src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java20
1 files changed, 19 insertions, 1 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 33d5347..902febd 100644
--- a/src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java
+++ b/src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java
@@ -94,7 +94,25 @@ public class EvaluatorTests extends BackendEvalTests {
new MethodSignature("substring", list(IntegerValue.REF, StringValue.REF), StringValue.REF),
exception.getSignature());
}
-
+
+ @Test
+ public void errorIfConstructorArgumentIsWrongType() {
+ FormalArgumentNode argument = formalArg(var(ANY_ID, "x", IntegerValue.REF));
+ ClassNode classNode = ClassNode.builder("com.example.Example")
+ .constructor(constructor -> constructor
+ .argument(argument))
+ .build();
+
+ UnexpectedValueType exception = assertThrows(UnexpectedValueType.class,
+ () -> evalExpression(
+ list(classNode),
+ constructorCall(
+ classNode.getName(),
+ list(literal("")))));
+
+ assertEquals(new UnexpectedValueType(IntegerValue.REF, StringValue.REF), exception);
+ }
+
@Test
public void cannotGetValueOfUndeclaredField() {
ClassNode classNode = ClassNode.builder("com.example.Example")