diff options
Diffstat (limited to 'src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java')
| -rw-r--r-- | src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java | 27 |
1 files changed, 26 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 e2ce667..ebfbd88 100644 --- a/src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java +++ b/src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java @@ -1,12 +1,19 @@ package org.zwobble.couscous.tests; +import java.util.List; + import org.junit.Test; +import org.zwobble.couscous.ast.ClassNode; import org.zwobble.couscous.ast.ExpressionNode; +import org.zwobble.couscous.ast.MethodNode; +import org.zwobble.couscous.ast.ReturnNode; import org.zwobble.couscous.ast.TernaryConditionalNode; import org.zwobble.couscous.values.IntegerValue; import org.zwobble.couscous.values.PrimitiveValue; import org.zwobble.couscous.values.StringValue; +import com.google.common.collect.ImmutableList; + import static java.util.Arrays.asList; import static org.junit.Assert.assertEquals; import static org.zwobble.couscous.ast.LiteralNode.literal; @@ -64,5 +71,23 @@ public abstract class BackendEvalTests { assertEquals(value(42), result); } - protected abstract PrimitiveValue evalExpression(ExpressionNode expression); + @Test + public void canCallStaticMethodFromUserDefinedStaticMethod() { + val classNode = ClassNode.builder("com.example.Example") + .method(MethodNode.staticMethod("main") + .statement(new ReturnNode(staticMethodCall("java.lang.Integer", "parseInt", literal("42")))) + .build()) + .build(); + val result = evalExpression(asList(classNode), + staticMethodCall("com.example.Example", "main")); + assertEquals(value(42), result); + } + + protected PrimitiveValue evalExpression(ExpressionNode expression) { + return evalExpression(ImmutableList.of(), expression); + } + + protected abstract PrimitiveValue evalExpression( + List<ClassNode> classes, + ExpressionNode expression); } |
