aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-03-29 14:15:56 +0100
committerMichael Williamson <mike@zwobble.org>2016-03-29 14:15:56 +0100
commit8dcb59ce2de9ea97e0de55bfe3f04df934a593bb (patch)
tree008afa1c425851cb362b23ed9f3b2054db19bafe /src
parentd43cef47e186d11692cb7c8db571ca70487831de (diff)
Add tests for JavaTypes.bind
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/zwobble/couscous/frontends/java/JavaTypes.java4
-rw-r--r--src/test/java/org/zwobble/couscous/tests/frontends/java/JavaTypesTests.java28
2 files changed, 30 insertions, 2 deletions
diff --git a/src/main/java/org/zwobble/couscous/frontends/java/JavaTypes.java b/src/main/java/org/zwobble/couscous/frontends/java/JavaTypes.java
index 900ffe2..f70ee57 100644
--- a/src/main/java/org/zwobble/couscous/frontends/java/JavaTypes.java
+++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaTypes.java
@@ -16,7 +16,7 @@ import static java.util.Arrays.asList;
import static org.zwobble.couscous.types.Types.erasure;
import static org.zwobble.couscous.util.ExtraLists.eagerMap;
-class JavaTypes {
+public class JavaTypes {
static Type typeOf(Expression expression) {
return typeOf(expression.resolveTypeBinding());
}
@@ -81,7 +81,7 @@ class JavaTypes {
.filter(type -> !type.equals(Types.OBJECT));
}
- static Type bind(Type genericType, Type concreteType) {
+ public static Type bind(Type genericType, Type concreteType) {
if (genericType.equals(concreteType)) {
return concreteType;
} else if (!(genericType instanceof TypeParameter)) {
diff --git a/src/test/java/org/zwobble/couscous/tests/frontends/java/JavaTypesTests.java b/src/test/java/org/zwobble/couscous/tests/frontends/java/JavaTypesTests.java
new file mode 100644
index 0000000..ae8d9c0
--- /dev/null
+++ b/src/test/java/org/zwobble/couscous/tests/frontends/java/JavaTypesTests.java
@@ -0,0 +1,28 @@
+package org.zwobble.couscous.tests.frontends.java;
+
+import org.junit.Test;
+import org.zwobble.couscous.frontends.java.JavaTypes;
+import org.zwobble.couscous.types.ScalarType;
+import org.zwobble.couscous.types.TypeParameter;
+
+import static org.junit.Assert.assertEquals;
+import static org.zwobble.couscous.types.BoundTypeParameter.boundTypeParameter;
+import static org.zwobble.couscous.types.TypeParameter.typeParameter;
+
+public class JavaTypesTests {
+ private static final ScalarType INT_TYPE = ScalarType.of("int");
+
+ @Test
+ public void bindingTypeToItselfReturnsType() {
+ assertEquals(
+ INT_TYPE,
+ JavaTypes.bind(INT_TYPE, INT_TYPE));
+ }
+ @Test
+ public void bindingTypeToGenericTypeParameterReturnsBoundTypeParameter() {
+ TypeParameter typeParameter = typeParameter(ScalarType.of("List"), "T");
+ assertEquals(
+ boundTypeParameter(typeParameter, INT_TYPE),
+ JavaTypes.bind(typeParameter, INT_TYPE));
+ }
+}