summaryrefslogtreecommitdiff
path: root/java/typeMigration/test/com/intellij/refactoring/WildcardTypeMigrationTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/typeMigration/test/com/intellij/refactoring/WildcardTypeMigrationTest.java')
-rw-r--r--java/typeMigration/test/com/intellij/refactoring/WildcardTypeMigrationTest.java170
1 files changed, 170 insertions, 0 deletions
diff --git a/java/typeMigration/test/com/intellij/refactoring/WildcardTypeMigrationTest.java b/java/typeMigration/test/com/intellij/refactoring/WildcardTypeMigrationTest.java
new file mode 100644
index 000000000000..d66320623f83
--- /dev/null
+++ b/java/typeMigration/test/com/intellij/refactoring/WildcardTypeMigrationTest.java
@@ -0,0 +1,170 @@
+/*
+ * User: anna
+ * Date: 19-Aug-2009
+ */
+package com.intellij.refactoring;
+
+import com.intellij.psi.CommonClassNames;
+import org.jetbrains.annotations.NotNull;
+
+public class WildcardTypeMigrationTest extends TypeMigrationTestBase{
+ @NotNull
+ @Override
+ protected String getTestRoot() {
+ return "/refactoring/wildcard/";
+ }
+
+ public void testProducerExtends() throws Exception {
+ doTestFirstParamType("method",
+ myJavaFacade.getElementFactory().createTypeFromText("java.util.ArrayList<? super java.lang.Number>", null),
+ myJavaFacade.getElementFactory().createTypeFromText("java.util.ArrayList<? extends java.lang.Number>", null));
+ }
+
+ public void testProducerSuper() throws Exception {
+ doTestFirstParamType("method",
+ myJavaFacade.getElementFactory().createTypeFromText("java.util.ArrayList<? super java.lang.Number>", null),
+ myJavaFacade.getElementFactory().createTypeFromText("java.util.ArrayList<? super java.lang.Integer>", null));
+ }
+
+ public void testProducerUnbounded() throws Exception {
+ doTestFirstParamType("method",
+ myJavaFacade.getElementFactory().createTypeFromText("java.util.ArrayList<? super java.lang.Number>", null),
+ myJavaFacade.getElementFactory().createTypeFromText("java.util.ArrayList<?>", null));
+ }
+
+ public void testProducerCollectionChanged() throws Exception {
+ doTestFirstParamType("method",
+ myJavaFacade.getElementFactory().createTypeFromText("java.util.ArrayList<? super java.lang.Number>", null),
+ myJavaFacade.getElementFactory().createTypeFromText("java.util.Set<? super java.lang.Integer>", null));
+ }
+
+ public void testProducerExtendsCollectionChanged() throws Exception {
+ doTestFirstParamType("method",
+ myJavaFacade.getElementFactory().createTypeFromText("java.util.ArrayList<? super java.lang.Number>", null),
+ myJavaFacade.getElementFactory().createTypeFromText("java.util.Set<? extends java.lang.Object>", null));
+ }
+
+ public void testProducerStopAtWildcard() throws Exception {
+ doTestFirstParamType("method",
+ myJavaFacade.getElementFactory().createTypeFromText("java.util.List<java.lang.Number>", null),
+ myJavaFacade.getElementFactory().createTypeFromText("java.util.List<? super java.lang.Number>", null));
+ }
+
+ public void testProducerFailToStopAtWildcard() throws Exception {
+ doTestFirstParamType("method",
+ myJavaFacade.getElementFactory().createTypeFromText("java.util.List<? super java.lang.Number>", null),
+ myJavaFacade.getElementFactory().createTypeFromText("java.util.List<? super java.lang.Integer>", null));
+ }
+
+ public void testProducerExtendsFailToStopAtWildcard() throws Exception {
+ doTestFirstParamType("method",
+ myJavaFacade.getElementFactory().createTypeFromText("java.util.List<? super java.lang.Number>", null),
+ myJavaFacade.getElementFactory().createTypeFromText("java.util.List<? extends java.lang.Number>", null));
+ }
+
+
+ public void testConsumerExtends() throws Exception {
+ doTestFirstParamType("method",
+ myJavaFacade.getElementFactory().createTypeFromText("java.util.ArrayList<java.lang.Number>", null),
+ myJavaFacade.getElementFactory().createTypeFromText("java.util.ArrayList<? extends java.lang.Number>", null));
+ }
+
+ public void testConsumerSuper() throws Exception {
+ doTestFirstParamType("method",
+ myJavaFacade.getElementFactory().createTypeFromText("java.util.ArrayList<java.lang.Number>", null),
+ myJavaFacade.getElementFactory().createTypeFromText("java.util.ArrayList<? super java.lang.Number>", null));
+ }
+
+ public void testConsumerUnbounded() throws Exception {
+ doTestFirstParamType("method",
+ myJavaFacade.getElementFactory().createTypeFromText("java.util.ArrayList<java.lang.Number>", null),
+ myJavaFacade.getElementFactory().createTypeFromText("java.util.ArrayList<?>", null));
+ }
+
+ // array -> list
+ public void testAssignmentExtends() throws Exception {
+ doTestFirstParamType("method",
+ myJavaFacade.getElementFactory().createTypeFromText("java.lang.Integer", null).createArrayType(),
+ myJavaFacade.getElementFactory().createTypeFromText("java.util.ArrayList<? extends java.lang.Integer>", null));
+ }
+
+ public void testAssignmentSuper() throws Exception {
+ doTestFirstParamType("method",
+ myJavaFacade.getElementFactory().createTypeFromText("java.lang.Integer", null).createArrayType(),
+ myJavaFacade.getElementFactory().createTypeFromText("java.util.ArrayList<? super java.lang.Integer>", null));
+ }
+
+ public void testAssignmentUnbounded() throws Exception {
+ doTestFirstParamType("method",
+ myJavaFacade.getElementFactory().createTypeFromText("java.lang.Integer", null).createArrayType(),
+ myJavaFacade.getElementFactory().createTypeFromText("java.util.ArrayList<?>", null));
+ }
+
+ public void testGetExtends() throws Exception {
+ doTestFirstParamType("method",
+ myJavaFacade.getElementFactory().createTypeFromText("java.lang.Integer", null).createArrayType(),
+ myJavaFacade.getElementFactory().createTypeFromText("java.util.ArrayList<? extends java.lang.Integer>", null));
+ }
+
+ public void testGetSuper() throws Exception {
+ doTestFirstParamType("method",
+ myJavaFacade.getElementFactory().createTypeFromText("java.lang.Integer", null).createArrayType(),
+ myJavaFacade.getElementFactory().createTypeFromText("java.util.ArrayList<? super java.lang.Integer>", null));
+ }
+
+ public void testGetUnbounded() throws Exception {
+ doTestFirstParamType("method",
+ myJavaFacade.getElementFactory().createTypeFromText("java.lang.Integer", null).createArrayType(),
+ myJavaFacade.getElementFactory().createTypeFromText("java.util.ArrayList<?>", null));
+
+ }
+
+ public void testLengthSize() throws Exception {
+ doTestFirstParamType("method",
+ myJavaFacade.getElementFactory().createTypeFromText("java.lang.Integer", null).createArrayType(),
+ myJavaFacade.getElementFactory().createTypeFromText("java.util.ArrayList<?>", null));
+
+ }
+
+ //list -> array
+ public void testGetAssignmentExtendsToType() throws Exception {
+ doTestFirstParamType("method", myJavaFacade.getElementFactory().createTypeFromText("java.util.ArrayList<? extends java.lang.Number>", null),
+ myJavaFacade.getElementFactory().createTypeFromText("java.lang.Number", null).createArrayType());
+ }
+
+ public void testGetAssignmentExtendsToSuperType() throws Exception {
+ doTestFirstParamType("method", myJavaFacade.getElementFactory().createTypeFromText("java.util.ArrayList<? extends java.lang.Number>", null),
+ myJavaFacade.getElementFactory().createTypeFromText(CommonClassNames.JAVA_LANG_OBJECT, null).createArrayType());
+ }
+
+ public void testGetAssignmentExtendsToChildType() throws Exception {
+ doTestFirstParamType("method", myJavaFacade.getElementFactory().createTypeFromText("java.util.ArrayList<? extends java.lang.Number>", null),
+ myJavaFacade.getElementFactory().createTypeFromText("java.lang.Integer", null).createArrayType());
+ }
+
+ // -> threadlocal with wildcard
+ public void testThreadLocalProducerExtends() throws Exception {
+ doTestFirstParamType("method",
+ myJavaFacade.getElementFactory().createTypeFromText("java.util.List<java.lang.String>", null),
+ myJavaFacade.getElementFactory().createTypeFromText("java.lang.ThreadLocal<java.util.List<? extends String>>", null));
+ }
+
+ //List<? super String> is not assignable to List<String> though it is possible to pass string where ? super String was
+ public void _testThreadLocalProducerSuper() throws Exception {
+ doTestFirstParamType("method",
+ myJavaFacade.getElementFactory().createTypeFromText("java.util.List<java.lang.String>", null),
+ myJavaFacade.getElementFactory().createTypeFromText("java.lang.ThreadLocal<java.util.List<? super String>>", null));
+ }
+
+ public void testThreadLocalConsumerSuper() throws Exception {
+ doTestFirstParamType("method",
+ myJavaFacade.getElementFactory().createTypeFromText("java.lang.String", null),
+ myJavaFacade.getElementFactory().createTypeFromText("java.lang.ThreadLocal<? super String>", null));
+ }
+
+ public void testThreadLocalConsumerExtends() throws Exception {
+ doTestFirstParamType("method",
+ myJavaFacade.getElementFactory().createTypeFromText("java.lang.String", null),
+ myJavaFacade.getElementFactory().createTypeFromText("java.lang.ThreadLocal<? extends String>", null));
+ }
+} \ No newline at end of file