diff options
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java b/src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java index da599dc..d1d72c0 100644 --- a/src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java +++ b/src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java @@ -17,9 +17,12 @@ 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.FormalArgumentNode.formalArg; import static org.zwobble.couscous.ast.LiteralNode.literal; import static org.zwobble.couscous.ast.MethodCallNode.methodCall; import static org.zwobble.couscous.ast.StaticMethodCallNode.staticMethodCall; +import static org.zwobble.couscous.ast.VariableDeclaration.var; +import static org.zwobble.couscous.ast.VariableReferenceNode.reference; import static org.zwobble.couscous.values.PrimitiveValues.value; import lombok.val; @@ -85,7 +88,7 @@ public abstract class BackendEvalTests { } @Test - public void canCallInstanceMethodOnUserDefinedClass() { + public void canCallInstanceMethodWithNoArgumentsOnUserDefinedClass() { val classNode = ClassNode.builder("com.example.Example") .method(MethodNode.method("main") .statement(new ReturnNode(literal(42))) @@ -96,6 +99,27 @@ public abstract class BackendEvalTests { assertEquals(value(42), result); } + @Test + public void canCallInstanceMethodWithArgumentsOnUserDefinedClass() { + val argument = formalArg(var(42, "x", IntegerValue.REF)); + val classNode = ClassNode.builder("com.example.Example") + .method(MethodNode.method("main") + .argument(argument) + .statement(new ReturnNode(reference(argument))) + .build()) + .build(); + + val result = evalExpression( + asList(classNode), + methodCall( + constructorCall(classNode.getName(), asList()), + "main", + asList(literal(42)), + IntegerValue.REF)); + + assertEquals(value(42), result); + } + protected PrimitiveValue evalExpression(ExpressionNode expression) { return evalExpression(ImmutableList.of(), expression); } |
