aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/org/zwobble
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/org/zwobble')
-rw-r--r--src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java b/src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java
index ebfbd88..da599dc 100644
--- a/src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java
+++ b/src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java
@@ -16,6 +16,7 @@ import com.google.common.collect.ImmutableList;
import static java.util.Arrays.asList;
import static org.junit.Assert.assertEquals;
+import static org.zwobble.couscous.ast.ConstructorCallNode.constructorCall;
import static org.zwobble.couscous.ast.LiteralNode.literal;
import static org.zwobble.couscous.ast.MethodCallNode.methodCall;
import static org.zwobble.couscous.ast.StaticMethodCallNode.staticMethodCall;
@@ -83,6 +84,18 @@ public abstract class BackendEvalTests {
assertEquals(value(42), result);
}
+ @Test
+ public void canCallInstanceMethodOnUserDefinedClass() {
+ val classNode = ClassNode.builder("com.example.Example")
+ .method(MethodNode.method("main")
+ .statement(new ReturnNode(literal(42)))
+ .build())
+ .build();
+ val result = evalExpression(asList(classNode),
+ methodCall(constructorCall(classNode.getName(), asList()), "main", asList(), IntegerValue.REF));
+ assertEquals(value(42), result);
+ }
+
protected PrimitiveValue evalExpression(ExpressionNode expression) {
return evalExpression(ImmutableList.of(), expression);
}