aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java')
-rw-r--r--src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java27
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);
}