diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-01-06 08:31:13 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-01-06 08:31:13 +0000 |
| commit | b69c8f7c8e2c16aade681ceaae046456a5ef2a85 (patch) | |
| tree | 6737fa9da75bc4dc5cd9cf620ac6b8f686aebae6 /src/test/java/org/zwobble/couscous/tests | |
| parent | e4229671c4cf6db860fc6cf68bcfb8fdd69fdcb8 (diff) | |
Partially implement method overloading
Diffstat (limited to 'src/test/java/org/zwobble/couscous/tests')
4 files changed, 9 insertions, 9 deletions
diff --git a/src/test/java/org/zwobble/couscous/tests/CompilerTests.java b/src/test/java/org/zwobble/couscous/tests/CompilerTests.java index 4caa687..710db7d 100644 --- a/src/test/java/org/zwobble/couscous/tests/CompilerTests.java +++ b/src/test/java/org/zwobble/couscous/tests/CompilerTests.java @@ -1,6 +1,5 @@ package org.zwobble.couscous.tests; -import org.junit.Ignore; import org.junit.Test; import org.zwobble.couscous.ast.TypeName; import org.zwobble.couscous.values.PrimitiveValue; @@ -134,7 +133,6 @@ public abstract class CompilerTests { } @Test - @Ignore("WIP") public void staticMethodOverloads() throws Exception { assertEquals( value(42), 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(); diff --git a/src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java b/src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java index df97248..f3087ed 100644 --- a/src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java +++ b/src/test/java/org/zwobble/couscous/tests/interpreter/EvaluatorTests.java @@ -7,6 +7,7 @@ import org.junit.Test; import org.zwobble.couscous.ast.ClassNode; import org.zwobble.couscous.ast.ExpressionNode; import org.zwobble.couscous.ast.FormalArgumentNode; +import org.zwobble.couscous.ast.MethodSignature; import org.zwobble.couscous.interpreter.*; import org.zwobble.couscous.interpreter.values.IntegerInterpreterValue; import org.zwobble.couscous.interpreter.values.InterpreterValue; diff --git a/src/test/java/org/zwobble/couscous/tests/interpreter/InterpreterMethodTests.java b/src/test/java/org/zwobble/couscous/tests/interpreter/InterpreterMethodTests.java index 2be59a8..8023ee5 100644 --- a/src/test/java/org/zwobble/couscous/tests/interpreter/InterpreterMethodTests.java +++ b/src/test/java/org/zwobble/couscous/tests/interpreter/InterpreterMethodTests.java @@ -4,12 +4,7 @@ import java.util.List; import java.util.stream.Collectors; import org.junit.Test; -import org.zwobble.couscous.ast.ClassNode; -import org.zwobble.couscous.ast.FormalArgumentNode; -import org.zwobble.couscous.ast.LiteralNode; -import org.zwobble.couscous.ast.LocalVariableDeclarationNode; -import org.zwobble.couscous.ast.MethodNode; -import org.zwobble.couscous.ast.TypeName; +import org.zwobble.couscous.ast.*; import org.zwobble.couscous.interpreter.*; import org.zwobble.couscous.interpreter.values.InterpreterValue; import org.zwobble.couscous.interpreter.values.InterpreterValues; |
