diff --git a/java/java-tests/testData/codeInsight/completion/normalSorting/AlphaSortPackages.java b/java/java-tests/testData/codeInsight/completion/normalSorting/AlphaSortPackages.java new file mode 100644 index 000000000000..3cc32c37e9b1 --- /dev/null +++ b/java/java-tests/testData/codeInsight/completion/normalSorting/AlphaSortPackages.java @@ -0,0 +1,6 @@ +class Goo { + { + new Foox + } + +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/CompletionSortingTestCase.java b/java/java-tests/testSrc/com/intellij/codeInsight/completion/CompletionSortingTestCase.java index 04d72e8b3436..940a4b40dbbf 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/CompletionSortingTestCase.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/CompletionSortingTestCase.java @@ -8,6 +8,7 @@ import com.intellij.codeInsight.completion.impl.CompletionServiceImpl; import com.intellij.codeInsight.lookup.LookupElement; import com.intellij.codeInsight.lookup.LookupManager; import com.intellij.codeInsight.lookup.impl.LookupImpl; +import com.intellij.ide.ui.UISettings; import com.intellij.testFramework.TestDataPath; import org.jetbrains.annotations.NonNls; @@ -26,6 +27,7 @@ public abstract class CompletionSortingTestCase extends LightFixtureCompletionTe @Override protected void tearDown() throws Exception { LookupManager.getInstance(getProject()).hideActiveLookup(); + UISettings.getInstance().SORT_LOOKUP_ELEMENTS_LEXICOGRAPHICALLY = false; super.tearDown(); } diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionOrderingTest.groovy b/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionOrderingTest.groovy index 4ce01ee5f6c0..974069e493a1 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionOrderingTest.groovy +++ b/java/java-tests/testSrc/com/intellij/codeInsight/completion/NormalCompletionOrderingTest.groovy @@ -12,6 +12,7 @@ import com.intellij.codeInsight.lookup.impl.LookupImpl import com.intellij.ide.ui.UISettings import com.intellij.psi.PsiClass import com.intellij.psi.PsiMethod +import com.intellij.codeInsight.lookup.LookupElementPresentation public class NormalCompletionOrderingTest extends CompletionSortingTestCase { private static final String BASE_PATH = "/codeInsight/completion/normalSorting"; @@ -251,29 +252,32 @@ public class NormalCompletionOrderingTest extends CompletionSortingTestCase { public void testPreselectMostRelevantInTheMiddleAlpha() { UISettings.getInstance().SORT_LOOKUP_ELEMENTS_LEXICOGRAPHICALLY = true; - try { - myFixture.addClass("package foo; public class Elaaaaaaaaaaaaaaaaaaaa {}"); - invokeCompletion(getTestName(false) + ".java"); - myFixture.completeBasic(); - LookupImpl lookup = getLookup(); - assertPreferredItems(lookup.getList().getSelectedIndex()); - assertEquals("Elaaaaaaaaaaaaaaaaaaaa", lookup.getItems().get(0).getLookupString()); - assertEquals("ELEMENT_A", lookup.getCurrentItem().getLookupString()); - } - finally { - UISettings.getInstance().SORT_LOOKUP_ELEMENTS_LEXICOGRAPHICALLY = false; - } + myFixture.addClass("package foo; public class Elaaaaaaaaaaaaaaaaaaaa {}"); + invokeCompletion(getTestName(false) + ".java"); + myFixture.completeBasic(); + LookupImpl lookup = getLookup(); + assertPreferredItems(lookup.getList().getSelectedIndex()); + assertEquals("Elaaaaaaaaaaaaaaaaaaaa", lookup.getItems().get(0).getLookupString()); + assertEquals("ELEMENT_A", lookup.getCurrentItem().getLookupString()); } public void testReallyAlphaSorting() { UISettings.getInstance().SORT_LOOKUP_ELEMENTS_LEXICOGRAPHICALLY = true; - try { - invokeCompletion(getTestName(false) + ".java"); - assert myFixture.lookupElementStrings.sort() == myFixture.lookupElementStrings + invokeCompletion(getTestName(false) + ".java"); + assert myFixture.lookupElementStrings.sort() == myFixture.lookupElementStrings + } + + public void testAlphaSortPackages() { + UISettings.getInstance().SORT_LOOKUP_ELEMENTS_LEXICOGRAPHICALLY = true + + def pkgs = ['bar', 'foo', 'goo', 'roo', 'zoo'] + for (s in pkgs) { + myFixture.addClass("package $s; public class Foox {}") } - finally { - UISettings.getInstance().SORT_LOOKUP_ELEMENTS_LEXICOGRAPHICALLY = false; + invokeCompletion(getTestName(false) + ".java") + for (i in 0.. items = matchingItems(lookup); Collections.sort(items, new Comparator() { public int compare(LookupElement o1, LookupElement o2) { + if (isAlphaSorted()) { + String invariant = PRESENTATION_INVARIANT.get(o1); + assert invariant != null; + return invariant.compareToIgnoreCase(PRESENTATION_INVARIANT.get(o2)); + } //noinspection unchecked return mySortingWeights.get(o1).compareTo(mySortingWeights.get(o2)); } @@ -175,12 +180,6 @@ public class CompletionLookupArranger extends LookupArranger { } if (isAlphaSorted()) { - Collections.sort(items, new Comparator() { - @Override - public int compare(LookupElement o1, LookupElement o2) { - return o1.getLookupString().compareToIgnoreCase(o2.getLookupString()); - } - }); model.addAll(items); } else { model.addAll(byRelevance);