diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-01-10 17:52:18 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-01-10 17:52:18 +0000 |
| commit | 8711de89810f1cd6782d98e0e4745c30532a77ac (patch) | |
| tree | fd99c496f52eeaaa2dee10cfb71ea2dc9580bae8 /src/test/java/org/zwobble | |
| parent | 7dab9cb11a7181094144e4319716c4d91262a289 (diff) | |
Support type literals in the backends
Diffstat (limited to 'src/test/java/org/zwobble')
| -rw-r--r-- | src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java | 1 | ||||
| -rw-r--r-- | src/test/java/org/zwobble/couscous/tests/backends/python/PythonMethodRunner.java | 40 |
2 files changed, 29 insertions, 12 deletions
diff --git a/src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java b/src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java index 814cfa6..bdd492d 100644 --- a/src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java +++ b/src/test/java/org/zwobble/couscous/tests/BackendEvalTests.java @@ -34,6 +34,7 @@ public abstract class BackendEvalTests { assertEquals(value(true), evalExpression(literal(true))); assertEquals(value(false), evalExpression(literal(false))); assertEquals(value(42), evalExpression(literal(42))); + assertEquals(value(StringValue.REF), evalExpression(literal(StringValue.REF))); } @Test 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 5818de0..421c1aa 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 @@ -1,23 +1,28 @@ package org.zwobble.couscous.tests.backends.python; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.List; +import com.google.common.base.Charsets; +import com.google.common.base.Joiner; +import com.google.common.io.CharStreams; 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; +import org.zwobble.couscous.backends.python.PythonCodeGenerator; import org.zwobble.couscous.backends.python.PythonSerializer; 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 org.zwobble.couscous.values.StringValue; + +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + import static java.lang.Integer.parseInt; import static org.zwobble.couscous.tests.util.ExtraFiles.deleteRecursively; import static org.zwobble.couscous.util.ExtraLists.eagerMap; @@ -63,9 +68,20 @@ public class PythonMethodRunner implements MethodRunner { return readPrimitive(output); } } - + + private static final Pattern TYPE_REGEX = Pattern.compile("^<class '([^']+)'>$"); + private static final String TYPE_NAME_PREFIX = "couscous."; + private static PrimitiveValue readPrimitive(String output) { - if (output.equals("None")) { + Matcher matcher = TYPE_REGEX.matcher(output); + if (matcher.matches()) { + String name = matcher.group(1); + if (name.equals("couscous.java.lang.String.String")) { + return value(StringValue.REF); + } else { + throw new UnsupportedOperationException(); + } + } else if (output.equals("None")) { return PrimitiveValues.UNIT; } else if (output.startsWith("\'")) { return value(output.substring(1, output.length() - 1)); |
