aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/org/zwobble/couscous/tests/backends/csharp
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-01-16 15:51:06 +0000
committerMichael Williamson <mike@zwobble.org>2016-01-16 15:51:06 +0000
commit11627e103110f1abfe6de7f391f6c90475ca888c (patch)
treefd661e497518fcd3e259a04d0fd9c94d8feeb3fc /src/test/java/org/zwobble/couscous/tests/backends/csharp
parentd2c8f4478ad23e7a2a01773bdd5a6333f8d56c7d (diff)
Implement non-dynamic return types in C# backend
Diffstat (limited to 'src/test/java/org/zwobble/couscous/tests/backends/csharp')
-rw-r--r--src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpMethodRunner.java9
-rw-r--r--src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpSerializerTests.java19
2 files changed, 22 insertions, 6 deletions
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 0adb5fc..104308b 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
@@ -13,6 +13,7 @@ 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.StringValue;
import java.io.IOException;
import java.nio.file.Files;
@@ -97,8 +98,12 @@ public class CsharpMethodRunner implements MethodRunner {
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())));
+ if (value.equals("System.String")) {
+ return value(StringValue.REF);
+ } else {
+ assertThat(value, Matchers.startsWith(NAMESPACE_PREFIX));
+ return value(TypeName.of(value.substring(NAMESPACE_PREFIX.length())));
+ }
default:
throw new RuntimeException("Unhandled type: " + type);
}
diff --git a/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpSerializerTests.java b/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpSerializerTests.java
index 22eeac0..2ca2917 100644
--- a/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpSerializerTests.java
+++ b/src/test/java/org/zwobble/couscous/tests/backends/csharp/CsharpSerializerTests.java
@@ -112,13 +112,24 @@ public class CsharpSerializerTests {
@Test
public void methodHasDynamicReturnType() {
String output = serialize(MethodNode.staticMethod("nothing").build());
- assertEquals("internal static dynamic nothing() {\n}\n", output);
+ assertEquals("internal static void nothing() {\n}\n", output);
}
@Test
public void instanceMethodHasNoStaticKeword() {
String output = serialize(MethodNode.builder("nothing").build());
- assertEquals("internal dynamic nothing() {\n}\n", output);
+ assertEquals("internal void nothing() {\n}\n", output);
+ }
+
+ @Test
+ public void methodWithReturnType() {
+ MethodNode methodNode = MethodNode.staticMethod("nothing")
+ .returns(TypeName.of("X"))
+ .build();
+
+ String output = serialize(methodNode);
+
+ assertEquals("internal static Couscous.X nothing() {\n}\n", output);
}
@Test
@@ -130,7 +141,7 @@ public class CsharpSerializerTests {
String output = serialize(methodNode);
- assertEquals("internal static dynamic nothing(Couscous.X x, Couscous.Y y) {\n}\n", output);
+ assertEquals("internal static void nothing(Couscous.X x, Couscous.Y y) {\n}\n", output);
}
@Test
@@ -139,7 +150,7 @@ public class CsharpSerializerTests {
.statement(returns(literal(true)))
.build();
String output = serialize(method);
- assertEquals("internal static dynamic nothing() {\n return true;\n}\n", output);
+ assertEquals("internal static void nothing() {\n return true;\n}\n", output);
}
@Test