aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/org/zwobble/couscous/tests/backends
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-01-06 08:31:13 +0000
committerMichael Williamson <mike@zwobble.org>2016-01-06 08:31:13 +0000
commitb69c8f7c8e2c16aade681ceaae046456a5ef2a85 (patch)
tree6737fa9da75bc4dc5cd9cf620ac6b8f686aebae6 /src/test/java/org/zwobble/couscous/tests/backends
parente4229671c4cf6db860fc6cf68bcfb8fdd69fdcb8 (diff)
Partially implement method overloading
Diffstat (limited to 'src/test/java/org/zwobble/couscous/tests/backends')
-rw-r--r--src/test/java/org/zwobble/couscous/tests/backends/python/PythonMethodRunner.java8
1 files changed, 7 insertions, 1 deletions
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();