diff options
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/java/org/zwobble/couscous/tests/frontends/java/JavaReaderTests.java | 29 |
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()); + } } } |
