aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/org/zwobble/couscous
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2015-10-06 17:26:33 +0100
committerMichael Williamson <mike@zwobble.org>2015-10-06 17:26:33 +0100
commitcf3b2cfd72f61fa3e4fdb13ebcfb70927c052599 (patch)
tree593eda0d9f1359b91f59ac4a23cdd5fa2598a5e4 /src/test/java/org/zwobble/couscous
parent9ed69cadcf684119fb8a1cbc843aa0b1d9c09651 (diff)
Ensure field is set to correct value
Diffstat (limited to 'src/test/java/org/zwobble/couscous')
-rw-r--r--src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java20
1 files changed, 20 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 7c5594a..808c2a7 100644
--- a/src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java
+++ b/src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java
@@ -134,6 +134,26 @@ public class EvaluatorTests extends BackendEvalTests {
assertEquals(new NoSuchField("value"), exception);
}
+ @Test
+ public void cannotSetValueOfFieldWithWrongType() {
+ val classNode = ClassNode.builder("com.example.Example")
+ .field("value", IntegerValue.REF)
+ .constructor(constructor -> constructor
+ .statement(assignStatement(
+ fieldAccess(constructor.thisReference(), "value", IntegerValue.REF),
+ literal(""))))
+ .build();
+
+ val exception = assertThrows(UnexpectedValueType.class,
+ () -> evalExpression(
+ asList(classNode),
+ constructorCall(
+ classNode.getName(),
+ asList())));
+
+ assertEquals(new UnexpectedValueType(IntegerValue.REF, StringValue.REF), exception);
+ }
+
private static Environment emptyEnvironment() {
return new Environment(
JavaProject.builder().build(),