FIR IDE: add tests for completion in sealed when

This commit is contained in:
Ilya Kirillov
2021-05-27 15:06:30 +02:00
committed by TeamCityServer
parent 9af0885e82
commit 0da488058d
15 changed files with 320 additions and 0 deletions
@@ -1198,6 +1198,7 @@ fun main(args: Array<String>) {
testClass<AbstractHighLevelJvmBasicCompletionTest> {
model("basic/common")
model("basic/java")
model("../../idea-fir/testData/completion/basic/common", testClassName = "CommonFir")
}
testClass<AbstractHighLevelBasicCompletionHandlerTest> {
@@ -0,0 +1,16 @@
enum class ENUM {
AAAA, BBBB, CCCC
}
fun foo(e: ENUM) {
when (e) {
<caret>
}
}
// EXIST: ENUM.AAAA
// EXIST: ENUM.BBBB
// EXIST: ENUM.CCCC
// EXIST: { lookupString: "else -> "}
// NOTHING_ELSE
// FIR_COMPARISON
@@ -0,0 +1,15 @@
enum class ENUM {
AAAA, BBBB, CCCC
}
fun foo(e: ENUM) {
when (e) {
ENUM.AAAA, ENUM.CCCC -> TODO()
<caret>
}
}
// EXIST: ENUM.BBBB
// EXIST: { lookupString: "else -> "}
// NOTHING_ELSE
// FIR_COMPARISON
@@ -0,0 +1,14 @@
enum class ENUM {
AAAA, BBBB, CCCC
}
fun foo(e: ENUM) {
when (e) {
ENUM.AAAA, ENUM.CCCC, <caret> -> TODO()
}
}
// EXIST: ENUM.BBBB
// NOTHING_ELSE
// FIR_COMPARISON
@@ -0,0 +1,18 @@
package a.b.c
enum class ENUM {
AAAA, BBBB, CCCC
}
fun foo(e: ENUM) {
when (e) {
<caret>
}
}
// EXIST: ENUM.AAAA
// EXIST: ENUM.BBBB
// EXIST: ENUM.CCCC
// EXIST: { lookupString: "else -> "}
// NOTHING_ELSE
// FIR_COMPARISON
@@ -0,0 +1,18 @@
sealed class SEALED {
class AAAA: SEALED()
object BBBB: SEALED()
class CCCC: SEALED()
}
fun foo(e: SEALED) {
when (e) {
<caret>
}
}
// EXIST: is SEALED.AAAA
// EXIST: SEALED.BBBB
// EXIST: is SEALED.CCCC
// EXIST: { lookupString: "else -> "}
// NOTHING_ELSE
// FIR_COMPARISON
@@ -0,0 +1,20 @@
package a.b.c
sealed class SEALED {
class AAAA: SEALED()
object BBBB: SEALED()
class CCCC: SEALED()
}
fun foo(e: SEALED) {
when (e) {
<caret>
}
}
// EXIST: is SEALED.AAAA
// EXIST: SEALED.BBBB
// EXIST: is SEALED.CCCC
// EXIST: { lookupString: "else -> "}
// NOTHING_ELSE
// FIR_COMPARISON
@@ -0,0 +1,21 @@
abstract class SEALED
class AAAA: SEALED()
object BBBB: SEALED()
class CCCC: SEALED()
class SomeClass
object SomeObject
fun foo(e: SEALED) {
when (e) {
<caret>
}
}
// EXIST: is AAAA
// EXIST: BBBB
// EXIST: is CCCC
// EXIST: is SomeClass
// EXIST: SomeObject
// EXIST: { lookupString: "else -> "}
// FIR_COMPARISON
@@ -0,0 +1,17 @@
enum class ENUM {
AAAA, BBBB, CCCC
}
fun foo(e: ENUM?) {
when (e) {
<caret>
}
}
// EXIST: ENUM.AAAA
// EXIST: ENUM.BBBB
// EXIST: ENUM.CCCC
// EXIST: { lookupString: "else -> "}
// EXIST: null
// NOTHING_ELSE
// FIR_COMPARISON
@@ -0,0 +1,18 @@
sealed class SEALED
class AAAA: SEALED()
object BBBB: SEALED()
class CCCC: SEALED()
fun foo(e: SEALED?) {
when (e) {
<caret>
}
}
// EXIST: is AAAA
// EXIST: BBBB
// EXIST: is CCCC
// EXIST: null
// EXIST: { lookupString: "else -> "}
// NOTHING_ELSE
// FIR_COMPARISON
@@ -0,0 +1,17 @@
sealed class SEALED
class AAAA: SEALED()
object BBBB: SEALED()
class CCCC: SEALED()
fun foo(e: SEALED) {
when (e) {
<caret>
}
}
// EXIST: is AAAA
// EXIST: BBBB
// EXIST: is CCCC
// EXIST: { lookupString: "else -> "}
// NOTHING_ELSE
// FIR_COMPARISON
@@ -0,0 +1,16 @@
sealed class SEALED
class AAAA: SEALED()
object BBBB: SEALED()
class CCCC: SEALED()
fun foo(e: SEALED) {
when (e) {
is AAAA, CCCC -> TODO()
<caret>
}
}
// EXIST: BBBB
// EXIST: { lookupString: "else -> "}
// NOTHING_ELSE
// FIR_COMPARISON
@@ -0,0 +1,20 @@
sealed class SEALED
class AAAA: SEALED()
object BBBB: SEALED()
abstract class CCCC: SEALED()
class SomeClass
fun foo(e: SEALED) {
when (e) {
<caret>
}
}
// EXIST: is AAAA
// EXIST: BBBB
// EXIST: is CCCC
// EXIST: { lookupString: "else -> "}
// EXIST: is SomeClass
// FIR_COMPARISON
@@ -0,0 +1,18 @@
sealed interface SEALED
class AAAA: SEALED()
object BBBB: SEALED()
class CCCC: SEALED()
class SomeClass
fun foo(e: SEALED) {
when (e) {
<caret>
}
}
// EXIST: is AAAA
// EXIST: BBBB
// EXIST: is CCCC
// EXIST: { lookupString: "else -> "}
// FIR_COMPARISON
@@ -3322,4 +3322,95 @@ public class HighLevelJvmBasicCompletionTestGenerated extends AbstractHighLevelJ
}
}
}
@TestMetadata("idea/idea-completion/testData/../../idea-fir/testData/completion/basic/common")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
public static class CommonFir extends AbstractHighLevelJvmBasicCompletionTest {
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doTest, this, testDataFilePath);
}
public void testAllFilesPresentInCommonFir() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("idea/idea-completion/testData/../../idea-fir/testData/completion/basic/common"), Pattern.compile("^(.+)\\.kt$"), null, true);
}
@TestMetadata("idea/idea-completion/testData/../../idea-fir/testData/completion/basic/common/when")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
public static class When extends AbstractHighLevelJvmBasicCompletionTest {
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doTest, this, testDataFilePath);
}
public void testAllFilesPresentInWhen() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("idea/idea-completion/testData/../../idea-fir/testData/completion/basic/common/when"), Pattern.compile("^(.+)\\.kt$"), null, true);
}
@TestMetadata("enumInEmptyWhen.kt")
public void testEnumInEmptyWhen() throws Exception {
runTest("idea/idea-completion/testData/../../idea-fir/testData/completion/basic/common/when/enumInEmptyWhen.kt");
}
@TestMetadata("enumInWhen.kt")
public void testEnumInWhen() throws Exception {
runTest("idea/idea-completion/testData/../../idea-fir/testData/completion/basic/common/when/enumInWhen.kt");
}
@TestMetadata("enumInWhenWithOtherConditions.kt")
public void testEnumInWhenWithOtherConditions() throws Exception {
runTest("idea/idea-completion/testData/../../idea-fir/testData/completion/basic/common/when/enumInWhenWithOtherConditions.kt");
}
@TestMetadata("enumInWhenWithPackage.kt")
public void testEnumInWhenWithPackage() throws Exception {
runTest("idea/idea-completion/testData/../../idea-fir/testData/completion/basic/common/when/enumInWhenWithPackage.kt");
}
@TestMetadata("nestedSealedClassInWhen.kt")
public void testNestedSealedClassInWhen() throws Exception {
runTest("idea/idea-completion/testData/../../idea-fir/testData/completion/basic/common/when/nestedSealedClassInWhen.kt");
}
@TestMetadata("nestedSealedClassInWhenWithPackage.kt")
public void testNestedSealedClassInWhenWithPackage() throws Exception {
runTest("idea/idea-completion/testData/../../idea-fir/testData/completion/basic/common/when/nestedSealedClassInWhenWithPackage.kt");
}
@TestMetadata("nonSealedClassInWhen.kt")
public void testNonSealedClassInWhen() throws Exception {
runTest("idea/idea-completion/testData/../../idea-fir/testData/completion/basic/common/when/nonSealedClassInWhen.kt");
}
@TestMetadata("nullableEnumInWhen.kt")
public void testNullableEnumInWhen() throws Exception {
runTest("idea/idea-completion/testData/../../idea-fir/testData/completion/basic/common/when/nullableEnumInWhen.kt");
}
@TestMetadata("nullableSealedClassInWhen.kt")
public void testNullableSealedClassInWhen() throws Exception {
runTest("idea/idea-completion/testData/../../idea-fir/testData/completion/basic/common/when/nullableSealedClassInWhen.kt");
}
@TestMetadata("sealedClassInWhen.kt")
public void testSealedClassInWhen() throws Exception {
runTest("idea/idea-completion/testData/../../idea-fir/testData/completion/basic/common/when/sealedClassInWhen.kt");
}
@TestMetadata("sealedClassInWhenWithOtherConditions.kt")
public void testSealedClassInWhenWithOtherConditions() throws Exception {
runTest("idea/idea-completion/testData/../../idea-fir/testData/completion/basic/common/when/sealedClassInWhenWithOtherConditions.kt");
}
@TestMetadata("sealedClassWithAbstractInheritorsInWhen.kt")
public void testSealedClassWithAbstractInheritorsInWhen() throws Exception {
runTest("idea/idea-completion/testData/../../idea-fir/testData/completion/basic/common/when/sealedClassWithAbstractInheritorsInWhen.kt");
}
@TestMetadata("sealedInterfaceInWhen.kt")
public void testSealedInterfaceInWhen() throws Exception {
runTest("idea/idea-completion/testData/../../idea-fir/testData/completion/basic/common/when/sealedInterfaceInWhen.kt");
}
}
}
}