diff options
| author | Michael Williamson <mike@zwobble.org> | 2015-10-05 13:20:24 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2015-10-05 13:20:24 +0100 |
| commit | 34df0782f05475bf2e9723feb4224e411d13959f (patch) | |
| tree | 8fdc1746c8a1bc594a0b22284afe78db50b555d5 /src/test/java/org/zwobble/couscous/tests/backends/python | |
| parent | fe4766439c47ea146c37422e86d0ce0367f6c653 (diff) | |
Support passing arguments to Python runner
Diffstat (limited to 'src/test/java/org/zwobble/couscous/tests/backends/python')
| -rw-r--r-- | src/test/java/org/zwobble/couscous/tests/backends/python/PythonCompilerTests.java | 12 | ||||
| -rw-r--r-- | src/test/java/org/zwobble/couscous/tests/backends/python/PythonSerializerTests.java | 6 |
2 files changed, 16 insertions, 2 deletions
diff --git a/src/test/java/org/zwobble/couscous/tests/backends/python/PythonCompilerTests.java b/src/test/java/org/zwobble/couscous/tests/backends/python/PythonCompilerTests.java index 6f171c3..2563ff8 100644 --- a/src/test/java/org/zwobble/couscous/tests/backends/python/PythonCompilerTests.java +++ b/src/test/java/org/zwobble/couscous/tests/backends/python/PythonCompilerTests.java @@ -7,13 +7,16 @@ import java.nio.file.Files; import java.util.List; import org.zwobble.couscous.ast.ClassNode; +import org.zwobble.couscous.backends.python.PythonCodeGenerator; import org.zwobble.couscous.backends.python.PythonCompiler; +import org.zwobble.couscous.backends.python.PythonSerializer; import org.zwobble.couscous.tests.BackendTests; import org.zwobble.couscous.tests.MethodRunner; import org.zwobble.couscous.values.PrimitiveValue; import org.zwobble.couscous.values.PrimitiveValues; import com.google.common.base.Charsets; +import com.google.common.base.Joiner; import com.google.common.io.CharStreams; import static java.lang.Integer.parseInt; @@ -38,9 +41,14 @@ public class PythonCompilerTests extends BackendTests { val directoryPath = Files.createTempDirectory(null); try { compiler.compile(asList(classNode), directoryPath); - + + val argumentsString = Joiner.on(", ").join(arguments.stream() + .map(PythonCodeGenerator::generateCode) + .map(PythonSerializer::serialize) + .iterator()); + val program = "from " + classNode.getName() + " import " + classNode.getLocalName() + - ";print(repr(" + classNode.getLocalName() + "." + methodName + "()))"; + ";print(repr(" + classNode.getLocalName() + "." + methodName + "(" + argumentsString + ")))"; val process = new ProcessBuilder("python3.4", "-c", program) .directory(directoryPath.toFile()) diff --git a/src/test/java/org/zwobble/couscous/tests/backends/python/PythonSerializerTests.java b/src/test/java/org/zwobble/couscous/tests/backends/python/PythonSerializerTests.java index 65f9074..944c2af 100644 --- a/src/test/java/org/zwobble/couscous/tests/backends/python/PythonSerializerTests.java +++ b/src/test/java/org/zwobble/couscous/tests/backends/python/PythonSerializerTests.java @@ -13,6 +13,7 @@ import static org.zwobble.couscous.backends.python.ast.PythonModuleNode.pythonMo import static org.zwobble.couscous.backends.python.ast.PythonPassNode.PASS; import static org.zwobble.couscous.backends.python.ast.PythonReturnNode.pythonReturn; import static org.zwobble.couscous.backends.python.ast.PythonStringLiteralNode.pythonStringLiteral; +import static org.zwobble.couscous.backends.python.ast.PythonVariableReferenceNode.pythonVariableReference; import lombok.val; @@ -37,6 +38,11 @@ public class PythonSerializerTests { } @Test + public void variableReferenceIsSerializedAsIdentifier() { + assertEquals("blah", serialize(pythonVariableReference("blah"))); + } + + @Test public void returnKeywordIsUsedForReturns() { val output = serialize(pythonReturn(pythonIntegerLiteral(42))); assertEquals("return 42\n", output); |
