diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-03-09 18:11:17 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-03-09 18:11:17 +0000 |
| commit | 20dc1e124d606cf4298d5112b6d3c4f6c74e9b68 (patch) | |
| tree | 47914e8b0356b2f40e3723eae650d3bb6f100dd4 /src/test/java/org/zwobble/couscous/tests/backends/csharp | |
| parent | 8ac6cb16b727b5e3d28ab89fee1d169a4f74d9a1 (diff) | |
Introduce Type interface
Diffstat (limited to 'src/test/java/org/zwobble/couscous/tests/backends/csharp')
3 files changed, 44 insertions, 39 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 4e05266..a73a5ee 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 @@ -4,7 +4,11 @@ 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.*; +import org.zwobble.couscous.ast.LiteralNode; +import org.zwobble.couscous.ast.MethodSignature; +import org.zwobble.couscous.ast.TypeNode; +import org.zwobble.couscous.ast.types.ScalarType; +import org.zwobble.couscous.ast.types.Type; import org.zwobble.couscous.backends.Names; import org.zwobble.couscous.backends.csharp.CsharpBackend; import org.zwobble.couscous.backends.csharp.CsharpSerializer; @@ -33,7 +37,7 @@ public class CsharpMethodRunner implements MethodRunner { private static final String NAMESPACE = "Couscous"; @Override - public PrimitiveValue runMethod(List<TypeNode> classNodes, TypeName className, String methodName, List<PrimitiveValue> arguments, TypeName returnType) { + public PrimitiveValue runMethod(List<TypeNode> classNodes, ScalarType className, String methodName, List<PrimitiveValue> arguments, Type returnType) { try { Path directoryPath = Files.createTempDirectory(null); Backend compiler = new CsharpBackend(directoryPath, NAMESPACE); @@ -50,10 +54,10 @@ public class CsharpMethodRunner implements MethodRunner { public static PrimitiveValue runFunction( Path directoryPath, - TypeName className, + ScalarType className, String methodName, List<PrimitiveValue> arguments, - TypeName returnType) + Type returnType) throws IOException, InterruptedException { MethodSignature signature = new MethodSignature( @@ -63,7 +67,7 @@ public class CsharpMethodRunner implements MethodRunner { String csharpMethodName = Names.toUniqueName(signature); String value = CsharpSerializer.serialize( staticMethodCall( - TypeName.of(NAMESPACE + "." + className.getQualifiedName()), + ScalarType.of(NAMESPACE + "." + className.getQualifiedName()), csharpMethodName, eagerMap(arguments, LiteralNode::literal), returnType)); @@ -122,7 +126,7 @@ public class CsharpMethodRunner implements MethodRunner { return value(StringValue.REF); } else { assertThat(value, Matchers.startsWith(NAMESPACE_PREFIX)); - return value(TypeName.of(value.substring(NAMESPACE_PREFIX.length()))); + return value(ScalarType.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 493ba2b..d0a8c77 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 @@ -2,6 +2,7 @@ package org.zwobble.couscous.tests.backends.csharp; import org.junit.Test; import org.zwobble.couscous.ast.*; +import org.zwobble.couscous.ast.types.ScalarType; import org.zwobble.couscous.backends.csharp.CsharpSerializer; import org.zwobble.couscous.tests.TestIds; import org.zwobble.couscous.values.BooleanValue; @@ -51,19 +52,19 @@ public class CsharpSerializerTests { @Test public void typeLiteralUsesTypeOfOperator() { - String output = serialize(literal(TypeName.of("com.example.Example"))); + String output = serialize(literal(ScalarType.of("com.example.Example"))); assertEquals("typeof(com.example.Example)", output); } @Test public void variableReferenceWritesIdentifier() { - String output = serialize(reference(var(TestIds.ANY_ID, "x", TypeName.of("X")))); + String output = serialize(reference(var(TestIds.ANY_ID, "x", ScalarType.of("X")))); assertEquals("x", output); } @Test public void thisReferenceUsesThisKeyword() { - String output = serialize(thisReference(TypeName.of("X"))); + String output = serialize(thisReference(ScalarType.of("X"))); assertEquals("this", output); } @@ -84,37 +85,37 @@ public class CsharpSerializerTests { @Test public void staticMethodCallWithNoArgumentsWritesStaticReceiver() { String output = serialize(staticMethodCall( - TypeName.of("X"), + ScalarType.of("X"), "y", list(), - TypeName.of("Y"))); + ScalarType.of("Y"))); assertEquals("X.y()", output); } @Test public void methodCallWithNoArgumentsWritesReceiver() { String output = serialize(methodCall( - reference(var(TestIds.ANY_ID, "x", TypeName.of("X"))), + reference(var(TestIds.ANY_ID, "x", ScalarType.of("X"))), "y", list(), - TypeName.of("Y"))); + ScalarType.of("Y"))); assertEquals("x.y()", output); } @Test public void methodCallWithArguments() { String output = serialize(methodCall( - reference(var(TestIds.ANY_ID, "x", TypeName.of("X"))), + reference(var(TestIds.ANY_ID, "x", ScalarType.of("X"))), "y", list(literal(1), literal(2)), - TypeName.of("Y"))); + ScalarType.of("Y"))); assertEquals("x.y(1, 2)", output); } @Test public void constructorCallWithNoArguments() { String output = serialize(constructorCall( - TypeName.of("X"), + ScalarType.of("X"), list())); assertEquals("new X()", output); } @@ -122,7 +123,7 @@ public class CsharpSerializerTests { @Test public void constructorCallWithArguments() { String output = serialize(constructorCall( - TypeName.of("X"), + ScalarType.of("X"), list(literal(1), literal(2)))); assertEquals("new X(1, 2)", output); } @@ -143,18 +144,18 @@ public class CsharpSerializerTests { @Test public void fieldAccessSeparatesReceiverAndNameWithDot() { String output = serialize(fieldAccess( - reference(var(TestIds.ANY_ID, "x", TypeName.of("X"))), + reference(var(TestIds.ANY_ID, "x", ScalarType.of("X"))), "y", - TypeName.of("Y"))); + ScalarType.of("Y"))); assertEquals("x.y", output); } @Test public void staticFieldAccessSeparatesReceiverAndNameWithDot() { String output = serialize(fieldAccess( - TypeName.of("X"), + ScalarType.of("X"), "y", - TypeName.of("Y"))); + ScalarType.of("Y"))); assertEquals("X.y", output); } @@ -181,7 +182,7 @@ public class CsharpSerializerTests { String output = serialize(localVariableDeclaration( TestIds.ANY_ID, "x", - TypeName.of("string"), + ScalarType.of("string"), literal("[value]"))); assertEquals("string x = \"[value]\";\n", output); } @@ -206,7 +207,7 @@ public class CsharpSerializerTests { @Test public void methodCanHaveVoidReturnType() { String output = serialize(MethodNode.staticMethod("nothing") - .returns(TypeName.of("void")) + .returns(ScalarType.of("void")) .build()); assertEquals("public static void nothing() {\n}\n", output); } @@ -214,7 +215,7 @@ public class CsharpSerializerTests { @Test public void instanceMethodHasNoStaticKeword() { String output = serialize(MethodNode.builder("nothing") - .returns(TypeName.of("void")) + .returns(ScalarType.of("void")) .build()); assertEquals("public void nothing() {\n}\n", output); } @@ -222,7 +223,7 @@ public class CsharpSerializerTests { @Test public void methodWithReturnType() { MethodNode methodNode = MethodNode.staticMethod("nothing") - .returns(TypeName.of("X")) + .returns(ScalarType.of("X")) .build(); String output = serialize(methodNode); @@ -233,9 +234,9 @@ public class CsharpSerializerTests { @Test public void methodWithArguments() { MethodNode methodNode = MethodNode.staticMethod("nothing") - .argument(formalArg(var(TestIds.id("x"), "x", TypeName.of("X")))) - .argument(formalArg(var(TestIds.id("y"), "y", TypeName.of("Y")))) - .returns(TypeName.of("void")) + .argument(formalArg(var(TestIds.id("x"), "x", ScalarType.of("X")))) + .argument(formalArg(var(TestIds.id("y"), "y", ScalarType.of("Y")))) + .returns(ScalarType.of("void")) .build(); String output = serialize(methodNode); @@ -246,7 +247,7 @@ public class CsharpSerializerTests { @Test public void methodHasSerializedBody() { MethodNode method = MethodNode.staticMethod("nothing") - .returns(TypeName.of("void")) + .returns(ScalarType.of("void")) .statement(returns(literal(true))) .build(); String output = serialize(method); @@ -301,7 +302,7 @@ public class CsharpSerializerTests { @Test public void constructorHasSerializedBody() { ConstructorNode constructor = ConstructorNode.constructor( - list(formalArg(var(TestIds.ANY_ID, "x", TypeName.of("X")))), + list(formalArg(var(TestIds.ANY_ID, "x", ScalarType.of("X")))), list(expressionStatement(literal(true)))); ClassNode classNode = ClassNode.builder("com.example.Example") .constructor(constructor) @@ -316,8 +317,8 @@ public class CsharpSerializerTests { @Test public void classWithFields() { ClassNode classNode = ClassNode.builder("com.example.Example") - .staticField("x", TypeName.of("X")) - .field("y", TypeName.of("Y")) + .staticField("x", ScalarType.of("X")) + .field("y", ScalarType.of("Y")) .build(); String output = serialize(classNode); @@ -327,7 +328,7 @@ public class CsharpSerializerTests { @Test public void interfaceIsInNamespace() { - Node node = new ClassNodeBuilder(TypeName.of("com.example.Example")).buildInterface(); + Node node = new ClassNodeBuilder(ScalarType.of("com.example.Example")).buildInterface(); String output = serialize(node); @@ -336,7 +337,7 @@ public class CsharpSerializerTests { @Test public void interfaceWithTypeParameters() { - Node node = new ClassNodeBuilder(TypeName.of("com.example.Example")) + Node node = new ClassNodeBuilder(ScalarType.of("com.example.Example")) .addTypeParameter("T") .addTypeParameter("U") .buildInterface(); @@ -348,7 +349,7 @@ public class CsharpSerializerTests { @Test public void interfaceWithSuperTypes() { - Node node = new ClassNodeBuilder(TypeName.of("com.example.Example")) + Node node = new ClassNodeBuilder(ScalarType.of("com.example.Example")) .addSuperType("com.example.Base") .buildInterface(); @@ -360,7 +361,7 @@ public class CsharpSerializerTests { @Test public void interfaceWithMethod() { MethodNode method = MethodNode.builder("get").isAbstract().returns(IntegerValue.REF).build(); - Node node = new ClassNodeBuilder(TypeName.of("com.example.Example")) + Node node = new ClassNodeBuilder(ScalarType.of("com.example.Example")) .method(method) .buildInterface(); diff --git a/src/test/java/org/zwobble/couscous/tests/backends/csharp/JavaToCsharpTests.java b/src/test/java/org/zwobble/couscous/tests/backends/csharp/JavaToCsharpTests.java index 4c7e56b..68d270d 100644 --- a/src/test/java/org/zwobble/couscous/tests/backends/csharp/JavaToCsharpTests.java +++ b/src/test/java/org/zwobble/couscous/tests/backends/csharp/JavaToCsharpTests.java @@ -3,7 +3,7 @@ package org.zwobble.couscous.tests.backends.csharp; import org.junit.Ignore; import org.junit.Test; import org.zwobble.couscous.CouscousCompiler; -import org.zwobble.couscous.ast.TypeName; +import org.zwobble.couscous.ast.types.ScalarType; import org.zwobble.couscous.backends.csharp.CsharpBackend; import org.zwobble.couscous.frontends.java.JavaFrontend; import org.zwobble.couscous.tests.CompilerTests; @@ -25,10 +25,10 @@ public class JavaToCsharpTests extends CompilerTests { protected PrimitiveValue execProgram( Path directory, - TypeName type, + ScalarType type, String methodName, List<PrimitiveValue> arguments, - TypeName returnType) throws IOException, InterruptedException + ScalarType returnType) throws IOException, InterruptedException { Path directoryPath = Files.createTempDirectory(null); try { |
