diff options
| author | Michael Williamson <mike@zwobble.org> | 2015-10-07 16:32:31 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2015-10-07 16:32:31 +0100 |
| commit | 08fa3c8b03ba9b8054ae2c7d4e110c968eebc203 (patch) | |
| tree | 25b7376621076737ca42cf13e03b2dc6e81c90b7 /src/test/java | |
| parent | b34644b9abecdeb52e7d9ba528505e45d1d0fbe4 (diff) | |
Add initial JavaFrontend
Diffstat (limited to 'src/test/java')
| -rw-r--r-- | src/test/java/org/zwobble/couscous/tests/JavaToPythonTests.java | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/src/test/java/org/zwobble/couscous/tests/JavaToPythonTests.java b/src/test/java/org/zwobble/couscous/tests/JavaToPythonTests.java new file mode 100644 index 0000000..cbd8ca5 --- /dev/null +++ b/src/test/java/org/zwobble/couscous/tests/JavaToPythonTests.java @@ -0,0 +1,56 @@ +package org.zwobble.couscous.tests; + +import java.nio.file.Files; + +import org.junit.Test; +import org.zwobble.couscous.ast.TypeName; +import org.zwobble.couscous.frontends.java.JavaFrontend; +import org.zwobble.couscous.tests.backends.python.PythonMethodRunner; +import org.zwobble.couscous.values.PrimitiveValue; + +import static java.util.Arrays.asList; +import static org.junit.Assert.assertEquals; +import static org.zwobble.couscous.tests.util.ExtraFiles.deleteRecursively; +import static org.zwobble.couscous.values.PrimitiveValues.value; + +import lombok.SneakyThrows; +import lombok.val; + +public class JavaToPythonTests { + @Test + public void canEvaluateLiterals() { + assertEquals(value("hello"), evalExpression("\"hello\"")); + assertEquals(value(true), evalExpression("true")); + assertEquals(value(false), evalExpression("false")); + assertEquals(value(42), evalExpression("42")); + } + + @SneakyThrows + private PrimitiveValue evalExpression(String expressionSource) { + val javaClass = + "package com.example;" + + "public class Example {" + + " public static Object main() {" + + " return " + expressionSource + ";" + + " }" + + "}"; + + val directoryPath = Files.createTempDirectory(null); + try { + Files.createDirectories(directoryPath.resolve("com/example")); + Files.write( + directoryPath.resolve("com/example/Example.java"), + asList(javaClass)); + + val classNodes = JavaFrontend.readSourceDirectory(directoryPath); + + return new PythonMethodRunner().runMethod( + classNodes, + TypeName.of("com.example.Example"), + "main", + asList()); + } finally { + deleteRecursively(directoryPath.toFile()); + } + } +} |
