aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/org
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-04-09 14:59:32 +0100
committerMichael Williamson <mike@zwobble.org>2016-04-09 14:59:32 +0100
commit2bc236438ce5d5120c9c34f213b4b49b475dcee2 (patch)
treebe5008e70cf11ebece0c07165c86c034ddef3920 /src/test/java/org
parent0a550c3bb4e624d76b3876e92a2bd0e235301fba (diff)
Read generic signature for method calls
Diffstat (limited to 'src/test/java/org')
-rw-r--r--src/test/java/org/zwobble/couscous/tests/CompilerTests.java2
-rw-r--r--src/test/java/org/zwobble/couscous/tests/backends/csharp/JavaToCsharpTests.java7
-rw-r--r--src/test/java/org/zwobble/couscous/tests/frontends/java/ExpressionReadingTests.java46
3 files changed, 47 insertions, 8 deletions
diff --git a/src/test/java/org/zwobble/couscous/tests/CompilerTests.java b/src/test/java/org/zwobble/couscous/tests/CompilerTests.java
index cbf4fb5..ea8865a 100644
--- a/src/test/java/org/zwobble/couscous/tests/CompilerTests.java
+++ b/src/test/java/org/zwobble/couscous/tests/CompilerTests.java
@@ -1,6 +1,5 @@
package org.zwobble.couscous.tests;
-import org.junit.Ignore;
import org.junit.Test;
import org.zwobble.couscous.types.ScalarType;
import org.zwobble.couscous.types.Types;
@@ -218,7 +217,6 @@ public abstract class CompilerTests {
}
@Test
- @Ignore("WIP")
public void genericMethods() throws Exception {
assertEquals(
value("two"),
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 5d44dc7..b6a0cb7 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
@@ -1,5 +1,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.types.ScalarType;
import org.zwobble.couscous.backends.csharp.CsharpBackend;
@@ -16,6 +18,11 @@ import static org.zwobble.couscous.tests.util.ExtraFiles.deleteRecursively;
import static org.zwobble.couscous.util.ExtraLists.list;
public class JavaToCsharpTests extends CompilerTests {
+ @Test
+ @Ignore("WIP")
+ public void genericMethods() throws Exception {
+ }
+
protected PrimitiveValue execProgram(
Path directory,
ScalarType type,
diff --git a/src/test/java/org/zwobble/couscous/tests/frontends/java/ExpressionReadingTests.java b/src/test/java/org/zwobble/couscous/tests/frontends/java/ExpressionReadingTests.java
index 72646bc..91136b6 100644
--- a/src/test/java/org/zwobble/couscous/tests/frontends/java/ExpressionReadingTests.java
+++ b/src/test/java/org/zwobble/couscous/tests/frontends/java/ExpressionReadingTests.java
@@ -2,7 +2,9 @@ package org.zwobble.couscous.tests.frontends.java;
import org.junit.Test;
import org.zwobble.couscous.ast.*;
+import org.zwobble.couscous.ast.identifiers.Identifiers;
import org.zwobble.couscous.types.ScalarType;
+import org.zwobble.couscous.types.TypeParameter;
import org.zwobble.couscous.types.Types;
import java.util.List;
@@ -20,7 +22,9 @@ import static org.zwobble.couscous.ast.FieldDeclarationNode.staticField;
import static org.zwobble.couscous.ast.LiteralNode.literal;
import static org.zwobble.couscous.ast.MethodCallNode.methodCall;
import static org.zwobble.couscous.ast.MethodCallNode.staticMethodCall;
+import static org.zwobble.couscous.ast.MethodSignature.signature;
import static org.zwobble.couscous.ast.Operations.*;
+import static org.zwobble.couscous.ast.StaticReceiver.staticReceiver;
import static org.zwobble.couscous.ast.TernaryConditionalNode.ternaryConditional;
import static org.zwobble.couscous.ast.ThisReferenceNode.thisReference;
import static org.zwobble.couscous.ast.TypeCoercionNode.typeCoercion;
@@ -28,6 +32,7 @@ import static org.zwobble.couscous.ast.VariableReferenceNode.reference;
import static org.zwobble.couscous.tests.frontends.java.JavaReading.*;
import static org.zwobble.couscous.tests.frontends.java.NodeMatchers.*;
import static org.zwobble.couscous.types.ParameterizedType.parameterizedType;
+import static org.zwobble.couscous.types.TypeParameter.typeParameter;
import static org.zwobble.couscous.util.ExtraLists.list;
public class ExpressionReadingTests {
@@ -213,27 +218,56 @@ public class ExpressionReadingTests {
@Test
public void canReadMethodCallsWithZeroExpressionsAsVarargs() {
+ TypeParameter typeParameter = typeParameter(Identifiers.method(Identifiers.forType("java.util.Arrays"), "asList"), "T");
assertEquals(
- staticMethodCall(
- ScalarType.of("java.util.Arrays"),
+ methodCall(
+ staticReceiver("java.util.Arrays"),
"asList",
list(array(Types.STRING, list())),
- parameterizedType(ScalarType.of("java.util.List"), list(Types.STRING))),
+ parameterizedType(ScalarType.of("java.util.List"), list(Types.STRING)),
+ signature(
+ "asList",
+ list(typeParameter),
+ list(Types.array(typeParameter)),
+ parameterizedType(ScalarType.of("java.util.List"), list(typeParameter)))),
readExpression("java.util.List<String>", "java.util.Arrays.asList()"));
}
@Test
public void canReadMethodCallsWithMultipleExpressionsAsVarargs() {
+ TypeParameter typeParameter = typeParameter(Identifiers.method(Identifiers.forType("java.util.Arrays"), "asList"), "T");
assertEquals(
- staticMethodCall(
- ScalarType.of("java.util.Arrays"),
+ methodCall(
+ staticReceiver("java.util.Arrays"),
"asList",
list(array(Types.STRING, list(literal("one"), literal("two")))),
- parameterizedType(ScalarType.of("java.util.List"), list(Types.STRING))),
+ parameterizedType(ScalarType.of("java.util.List"), list(Types.STRING)),
+ signature(
+ "asList",
+ list(typeParameter),
+ list(Types.array(typeParameter)),
+ parameterizedType(ScalarType.of("java.util.List"), list(typeParameter)))),
readExpression("java.util.List<String>", "java.util.Arrays.asList(\"one\", \"two\")"));
}
@Test
+ public void canReadGenericStaticMethodCalls() {
+ TypeParameter typeParameter = typeParameter(Identifiers.method(Identifiers.forType("java.util.Collections"), "emptyList"), "T");
+ assertEquals(
+ methodCall(
+ staticReceiver("java.util.Collections"),
+ "emptyList",
+ list(),
+ parameterizedType(ScalarType.of("java.util.List"), list(Types.STRING)),
+ signature(
+ "emptyList",
+ list(typeParameter),
+ list(),
+ parameterizedType(ScalarType.of("java.util.List"), list(typeParameter)))),
+ readExpression("java.util.List<String>", "java.util.Collections.<String>emptyList()"));
+ }
+
+ @Test
public void canReadConstructorCalls() {
assertEquals(
constructorCall(ScalarType.of("java.lang.String"), list(literal("_"))),