mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-16 22:51:17 +07:00
380 lines
13 KiB
Java
380 lines
13 KiB
Java
package com.intellij.codeInsight.completion;
|
|
|
|
import com.intellij.JavaTestUtil;
|
|
import com.intellij.codeInsight.lookup.Lookup;
|
|
import com.intellij.codeInsight.lookup.LookupElement;
|
|
import com.intellij.codeInsight.lookup.LookupManager;
|
|
import com.intellij.codeInsight.lookup.impl.LookupManagerImpl;
|
|
import com.intellij.openapi.roots.LanguageLevelProjectExtension;
|
|
import com.intellij.pom.java.LanguageLevel;
|
|
import com.intellij.psi.codeStyle.CodeStyleSettings;
|
|
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
|
|
import com.intellij.psi.statistics.StatisticsManager;
|
|
import com.intellij.psi.statistics.impl.StatisticsManagerImpl;
|
|
import com.intellij.testFramework.LightCodeInsightTestCase;
|
|
import com.intellij.testFramework.TestDataPath;
|
|
|
|
/**
|
|
* Created by IntelliJ IDEA.
|
|
* User: ik
|
|
* Date: 20.08.2003
|
|
* Time: 15:44:18
|
|
* To change this template use Options | File Templates.
|
|
*/
|
|
@TestDataPath("$CONTENT_ROOT/testData")
|
|
public class CompletionStyleTest extends LightCodeInsightTestCase{
|
|
private static final String BASE_PATH = "/codeInsight/completion/style";
|
|
|
|
@Override
|
|
protected void setUp() throws Exception {
|
|
super.setUp();
|
|
((StatisticsManagerImpl)StatisticsManager.getInstance()).clearStatistics();
|
|
}
|
|
|
|
@Override
|
|
protected LanguageLevel getLanguageLevel() {
|
|
return LanguageLevel.JDK_1_6;
|
|
}
|
|
|
|
@Override
|
|
protected String getTestDataPath() {
|
|
return JavaTestUtil.getJavaTestDataPath();
|
|
}
|
|
|
|
public void testGenericParametersReplace() throws Exception{
|
|
final String path = BASE_PATH;
|
|
|
|
configureByFile(path + "/before1.java");
|
|
performSmartCompletion();
|
|
select(Lookup.REPLACE_SELECT_CHAR, 2);
|
|
checkResultByFile(path + "/after1.java");
|
|
}
|
|
|
|
public void testIDEADEV4566() throws Exception {
|
|
configureFromFileText(
|
|
"A.java",
|
|
"public class A {\n" +
|
|
" public static Object createA(String s) {}\n" +
|
|
" public static void foo() {\n" +
|
|
" createA(<caret>);\n" +
|
|
" }\n" +
|
|
"}");
|
|
performSmartCompletion();
|
|
select(Lookup.NORMAL_SELECT_CHAR, 0);
|
|
checkResultByText(
|
|
"public class A {\n" +
|
|
" public static Object createA(String s) {}\n" +
|
|
" public static void foo() {\n" +
|
|
" createA(String.copyValueOf(<caret>));\n" +
|
|
" }\n" +
|
|
"}");
|
|
}
|
|
|
|
public void testIDEADEV5935() throws Exception {
|
|
configureFromFileText("A.java",
|
|
"public class A {\n" +
|
|
" public static void foo(String param1, String param2) {\n" +
|
|
" }\n" +
|
|
"\n" +
|
|
" public static void main(String[] args) {\n" +
|
|
" String param1 = args[0];\n" +
|
|
" String param2 = args[1];\n" +
|
|
" foo(<caret>);\n" +
|
|
" }\n" +
|
|
"}"
|
|
);
|
|
performSmartCompletion();
|
|
select(Lookup.NORMAL_SELECT_CHAR, getSelected());
|
|
checkResultByText(
|
|
"public class A {\n" +
|
|
" public static void foo(String param1, String param2) {\n" +
|
|
" }\n" +
|
|
"\n" +
|
|
" public static void main(String[] args) {\n" +
|
|
" String param1 = args[0];\n" +
|
|
" String param2 = args[1];\n" +
|
|
" foo(param1, <caret>);\n" +
|
|
" }\n" +
|
|
"}"
|
|
);
|
|
}
|
|
|
|
public void testIDEADEV2878() throws Exception {
|
|
configureFromFileText(
|
|
"A.java",
|
|
"class Bar<T> {}\n" +
|
|
"class Foo {\n" +
|
|
"public void createFoo(Bar<?> <caret>)\n" + "}");
|
|
performNormalCompletion();
|
|
checkResultByText(
|
|
"class Bar<T> {}\n" +
|
|
"class Foo {\n" +
|
|
"public void createFoo(Bar<?> bar<caret>)\n" + "}");
|
|
}
|
|
|
|
public void testMethodsParametersStyle1() throws Exception{
|
|
final String path = BASE_PATH;
|
|
|
|
configureByFile(path + "/before3.java");
|
|
performSmartCompletion();
|
|
checkResultByFile(path + "/after3.java");
|
|
}
|
|
|
|
public void testMethodsParametersStyle2() throws Exception{
|
|
final String path = BASE_PATH;
|
|
|
|
configureByFile(path + "/before4.java");
|
|
performSmartCompletion();
|
|
checkResultByFile(path + "/after4.java");
|
|
}
|
|
|
|
public void testKeywordsReplace() throws Exception{
|
|
final String path = BASE_PATH;
|
|
|
|
configureByFile(path + "/before6.java");
|
|
performNormalCompletion();
|
|
select(Lookup.REPLACE_SELECT_CHAR, 3); //equals(), true & false go first
|
|
checkResultByFile(path + "/after6.java");
|
|
}
|
|
|
|
public void testLocalVariablePreselect() throws Exception{
|
|
final String path = BASE_PATH;
|
|
|
|
configureByFile(path + "/before5.java");
|
|
performSmartCompletion();
|
|
assertEquals("xxxx", getSelected().getLookupString());
|
|
}
|
|
|
|
public void testMethodCompletionInsideInlineTags() throws Exception{
|
|
final String path = BASE_PATH;
|
|
|
|
configureByFile(path + "/before7.java");
|
|
performNormalCompletion();
|
|
select(Lookup.REPLACE_SELECT_CHAR, 1);
|
|
checkResultByFile(path + "/after7.java");
|
|
}
|
|
|
|
public void testConstantsCompletion1() throws Exception{
|
|
final String path = BASE_PATH;
|
|
|
|
configureByFile(path + "/before8.java");
|
|
performSmartCompletion();
|
|
select(Lookup.REPLACE_SELECT_CHAR, 0);
|
|
checkResultByFile(path + "/after8.java");
|
|
}
|
|
|
|
public void testConstantsCompletion2() throws Exception{
|
|
final String path = BASE_PATH;
|
|
|
|
configureByFile(path + "/before9.java");
|
|
performSmartCompletion();
|
|
select(Lookup.REPLACE_SELECT_CHAR, 0);
|
|
checkResultByFile(path + "/after9.java");
|
|
}
|
|
|
|
public void testConstantsCompletion3() throws Exception{
|
|
final String path = BASE_PATH;
|
|
|
|
configureByFile(path + "/before10.java");
|
|
performSmartCompletion();
|
|
select(Lookup.REPLACE_SELECT_CHAR, 0);
|
|
checkResultByFile(path + "/after10.java");
|
|
}
|
|
|
|
public void testCaretPositionAfterCompletion1() throws Exception{
|
|
final String path = BASE_PATH;
|
|
|
|
configureByFile(path + "/before11.java");
|
|
performNormalCompletion();
|
|
select(Lookup.NORMAL_SELECT_CHAR, 0);
|
|
checkResultByFile(path + "/after11.java");
|
|
}
|
|
|
|
public void testCaretPositionAfterCompletion2() throws Exception{
|
|
final String path = BASE_PATH;
|
|
|
|
configureByFile(path + "/before12.java");
|
|
performSmartCompletion();
|
|
select(Lookup.NORMAL_SELECT_CHAR, 0);
|
|
checkResultByFile(path + "/after12.java");
|
|
}
|
|
|
|
public void testParensReuse() throws Exception{
|
|
final String path = BASE_PATH;
|
|
|
|
configureByFile(path + "/before13.java");
|
|
performNormalCompletion();
|
|
checkResultByFile(path + "/after13.java");
|
|
}
|
|
|
|
public void testParensInSynchronized() throws Exception{
|
|
CodeStyleSettingsManager.getSettings(getProject()).SPACE_BEFORE_SYNCHRONIZED_PARENTHESES = false;
|
|
CodeStyleSettingsManager.getSettings(getProject()).SPACE_WITHIN_SYNCHRONIZED_PARENTHESES = true;
|
|
final String path = BASE_PATH;
|
|
|
|
configureByFile(path + "/before22.java");
|
|
performNormalCompletion();
|
|
checkResultByFile(path + "/after22.java");
|
|
}
|
|
|
|
public void testMethodReplacementReuseParens1() throws Exception{
|
|
final String path = BASE_PATH;
|
|
|
|
configureByFile(path + "/before15.java");
|
|
performNormalCompletion();
|
|
select(Lookup.REPLACE_SELECT_CHAR, getSelected());
|
|
checkResultByFile(path + "/after15.java");
|
|
}
|
|
|
|
public void testMethodReplacementReuseParens2() throws Exception{
|
|
final String path = BASE_PATH;
|
|
|
|
configureByFile(path + "/before16.java");
|
|
performNormalCompletion();
|
|
select(Lookup.REPLACE_SELECT_CHAR, getSelected());
|
|
checkResultByFile(path + "/after16.java");
|
|
}
|
|
|
|
public void testMethodReplacementReuseParens3() throws Exception{
|
|
final String path = BASE_PATH;
|
|
|
|
configureByFile(path + "/before17.java");
|
|
performNormalCompletion();
|
|
select(Lookup.REPLACE_SELECT_CHAR, getSelected());
|
|
checkResultByFile(path + "/after17.java");
|
|
}
|
|
|
|
public void testCastAfterNew1() throws Exception{
|
|
final String path = BASE_PATH;
|
|
|
|
configureByFile(path + "/before21.java");
|
|
performSmartCompletion();
|
|
checkResultByFile(path + "/after21.java");
|
|
}
|
|
|
|
public void testCastParensStyle1() throws Exception{
|
|
final String path = BASE_PATH;
|
|
CodeStyleSettings styleSettings = CodeStyleSettingsManager.getSettings(getProject());
|
|
final boolean space_within_cast_parentheses = styleSettings.SPACE_WITHIN_CAST_PARENTHESES;
|
|
final boolean space_after_type_cast = styleSettings.SPACE_AFTER_TYPE_CAST;
|
|
|
|
styleSettings.SPACE_WITHIN_CAST_PARENTHESES = true;
|
|
styleSettings.SPACE_AFTER_TYPE_CAST = false;
|
|
configureByFile(path + "/before31.java");
|
|
performSmartCompletion();
|
|
checkResultByFile(path + "/after31.java");
|
|
styleSettings.SPACE_WITHIN_CAST_PARENTHESES = space_within_cast_parentheses;
|
|
styleSettings.SPACE_AFTER_TYPE_CAST = space_after_type_cast;
|
|
}
|
|
|
|
public void testMethodParensStyle2() throws Exception{
|
|
final String path = BASE_PATH;
|
|
CodeStyleSettings styleSettings = CodeStyleSettingsManager.getSettings(getProject());
|
|
final boolean space_before_method_call_parentheses = styleSettings.SPACE_BEFORE_METHOD_CALL_PARENTHESES;
|
|
styleSettings.SPACE_BEFORE_METHOD_CALL_PARENTHESES = true;
|
|
configureByFile(path + "/before32.java");
|
|
performNormalCompletion();
|
|
checkResultByFile(path + "/after32.java");
|
|
styleSettings.SPACE_BEFORE_METHOD_CALL_PARENTHESES = space_before_method_call_parentheses;
|
|
}
|
|
|
|
public void testMethodParensStyle3() throws Exception{
|
|
final String path = BASE_PATH;
|
|
CodeStyleSettings styleSettings = CodeStyleSettingsManager.getSettings(getProject());
|
|
final boolean space_before_method_call_parentheses = styleSettings.SPACE_BEFORE_METHOD_CALL_PARENTHESES;
|
|
final boolean space_within_method_call_parentheses = styleSettings.SPACE_WITHIN_METHOD_CALL_PARENTHESES;
|
|
|
|
styleSettings.SPACE_BEFORE_METHOD_CALL_PARENTHESES = true;
|
|
styleSettings.SPACE_WITHIN_METHOD_CALL_PARENTHESES = true;
|
|
configureByFile(path + "/before32.java");
|
|
performNormalCompletion();
|
|
checkResultByFile(path + "/after32-a.java");
|
|
styleSettings.SPACE_BEFORE_METHOD_CALL_PARENTHESES = space_before_method_call_parentheses;
|
|
styleSettings.SPACE_WITHIN_METHOD_CALL_PARENTHESES = space_within_method_call_parentheses;
|
|
}
|
|
|
|
/*public void testClassNameCompletion1() throws Exception{
|
|
final String path = BASE_PATH;
|
|
configureByFile(path + "/before34.java");
|
|
performClassNameCompletion();
|
|
select('<', getSelected());
|
|
checkResultByFile(path + "/after34.java");
|
|
} */
|
|
|
|
public void testStaticsCompletion1() throws Exception{
|
|
final String path = BASE_PATH;
|
|
configureByFile(path + "/before33.java");
|
|
performSmartCompletion();
|
|
select(Lookup.NORMAL_SELECT_CHAR, getSelected());
|
|
checkResultByFile(path + "/after33.java");
|
|
}
|
|
|
|
public void testStaticsCompletion2() throws Exception{
|
|
final String path = BASE_PATH;
|
|
configureByFile(path + "/before39.java");
|
|
performSmartCompletion();
|
|
select(Lookup.NORMAL_SELECT_CHAR, getSelected());
|
|
checkResultByFile(path + "/after39.java");
|
|
}
|
|
|
|
public void testJavaDocLinkCompletion1() throws Exception{
|
|
final String path = BASE_PATH;
|
|
configureByFile(path + "/before36.java");
|
|
performNormalCompletion();
|
|
select(Lookup.REPLACE_SELECT_CHAR, getSelected());
|
|
checkResultByFile(path + "/after36.java");
|
|
}
|
|
|
|
|
|
public void testGetterNameInInterface() throws Exception{
|
|
final String path = BASE_PATH;
|
|
configureByFile(path + "/before38.java");
|
|
performNormalCompletion();
|
|
checkResultByFile(path + "/after38.java");
|
|
}
|
|
|
|
private void performSmartCompletion(){
|
|
new CodeCompletionHandlerBase(CompletionType.SMART).invokeCompletion(getProject(), getEditor());
|
|
}
|
|
|
|
private void performNormalCompletion(){
|
|
new CodeCompletionHandlerBase(CompletionType.BASIC).invokeCompletion(getProject(), getEditor());
|
|
}
|
|
|
|
private void select(char completionChar, int index){
|
|
((LookupManagerImpl)LookupManager.getInstance(getProject())).forceSelection(completionChar, index);
|
|
}
|
|
|
|
private void select(char completionChar, LookupElement item){
|
|
((LookupManagerImpl)LookupManager.getInstance(getProject())).forceSelection(completionChar, item);
|
|
}
|
|
|
|
private LookupElement getSelected(){
|
|
return LookupManager.getInstance(getProject()).getActiveLookup().getCurrentItem();
|
|
}
|
|
|
|
@Override
|
|
protected void tearDown() throws Exception {
|
|
LookupManager.getInstance(getProject()).hideActiveLookup();
|
|
super.tearDown(); //To change body of overriden methods use Options | File Templates.
|
|
}
|
|
|
|
public void testAfterNew15() throws Exception {
|
|
final LanguageLevelProjectExtension ll = LanguageLevelProjectExtension.getInstance(getProject());
|
|
final LanguageLevel old = ll.getLanguageLevel();
|
|
ll.setLanguageLevel(LanguageLevel.JDK_1_5);
|
|
|
|
try {
|
|
final String path = BASE_PATH;
|
|
configureByFile(path + "/AfterNew15.java");
|
|
performSmartCompletion();
|
|
select('\n', getSelected());
|
|
checkResultByFile(path + "/AfterNew15-out.java");
|
|
}
|
|
finally {
|
|
ll.setLanguageLevel(old);
|
|
}
|
|
}
|
|
|
|
}
|