aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/org/zwobble
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2015-10-10 14:08:00 +0100
committerMichael Williamson <mike@zwobble.org>2015-10-10 14:08:00 +0100
commit1f41544a60c12b34eeff50f4629462534b4bb725 (patch)
treeb01f94842ca09ae5d9a27af2593382e39d628b0e /src/test/java/org/zwobble
parent814afa129ff03c3c6396afcf5f87ea6ae5b6413f (diff)
Parse Java method calls
Diffstat (limited to 'src/test/java/org/zwobble')
-rw-r--r--src/test/java/org/zwobble/couscous/tests/frontends/java/JavaReaderTests.java29
1 files changed, 25 insertions, 4 deletions
diff --git a/src/test/java/org/zwobble/couscous/tests/frontends/java/JavaReaderTests.java b/src/test/java/org/zwobble/couscous/tests/frontends/java/JavaReaderTests.java
index d75f16c..1625c83 100644
--- a/src/test/java/org/zwobble/couscous/tests/frontends/java/JavaReaderTests.java
+++ b/src/test/java/org/zwobble/couscous/tests/frontends/java/JavaReaderTests.java
@@ -1,12 +1,18 @@
package org.zwobble.couscous.tests.frontends.java;
+import java.nio.file.Files;
+
import org.junit.Test;
import org.zwobble.couscous.ast.ExpressionNode;
import org.zwobble.couscous.ast.ReturnNode;
+import org.zwobble.couscous.ast.TypeName;
import org.zwobble.couscous.frontends.java.JavaReader;
+import static java.util.Arrays.asList;
import static org.junit.Assert.assertEquals;
import static org.zwobble.couscous.ast.LiteralNode.literal;
+import static org.zwobble.couscous.ast.MethodCallNode.methodCall;
+import static org.zwobble.couscous.tests.util.ExtraFiles.deleteRecursively;
import lombok.SneakyThrows;
import lombok.val;
@@ -19,6 +25,12 @@ public class JavaReaderTests {
assertEquals(literal(false), readExpression("false"));
assertEquals(literal(42), readExpression("42"));
}
+ @Test
+ public void canReadInstanceMethodCalls() {
+ assertEquals(
+ methodCall(literal("hello"), "startsWith", asList(literal("h")), TypeName.of("boolean")),
+ readExpression("\"hello\".startsWith(\"h\")"));
+ }
@SneakyThrows
private ExpressionNode readExpression(String expressionSource) {
@@ -30,9 +42,18 @@ public class JavaReaderTests {
" }" +
"}";
- val reader = new JavaReader();
- val classNode = reader.readClassFromString(javaClass);
- val returnStatement = (ReturnNode) classNode.getMethods().get(0).getBody().get(0);
- return returnStatement.getValue();
+ val directoryPath = Files.createTempDirectory(null);
+ val sourcePath = directoryPath.resolve("com/example/Example.java");
+ try {
+ Files.createDirectories(directoryPath.resolve("com/example"));
+ Files.write(sourcePath, asList(javaClass));
+
+ val reader = new JavaReader();
+ val classNode = reader.readClassFromFile(directoryPath, sourcePath);
+ val returnStatement = (ReturnNode) classNode.getMethods().get(0).getBody().get(0);
+ return returnStatement.getValue();
+ } finally {
+ deleteRecursively(directoryPath.toFile());
+ }
}
}