From b69c8f7c8e2c16aade681ceaae046456a5ef2a85 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Wed, 6 Jan 2016 08:31:13 +0000 Subject: Partially implement method overloading --- .../couscous/tests/backends/python/PythonMethodRunner.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src/test/java/org/zwobble/couscous/tests/backends/python') diff --git a/src/test/java/org/zwobble/couscous/tests/backends/python/PythonMethodRunner.java b/src/test/java/org/zwobble/couscous/tests/backends/python/PythonMethodRunner.java index 0c09178..5818de0 100644 --- a/src/test/java/org/zwobble/couscous/tests/backends/python/PythonMethodRunner.java +++ b/src/test/java/org/zwobble/couscous/tests/backends/python/PythonMethodRunner.java @@ -7,6 +7,7 @@ import java.nio.file.Files; import java.nio.file.Path; import java.util.List; import org.zwobble.couscous.ast.ClassNode; +import org.zwobble.couscous.ast.MethodSignature; import org.zwobble.couscous.ast.TypeName; import org.zwobble.couscous.backends.python.PythonCodeGenerator; import org.zwobble.couscous.backends.python.PythonBackend; @@ -19,6 +20,7 @@ import com.google.common.base.Joiner; import com.google.common.io.CharStreams; import static java.lang.Integer.parseInt; import static org.zwobble.couscous.tests.util.ExtraFiles.deleteRecursively; +import static org.zwobble.couscous.util.ExtraLists.eagerMap; import static org.zwobble.couscous.values.PrimitiveValues.value; public class PythonMethodRunner implements MethodRunner { @@ -46,7 +48,11 @@ public class PythonMethodRunner implements MethodRunner { throws IOException, InterruptedException { String argumentsString = Joiner.on(", ").join(arguments.stream().map(PythonCodeGenerator::generateCode).map(PythonSerializer::serialize).iterator()); - String program = "from couscous." + className.getQualifiedName() + " import " + className.getSimpleName() + ";print(repr(" + className.getSimpleName() + "." + methodName + "(" + argumentsString + ")))"; + String pythonMethodName = PythonCodeGenerator.toName(new MethodSignature( + methodName, + eagerMap(arguments, argument -> argument.getType()))); + String program = "from couscous." + className.getQualifiedName() + " import " + className.getSimpleName() + ";" + + "print(repr(" + className.getSimpleName() + "." + pythonMethodName + "(" + argumentsString + ")))"; Process process = new ProcessBuilder("python3.4", "-c", program).directory(directoryPath.toFile()).start(); int exitCode = process.waitFor(); String output = readString(process.getInputStream()).trim(); -- cgit v1.2.3