Files
openide/jvm/jvm-analysis-java-tests/testSrc/com/intellij/codeInspection/tests/java/JavaMigrationTest.kt
Bart van Helvert ba513a4d88 [jvm] Rename shared.testFramework to internal.TestFramework
To better highlight that this test framework is for internal usage only. #IDEA-334017

GitOrigin-RevId: c491de2411cdffd6eee3e97a6273982560572f4b
2023-10-11 23:39:50 +00:00

239 lines
5.2 KiB
Kotlin

package com.intellij.codeInspection.tests.java
import com.intellij.jvm.analysis.internal.testFramework.MigrationTestBase
import com.intellij.jvm.analysis.testFramework.JvmLanguage
import com.intellij.refactoring.migration.MigrationMapEntry
class JavaMigrationTest : MigrationTestBase() {
fun `test package`() {
migrationTest(JvmLanguage.JAVA, before = """
package p1;
import qqq.AAA;
class C {
AAA a = new AAA();
}
""".trimIndent(), after = """
package p1;
import jetbrains.test.AAA;
class C {
AAA a = new AAA();
}
""".trimIndent(), MigrationMapEntry("qqq", "jetbrains.test", MigrationMapEntry.PACKAGE, true)
)
migrationTest(JvmLanguage.JAVA, before = """
package p1;
import qqq.*;
class C {
qqq.AAA a = new qqq.AAA();
}
""".trimIndent(), after = """
package p1;
class C {
java.lang.AAA a = new java.lang.AAA();
}
""".trimIndent(), MigrationMapEntry("qqq", "java.lang", MigrationMapEntry.PACKAGE, true)
)
}
fun `test package migration with non existing package`() {
migrationTest(JvmLanguage.JAVA, before = """
package p1;
import qqq.AAA;
class C {
AAA a = new AAA();
}
""".trimIndent(), after = """
package p1;
import zzz.bbb.AAA;
class C {
AAA a = new AAA();
}
""".trimIndent(), MigrationMapEntry("qqq", "zzz.bbb", MigrationMapEntry.PACKAGE, true)
)
migrationTest(JvmLanguage.JAVA, before = """
package p1;
import qqq.*;
class C {
qqq.AAA a = new qqq.AAA();
}
""".trimIndent(), after = """
package p1;
import zzz.bbb.*;
class C {
zzz.bbb.AAA a = new zzz.bbb.AAA();
}
""".trimIndent(), MigrationMapEntry("qqq", "zzz.bbb", MigrationMapEntry.PACKAGE, true)
)
}
fun `test two classes`() {
migrationTest(JvmLanguage.JAVA, before = """
class A {}
class A1 {}
class B {}
class B1 {}
public class Test {
A a;
B b;
}
""".trimIndent(), after = """
class A {}
class A1 {}
class B {}
class B1 {}
public class Test {
A1 a;
B1 b;
}
""".trimIndent(),
MigrationMapEntry("A", "A1", MigrationMapEntry.CLASS, true),
MigrationMapEntry("B", "B1", MigrationMapEntry.CLASS, true)
)
}
fun `test two non existent classes`() {
migrationTest(JvmLanguage.JAVA, before = """
package p1;
import qqq.aaa.XXX;
class C {
XXX you = new XXX();
}
""".trimIndent(), after = """
package p1;
import zzz.bbb.QQQ;
class C {
QQQ you = new QQQ();
}
""".trimIndent(), MigrationMapEntry("qqq.aaa.XXX", "zzz.bbb.QQQ", MigrationMapEntry.CLASS, false)
)
migrationTest(JvmLanguage.JAVA, before = """
package p1;
import qqq.aaa.*;
class C1 {
XXX you = new XXX();
}
""".trimIndent(), after = """
package p1;
import qqq.aaa.*;
import zzz.bbb.QQQ;
class C1 {
QQQ you = new QQQ();
}
""".trimIndent(), MigrationMapEntry("qqq.aaa.XXX", "zzz.bbb.QQQ", MigrationMapEntry.CLASS, false)
)
}
fun `test non existing class and non existing package`() {
migrationTest(JvmLanguage.JAVA, before = """
package p1;
import qqq.aaa.XXX;
class C {
XXX you = new XXX();
}
""".trimIndent(), after = """
package p1;
import java.lang.String;
class C {
String you = new String();
}
""".trimIndent(), MigrationMapEntry("qqq.aaa.XXX", "java.lang.String", MigrationMapEntry.CLASS, false)
)
migrationTest(JvmLanguage.JAVA, before = """
package p1;
import qqq.aaa.*;
class C1 {
XXX you = new XXX();
}
""".trimIndent(), after = """
package p1;
import qqq.aaa.*;
class C1 {
String you = new String();
}
""".trimIndent(), MigrationMapEntry("qqq.aaa.XXX", "java.lang.String", MigrationMapEntry.CLASS, false)
)
}
fun `test same short name class`() {
migrationTest(JvmLanguage.JAVA, before = """
import aaa.*;
public class C {
@Test
void foo(){}
@Test
void bar(){}
}
""".trimIndent(), after = """
import aaa.*;
import bbb.Test;
public class C {
@Test
void foo(){}
@Test
void bar(){}
}
""".trimIndent(), MigrationMapEntry("aaa.Test", "bbb.Test", MigrationMapEntry.CLASS, false)
)
migrationTest(JvmLanguage.JAVA, before = """
import aaa.Test;
public class C1 {
@Test
void foo(){}
@Test
void bar(){}
}
""".trimIndent(), after = """
import bbb.Test;
public class C1 {
@Test
void foo(){}
@Test
void bar(){}
}
""".trimIndent(), MigrationMapEntry("aaa.Test", "bbb.Test", MigrationMapEntry.CLASS, false)
)
}
}