From 4c634d5c6755e82de7c4aecabe11cbfd38cc18c8 Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Tue, 1 Apr 2014 15:14:01 +0400 Subject: [PATCH] Use common infrastructure for JetMultifileBasicCompletionTest --- .../basic/multifile/ExtensionFunction-1.kt | 1 + ...aInnerClasses.kt => JavaInnerClasses-1.kt} | 2 + ...JavaClass.kt => NotImportedJavaClass-1.kt} | 3 +- .../completion/ExpectedCompletionUtils.java | 6 +- .../JetCompletionMultiTestBase.java | 70 +++++++++++-------- .../JetFixtureCompletionBaseTestCase.java | 16 ++++- .../JetMultifileBasicCompletionTest.java | 43 ++++-------- 7 files changed, 76 insertions(+), 65 deletions(-) rename idea/testData/completion/basic/multifile/{JavaInnerClasses.kt => JavaInnerClasses-1.kt} (55%) rename idea/testData/completion/basic/multifile/{NotImportedJavaClass.kt => NotImportedJavaClass-1.kt} (64%) diff --git a/idea/testData/completion/basic/multifile/ExtensionFunction-1.kt b/idea/testData/completion/basic/multifile/ExtensionFunction-1.kt index b4a0c10b1e3..512205b1fda 100644 --- a/idea/testData/completion/basic/multifile/ExtensionFunction-1.kt +++ b/idea/testData/completion/basic/multifile/ExtensionFunction-1.kt @@ -8,4 +8,5 @@ fun firstFun() { a. } +// INVOCATION_COUNT: 2 // EXIST: secondExtension \ No newline at end of file diff --git a/idea/testData/completion/basic/multifile/JavaInnerClasses.kt b/idea/testData/completion/basic/multifile/JavaInnerClasses-1.kt similarity index 55% rename from idea/testData/completion/basic/multifile/JavaInnerClasses.kt rename to idea/testData/completion/basic/multifile/JavaInnerClasses-1.kt index 9c81417b698..2665fb2641b 100644 --- a/idea/testData/completion/basic/multifile/JavaInnerClasses.kt +++ b/idea/testData/completion/basic/multifile/JavaInnerClasses-1.kt @@ -2,4 +2,6 @@ fun main(args: Array) { println(R.) } +// JAVA_FILE: JavaInnerClasses.java +// INVOCATION_COUNT: 1 // EXIST: layout \ No newline at end of file diff --git a/idea/testData/completion/basic/multifile/NotImportedJavaClass.kt b/idea/testData/completion/basic/multifile/NotImportedJavaClass-1.kt similarity index 64% rename from idea/testData/completion/basic/multifile/NotImportedJavaClass.kt rename to idea/testData/completion/basic/multifile/NotImportedJavaClass-1.kt index 507aff8cbc3..4acc9604525 100644 --- a/idea/testData/completion/basic/multifile/NotImportedJavaClass.kt +++ b/idea/testData/completion/basic/multifile/NotImportedJavaClass-1.kt @@ -6,5 +6,6 @@ fun test() { } /* KT-3779, KT-2821 */ - +// INVOCATION_COUNT: 2 +// JAVA_FILE: javapackage/Bar.java // EXIST: Bar \ No newline at end of file diff --git a/idea/tests/org/jetbrains/jet/completion/ExpectedCompletionUtils.java b/idea/tests/org/jetbrains/jet/completion/ExpectedCompletionUtils.java index 76dab188d7b..cd3e69975b7 100644 --- a/idea/tests/org/jetbrains/jet/completion/ExpectedCompletionUtils.java +++ b/idea/tests/org/jetbrains/jet/completion/ExpectedCompletionUtils.java @@ -219,8 +219,10 @@ public class ExpectedCompletionUtils { return InTextDirectivesUtils.getPrefixedInt(fileText, WITH_ORDER_PREFIX) != null; } - public static void assertDirectivesValid(String fileText) { - InTextDirectivesUtils.assertHasUnknownPrefixes(fileText, KNOWN_PREFIXES); + public static void assertDirectivesValid(String fileText, List additionalPrefixes) { + List allowedPrefixes = new ArrayList(KNOWN_PREFIXES); + allowedPrefixes.addAll(additionalPrefixes); + InTextDirectivesUtils.assertHasUnknownPrefixes(fileText, allowedPrefixes); } public static void assertContainsRenderedItems(CompletionProposal[] expected, LookupElement[] items, boolean checkOrder) { diff --git a/idea/tests/org/jetbrains/jet/completion/JetCompletionMultiTestBase.java b/idea/tests/org/jetbrains/jet/completion/JetCompletionMultiTestBase.java index f2e82b3c93c..49d085997b1 100644 --- a/idea/tests/org/jetbrains/jet/completion/JetCompletionMultiTestBase.java +++ b/idea/tests/org/jetbrains/jet/completion/JetCompletionMultiTestBase.java @@ -17,47 +17,44 @@ package org.jetbrains.jet.completion; import com.intellij.codeInsight.completion.CompletionType; -import com.intellij.codeInsight.lookup.LookupElement; +import com.intellij.psi.PsiFile; import org.jetbrains.annotations.NotNull; +import org.jetbrains.jet.InTextDirectivesUtils; +import org.jetbrains.jet.plugin.PluginTestCaseBase; import org.jetbrains.jet.plugin.project.TargetPlatform; +import java.io.File; +import java.util.Collections; +import java.util.List; + public abstract class JetCompletionMultiTestBase extends JetFixtureCompletionBaseTestCase { - abstract String[] getFileNameList(); + public static final String JAVA_FILE = "JAVA_FILE:"; - /** - * @param completionLevel {@see CompletionParameters.getInvocationCount()} javadoc - * @param fileNameList - * @throws Exception - */ - protected void doFileTest(int completionLevel, String[] fileNameList) { - try { - myFixture.configureByFiles(fileNameList); - myFixture.complete(completionType(), completionLevel); + protected void doTest() { + doTest(getTestName(false)); + } - String fileText = myFixture.getFile().getText(); - - LookupElement[] lookupElements = myFixture.getLookupElements(); - ExpectedCompletionUtils.assertContainsRenderedItems( - ExpectedCompletionUtils.itemsShouldExist(fileText), lookupElements, ExpectedCompletionUtils.isWithOrder(fileText)); - - ExpectedCompletionUtils.assertNotContainsRenderedItems(ExpectedCompletionUtils.itemsShouldAbsent(fileText), lookupElements); - - Integer itemsNumber = ExpectedCompletionUtils.getExpectedNumber(fileText); - if (itemsNumber != null) { - assertEquals(itemsNumber.intValue(), lookupElements.length); - } - } catch (Exception e) { - throw new AssertionError(e); + @Override + protected void setUpFixture(@NotNull String testPath) { + myFixture.configureByFiles(getFileNameList(testPath)); + PsiFile testFile = myFixture.getFile(); + String text = testFile.getText(); + String javaFilePath = InTextDirectivesUtils.findStringWithPrefixes(text, JAVA_FILE); + if (javaFilePath != null) { + myFixture.configureByFile(javaFilePath); + myFixture.configureByFiles(getFileNameList(testPath)); } } - protected void doFileTest(int completionLevel) { - doFileTest(completionLevel, getFileNameList()); - } - - protected void doFileTest() { - doFileTest(0, getFileNameList()); + @NotNull + private String[] getFileNameList(@NotNull String testPath) { + String baseFile = testPath + "-1.kt"; + String secondaryFile = testPath + "-2.kt"; + if (new File(getTestDataPath() + "/" + secondaryFile).exists()) { + return new String[] {baseFile, secondaryFile}; + } + return new String[] {baseFile}; } @Override @@ -70,4 +67,15 @@ public abstract class JetCompletionMultiTestBase extends JetFixtureCompletionBas protected CompletionType completionType() { return CompletionType.BASIC; } + + @NotNull + @Override + protected List getAdditionalDirectives() { + return Collections.singletonList(JAVA_FILE); + } + + @Override + protected String getTestDataPath() { + return PluginTestCaseBase.getTestDataPathBase() + "/completion/basic/multifile/"; + } } diff --git a/idea/tests/org/jetbrains/jet/completion/JetFixtureCompletionBaseTestCase.java b/idea/tests/org/jetbrains/jet/completion/JetFixtureCompletionBaseTestCase.java index fafd2d182c0..538a55d3306 100644 --- a/idea/tests/org/jetbrains/jet/completion/JetFixtureCompletionBaseTestCase.java +++ b/idea/tests/org/jetbrains/jet/completion/JetFixtureCompletionBaseTestCase.java @@ -23,6 +23,9 @@ import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase; import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.plugin.project.TargetPlatform; +import java.util.Collections; +import java.util.List; + public abstract class JetFixtureCompletionBaseTestCase extends LightCodeInsightFixtureTestCase { private boolean autoCompleteSetting; @@ -60,7 +63,7 @@ public abstract class JetFixtureCompletionBaseTestCase extends LightCodeInsightF protected abstract CompletionType completionType(); public void doTest(String testPath) { - myFixture.configureByFile(testPath); + setUpFixture(testPath); String fileText = myFixture.getFile().getText(); @@ -68,7 +71,7 @@ public abstract class JetFixtureCompletionBaseTestCase extends LightCodeInsightF myFixture.complete(completionType(), invocationCount == null ? 0 : invocationCount); - ExpectedCompletionUtils.assertDirectivesValid(fileText); + ExpectedCompletionUtils.assertDirectivesValid(fileText, getAdditionalDirectives()); ExpectedCompletionUtils.CompletionProposal[] expected = ExpectedCompletionUtils.itemsShouldExist(fileText, getPlatform()); ExpectedCompletionUtils.CompletionProposal[] unexpected = ExpectedCompletionUtils.itemsShouldAbsent(fileText, getPlatform()); @@ -94,4 +97,13 @@ public abstract class JetFixtureCompletionBaseTestCase extends LightCodeInsightF itemsNumber.intValue(), items.length); } } + + @NotNull + protected List getAdditionalDirectives() { + return Collections.emptyList(); + } + + protected void setUpFixture(@NotNull String testPath) { + myFixture.configureByFile(testPath); + } } diff --git a/idea/tests/org/jetbrains/jet/completion/JetMultifileBasicCompletionTest.java b/idea/tests/org/jetbrains/jet/completion/JetMultifileBasicCompletionTest.java index 511e56b8215..9ee56c875cb 100644 --- a/idea/tests/org/jetbrains/jet/completion/JetMultifileBasicCompletionTest.java +++ b/idea/tests/org/jetbrains/jet/completion/JetMultifileBasicCompletionTest.java @@ -16,75 +16,60 @@ package org.jetbrains.jet.completion; -import org.jetbrains.jet.plugin.PluginTestCaseBase; - public class JetMultifileBasicCompletionTest extends JetCompletionMultiTestBase { public void testCompleteImportedFunction() { - doFileTest(); + doTest(); } public void testCompletionOnImportedFunction() { - doFileTest(); + doTest(); } public void testDoNotCompleteWithConstraints() { - doFileTest(); + doTest(); } public void testTopLevelFunction() throws Exception { - doFileTest(); + doTest(); } public void testExtensionFunctionOnImportedFunction() throws Exception { - doFileTest(2); + doTest(); } public void todotestExtensionFunctionOnUnresolved() throws Exception { - doFileTest(); + doTest(); } public void testExtensionOnNullable() throws Exception { - doFileTest(); + doTest(); } public void todotestExtensionProperty() throws Exception { - doFileTest(); + doTest(); } public void testNotImportedJavaClass() throws Exception { - String fileName = getTestName(false); - doFileTest(2, new String[] {fileName + ".kt", "javapackage/Bar.java"}); + doTest(); } public void testInImportedFunctionLiteralParameter() throws Exception { - doFileTest(2); + doTest(); } public void testJavaInnerClasses() throws Exception { - String fileName = getTestName(false); - doFileTest(1, new String[] {fileName + ".kt", fileName + ".java"}); + doTest(); } public void testNotImportedExtensionFunction() throws Exception { - doFileTest(); + doTest(); } public void testExtensionFunction() throws Exception { - doFileTest(2); + doTest(); } public void testNotImportedObject() throws Exception { - doFileTest(); - } - - @Override - protected String getTestDataPath() { - return PluginTestCaseBase.getTestDataPathBase() + "/completion/basic/multifile/"; - } - - @Override - String[] getFileNameList() { - String fileName = getTestName(false); - return new String[]{fileName + "-1.kt", fileName + "-2.kt"}; + doTest(); } }