From 1f41544a60c12b34eeff50f4629462534b4bb725 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 10 Oct 2015 14:08:00 +0100 Subject: Parse Java method calls --- .../tests/frontends/java/JavaReaderTests.java | 29 +++++++++++++++++++--- 1 file changed, 25 insertions(+), 4 deletions(-) (limited to 'src/test') 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()); + } } } -- cgit v1.2.3