diff options
Diffstat (limited to 'src/test/java')
| -rw-r--r-- | src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpCompilerEvalTests.java | 5 | ||||
| -rw-r--r-- | src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpMethodRunner.java | 28 |
2 files changed, 25 insertions, 8 deletions
diff --git a/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpCompilerEvalTests.java b/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpCompilerEvalTests.java index 7366942..9c51117 100644 --- a/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpCompilerEvalTests.java +++ b/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpCompilerEvalTests.java @@ -12,11 +12,6 @@ import java.util.List; public class CsharpCompilerEvalTests extends BackendEvalTests { @Test @Ignore - public void canEvaluateLiterals() { - } - - @Test - @Ignore public void equalityOnReferenceTypesChecksForIdentity() { } diff --git a/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpMethodRunner.java b/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpMethodRunner.java index aee851a..0adb5fc 100644 --- a/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpMethodRunner.java +++ b/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpMethodRunner.java @@ -2,6 +2,7 @@ package org.zwobble.couscous.tests.backends.csharp; import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterators; +import org.hamcrest.Matchers; import org.zwobble.couscous.Backend; import org.zwobble.couscous.ast.ClassNode; import org.zwobble.couscous.ast.MethodSignature; @@ -12,16 +13,18 @@ import org.zwobble.couscous.tests.MethodRunner; import org.zwobble.couscous.tests.backends.Processes; import org.zwobble.couscous.util.ExtraLists; import org.zwobble.couscous.values.PrimitiveValue; -import org.zwobble.couscous.values.PrimitiveValues; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.util.List; +import static java.lang.Integer.parseInt; +import static org.hamcrest.MatcherAssert.assertThat; import static org.zwobble.couscous.tests.util.ExtraFiles.deleteRecursively; import static org.zwobble.couscous.util.ExtraLists.eagerMap; import static org.zwobble.couscous.util.ExtraLists.list; +import static org.zwobble.couscous.values.PrimitiveValues.value; public class CsharpMethodRunner implements MethodRunner { private static final String NAMESPACE = "Couscous"; @@ -56,7 +59,9 @@ public class CsharpMethodRunner implements MethodRunner { String program = "public class MethodRunnerExample { " + " public static void Main() { " + - " System.Console.WriteLine(" + NAMESPACE + "." + className.getQualifiedName() + "." + csharpMethodName + "());" + + " var value = " + NAMESPACE + "." + className.getQualifiedName() + "." + csharpMethodName + "();" + + " System.Console.WriteLine(value.GetType());" + + " System.Console.WriteLine(value);" + " }" + "}"; Files.write(directoryPath.resolve("MethodRunnerExample.cs"), list(program)); @@ -78,7 +83,24 @@ public class CsharpMethodRunner implements MethodRunner { path -> path.toString())); } + private static final String NAMESPACE_PREFIX = "Couscous."; + private static PrimitiveValue readPrimitive(String output) { - return PrimitiveValues.value(output); + String[] lines = output.split("[\\r\\n]+"); + String type = lines[0]; + String value = lines[1]; + switch (type) { + case "System.Int32": + return value(parseInt(value)); + case "System.String": + return value(value); + case "System.Boolean": + return value(value.equals("True")); + case "System.MonoType": + assertThat(value, Matchers.startsWith(NAMESPACE_PREFIX)); + return value(TypeName.of(value.substring(NAMESPACE_PREFIX.length()))); + default: + throw new RuntimeException("Unhandled type: " + type); + } } } |
