aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/org
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/org')
-rw-r--r--src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpCompilerEvalTests.java5
-rw-r--r--src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpMethodRunner.java28
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);
+ }
}
}