Add tests for Java "Move Inner Class/To Inner Class" refactoring

This commit is contained in:
Alexey Sedunov
2014-02-19 15:14:12 +04:00
parent 7d3b21130a
commit 33cbc099ab
84 changed files with 543 additions and 0 deletions
@@ -0,0 +1,7 @@
package a
import b.X
fun bar() {
val t: X = X()
}
@@ -0,0 +1,7 @@
package a
import b.*
fun bar() {
val t: X = X()
}
@@ -0,0 +1,7 @@
package a
import b.X as XX
fun bar() {
val t: XX = XX()
}
@@ -0,0 +1,7 @@
package b
import b.*
fun bar() {
val t: X = X()
}
@@ -0,0 +1,7 @@
package b
import b.X as XX
fun bar() {
val t: XX = XX()
}
@@ -0,0 +1,7 @@
package a;
public class A {
public static class <caret>X {
}
}
@@ -0,0 +1,5 @@
package a
fun bar() {
val t: A.X = A.X()
}
@@ -0,0 +1,7 @@
package a
import b.*
fun bar() {
val t: A.X = A.X()
}
@@ -0,0 +1,7 @@
package a
import a.A.X as XX
fun bar() {
val t: XX = XX()
}
@@ -0,0 +1,5 @@
package b
fun bar() {
val t: a.A.X = a.A.X()
}
@@ -0,0 +1,7 @@
package b
import b.*
fun bar() {
val t: a.A.X = a.A.X()
}
@@ -0,0 +1,7 @@
package b
import a.A.X as XX
fun bar() {
val t: XX = XX()
}
@@ -0,0 +1,5 @@
{
"mainFile": "a/main.java",
"type": "MOVE_INNER_CLASS",
"targetPackage": "b"
}
@@ -0,0 +1,5 @@
package a
fun bar(s: String) {
val t: X = X()
}
@@ -0,0 +1,7 @@
package a
import a.A.*
fun bar(s: String) {
val t: X = X()
}
@@ -0,0 +1,7 @@
package a
import a.X as XX
fun bar(s: String) {
val t: XX = XX()
}
@@ -0,0 +1,7 @@
package a;
public class A {
public static class <caret>X {
}
}
@@ -0,0 +1,5 @@
package a
fun bar(s: String) {
val t: A.X = A.X()
}
@@ -0,0 +1,7 @@
package a
import a.A.*
fun bar(s: String) {
val t: X = X()
}
@@ -0,0 +1,7 @@
package a
import a.A.X as XX
fun bar(s: String) {
val t: XX = XX()
}
@@ -0,0 +1,5 @@
{
"mainFile": "a/main.java",
"type": "MOVE_INNER_CLASS",
"targetPackage": "a"
}
@@ -0,0 +1,10 @@
package a;
public class X {
private A outer;
public X(A outer, String s) {
this.outer = outer;
System.out.println(s);
}
}
@@ -0,0 +1,5 @@
package a
fun bar(s: String) {
val t: X = X(A(), "test")
}
@@ -0,0 +1,7 @@
package a
import a.A.*
fun bar(s: String) {
val t: X = X(A(), "test")
}
@@ -0,0 +1,7 @@
package a
import a.X
fun bar(s: String) {
val t: X = X(A(), "test")
}
@@ -0,0 +1,9 @@
package a;
public class A {
public class <caret>X {
public X(String s) {
System.out.println(s);
}
}
}
@@ -0,0 +1,5 @@
package a
fun bar(s: String) {
val t: A.X = A().X("test")
}
@@ -0,0 +1,7 @@
package a
import a.A.*
fun bar(s: String) {
val t: X = A().X("test")
}
@@ -0,0 +1,7 @@
package a
import a.A.X
fun bar(s: String) {
val t: X = A().X("test")
}
@@ -0,0 +1,6 @@
{
"mainFile": "a/main.java",
"type": "MOVE_INNER_CLASS",
"targetPackage": "a",
"outerInstanceParameterName": "outer"
}
@@ -0,0 +1,5 @@
package a
fun bar(s: String) {
val t: Y = Y()
}
@@ -0,0 +1,7 @@
package a
import a.A.*
fun bar(s: String) {
val t: Y = Y()
}
@@ -0,0 +1,7 @@
package a
import a.Y as XX
fun bar(s: String) {
val t: XX = XX()
}
@@ -0,0 +1,7 @@
package a;
public class A {
public static class <caret>X {
}
}
@@ -0,0 +1,5 @@
package a
fun bar(s: String) {
val t: A.X = A.X()
}
@@ -0,0 +1,7 @@
package a
import a.A.*
fun bar(s: String) {
val t: X = X()
}
@@ -0,0 +1,7 @@
package a
import a.A.X as XX
fun bar(s: String) {
val t: XX = XX()
}
@@ -0,0 +1,6 @@
{
"mainFile": "a/main.java",
"type": "MOVE_INNER_CLASS",
"targetPackage": "a",
"newClassName": "Y"
}
@@ -0,0 +1,8 @@
public class B {
public class C {
public static class A {
}
}
}
@@ -0,0 +1,3 @@
fun bar() {
val t: B.C.A = B.C.A()
}
@@ -0,0 +1,5 @@
import B.*
fun bar() {
val t: C.A = B.C.A()
}
@@ -0,0 +1,5 @@
import B.C.A as X
fun bar() {
val t: X = X()
}
@@ -0,0 +1,5 @@
public class B {
public class C {
}
}
@@ -0,0 +1,5 @@
import B.*
fun bar() {
val t: A = A()
}
@@ -0,0 +1,5 @@
import A as X
fun bar() {
val t: X = X()
}
@@ -0,0 +1,5 @@
{
"mainFile": "main.java",
"type": "MOVE_TOP_LEVEL_CLASSES_TO_INNER",
"targetClass": "B.C"
}
@@ -0,0 +1,5 @@
public class B {
public static class A {
}
}
@@ -0,0 +1,3 @@
fun bar() {
val t: B.A = B.A()
}
@@ -0,0 +1,5 @@
import B.*
fun bar() {
val t: A = A()
}
@@ -0,0 +1,5 @@
import B.A as X
fun bar() {
val t: X = X()
}
@@ -0,0 +1,5 @@
import B.*
fun bar() {
val t: A = A()
}
@@ -0,0 +1,5 @@
import A as X
fun bar() {
val t: X = X()
}
@@ -0,0 +1,5 @@
{
"mainFile": "main.java",
"type": "MOVE_TOP_LEVEL_CLASSES_TO_INNER",
"targetClass": "B"
}
@@ -0,0 +1,7 @@
package a
import b.B
fun bar() {
val t: B.A = B.A()
}
@@ -0,0 +1,7 @@
package a
import b.B.*
fun bar() {
val t: A = A()
}
@@ -0,0 +1,7 @@
package a
import b.B.A as X
fun bar() {
val t: X = X()
}
@@ -0,0 +1,7 @@
package b;
public class B {
public static class A {
}
}
@@ -0,0 +1,7 @@
package b
import b.B.*
fun bar() {
val t: A = A()
}
@@ -0,0 +1,7 @@
package b
import b.B.A as X
fun bar() {
val t: X = X()
}
@@ -0,0 +1,7 @@
package a
import b.B.*
fun bar() {
val t: A = A()
}
@@ -0,0 +1,7 @@
package a
import a.A as X
fun bar() {
val t: X = X()
}
@@ -0,0 +1,7 @@
package b
import b.B.*
fun bar() {
val t: a.A = a.A()
}
@@ -0,0 +1,7 @@
package b
import a.A as X
fun bar() {
val t: X = X()
}
@@ -0,0 +1,5 @@
{
"mainFile": "a/main.java",
"type": "MOVE_TOP_LEVEL_CLASSES_TO_INNER",
"targetClass": "b.B"
}
@@ -42,6 +42,9 @@ import com.intellij.refactoring.move.moveClassesOrPackages.MultipleRootsMoveDest
import com.intellij.refactoring.PackageWrapper
import com.intellij.psi.JavaPsiFacade
import com.intellij.psi.PsiClass
import com.intellij.refactoring.move.moveInner.MoveInnerProcessor
import com.intellij.psi.search.GlobalSearchScope
import com.intellij.refactoring.move.moveClassesOrPackages.MoveClassToInnerProcessor
import com.intellij.psi.PsiFile
import com.intellij.psi.PsiManager
@@ -182,5 +185,43 @@ enum class MoveAction {
}
}
MOVE_TOP_LEVEL_CLASSES_TO_INNER {
override fun runRefactoring(mainFile: PsiFile, elementAtCaret: PsiElement?, config: JsonObject) {
val project = mainFile.getProject()
val classToMove = elementAtCaret!!.getParentByType(javaClass<PsiClass>())!!
val targetClass = config.getString("targetClass")
MoveClassToInnerProcessor(
project = project,
classesToMove = array(classToMove),
targetClass = JavaPsiFacade.getInstance(project).findClass(targetClass, GlobalSearchScope.allScope(project))!!,
searchInComments = false,
searchInNonJavaFiles = true,
moveCallback = null
).run()
}
}
MOVE_INNER_CLASS {
override fun runRefactoring(mainFile: PsiFile, elementAtCaret: PsiElement?, config: JsonObject) {
val project = mainFile.getProject()
val classToMove = elementAtCaret!!.getParentByType(javaClass<PsiClass>())!!
val newClassName = config.getNullableString("newClassName") ?: classToMove.getName()!!
val outerInstanceParameterName = config.getNullableString("outerInstanceParameterName")
val targetPackage = config.getString("targetPackage")
MoveInnerProcessor(
project = project,
innerClass = classToMove,
name = newClassName,
passOuterClass = outerInstanceParameterName != null,
parameterName = outerInstanceParameterName,
targetContainer = JavaPsiFacade.getInstance(project).findPackage(targetPackage)!!.getDirectories()[0]
).run()
}
}
abstract fun runRefactoring(mainFile: PsiFile, elementAtCaret: PsiElement?, config: JsonObject)
}
@@ -66,11 +66,41 @@ public class JetMoveTestGenerated extends AbstractJetMoveTest {
doTest("idea/testData/refactoring/move/java/moveClass/moveAsMember/moveClassToTopLevelClassOfAnotherPackage/moveClassToTopLevelClassOfAnotherPackage.test");
}
@TestMetadata("java/moveClass/moveInnerToTop/moveNestedClassToTopLevelInAnotherPackage/moveNestedClassToTopLevelInAnotherPackage.test")
public void testJava_moveClass_moveInnerToTop_moveNestedClassToTopLevelInAnotherPackage_MoveNestedClassToTopLevelInAnotherPackage() throws Exception {
doTest("idea/testData/refactoring/move/java/moveClass/moveInnerToTop/moveNestedClassToTopLevelInAnotherPackage/moveNestedClassToTopLevelInAnotherPackage.test");
}
@TestMetadata("java/moveClass/moveInnerToTop/moveNestedClassToTopLevelInTheSamePackage/moveNestedClassToTopLevelInTheSamePackage.test")
public void testJava_moveClass_moveInnerToTop_moveNestedClassToTopLevelInTheSamePackage_MoveNestedClassToTopLevelInTheSamePackage() throws Exception {
doTest("idea/testData/refactoring/move/java/moveClass/moveInnerToTop/moveNestedClassToTopLevelInTheSamePackage/moveNestedClassToTopLevelInTheSamePackage.test");
}
@TestMetadata("java/moveClass/moveInnerToTop/moveNestedClassToTopLevelInTheSamePackageAndRename/moveNestedClassToTopLevelInTheSamePackageAndRename.test")
public void testJava_moveClass_moveInnerToTop_moveNestedClassToTopLevelInTheSamePackageAndRename_MoveNestedClassToTopLevelInTheSamePackageAndRename() throws Exception {
doTest("idea/testData/refactoring/move/java/moveClass/moveInnerToTop/moveNestedClassToTopLevelInTheSamePackageAndRename/moveNestedClassToTopLevelInTheSamePackageAndRename.test");
}
@TestMetadata("java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/moveTopLevelClassToAnotherPackage.test")
public void testJava_moveClass_moveTop_moveTopLevelClassToAnotherPackage_MoveTopLevelClassToAnotherPackage() throws Exception {
doTest("idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/moveTopLevelClassToAnotherPackage.test");
}
@TestMetadata("java/moveClass/moveTopToInner/moveTopLevelClassToNestedClass/moveTopLevelClassToTopLevelClass.test")
public void testJava_moveClass_moveTopToInner_moveTopLevelClassToNestedClass_MoveTopLevelClassToTopLevelClass() throws Exception {
doTest("idea/testData/refactoring/move/java/moveClass/moveTopToInner/moveTopLevelClassToNestedClass/moveTopLevelClassToTopLevelClass.test");
}
@TestMetadata("java/moveClass/moveTopToInner/moveTopLevelClassToTopLevelClass/moveTopLevelClassToTopLevelClass.test")
public void testJava_moveClass_moveTopToInner_moveTopLevelClassToTopLevelClass_MoveTopLevelClassToTopLevelClass() throws Exception {
doTest("idea/testData/refactoring/move/java/moveClass/moveTopToInner/moveTopLevelClassToTopLevelClass/moveTopLevelClassToTopLevelClass.test");
}
@TestMetadata("java/moveClass/moveTopToInner/moveTopLevelClassToTopLevelClassOfAnotherPackage/moveTopLevelClassToTopLevelClassOfAnotherPackage.test")
public void testJava_moveClass_moveTopToInner_moveTopLevelClassToTopLevelClassOfAnotherPackage_MoveTopLevelClassToTopLevelClassOfAnotherPackage() throws Exception {
doTest("idea/testData/refactoring/move/java/moveClass/moveTopToInner/moveTopLevelClassToTopLevelClassOfAnotherPackage/moveTopLevelClassToTopLevelClassOfAnotherPackage.test");
}
@TestMetadata("java/moveField/moveFieldToExternalNestedClass/moveFieldToExternalNestedClass.test")
public void testJava_moveField_moveFieldToExternalNestedClass_MoveFieldToExternalNestedClass() throws Exception {
doTest("idea/testData/refactoring/move/java/moveField/moveFieldToExternalNestedClass/moveFieldToExternalNestedClass.test");