mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-17 15:50:53 +07:00
451 lines
13 KiB
Java
451 lines
13 KiB
Java
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
|
package com.intellij.codeInsight;
|
|
|
|
import com.intellij.BasicDefaultLightProjectDescriptor;
|
|
import com.intellij.PathJavaTestUtil;
|
|
import com.intellij.application.options.CodeStyle;
|
|
import com.intellij.ide.DataManager;
|
|
import com.intellij.lang.java.JavaLanguage;
|
|
import com.intellij.openapi.actionSystem.ActionManager;
|
|
import com.intellij.openapi.actionSystem.AnAction;
|
|
import com.intellij.openapi.actionSystem.AnActionEvent;
|
|
import com.intellij.openapi.actionSystem.IdeActions;
|
|
import com.intellij.psi.codeStyle.CodeStyleSettings;
|
|
import com.intellij.psi.codeStyle.CommonCodeStyleSettings;
|
|
import com.intellij.testFramework.LightPlatformCodeInsightTestCase;
|
|
import com.intellij.testFramework.LightProjectDescriptor;
|
|
import com.intellij.testFramework.TestDataPath;
|
|
import org.jetbrains.annotations.NotNull;
|
|
|
|
@TestDataPath("$CONTENT_ROOT/testData")
|
|
public abstract class AbstractBasicCompleteStatementTest extends LightPlatformCodeInsightTestCase {
|
|
private CodeStyleSettings mySettings;
|
|
private CommonCodeStyleSettings myJavaSettings;
|
|
|
|
private static String getActionId() {
|
|
return IdeActions.ACTION_EDITOR_COMPLETE_STATEMENT;
|
|
}
|
|
|
|
@NotNull
|
|
@Override
|
|
protected String getTestDataPath() {
|
|
return PathJavaTestUtil.getCommunityJavaTestDataPath() + "/codeInsight/completeStatement/";
|
|
}
|
|
|
|
@Override
|
|
protected void setUp() throws Exception {
|
|
super.setUp();
|
|
mySettings = CodeStyle.getSettings(getProject());
|
|
myJavaSettings = mySettings.getCommonSettings(JavaLanguage.INSTANCE);
|
|
}
|
|
|
|
public void testAddMissingSemicolon() { doTest(); }
|
|
|
|
public void testAddMissingSemicolonToPackageStatement() { doTest(); }
|
|
|
|
public void testAddMissingSemicolonAfterAnonymous() { doTest(); }
|
|
|
|
public void testAddMissingParen() { doTest(); }
|
|
|
|
public void testCompleteIf() { doTest(); }
|
|
|
|
public void testCompleteIfKeyword() { doTest(); }
|
|
|
|
public void testCompleteIfStatementGoesToThen() { doTest(); }
|
|
|
|
public void testAddBracesToIfAndElse() { doTest(); }
|
|
|
|
public void testAddBracesToIfThenOneLiner() { doTest(); }
|
|
|
|
public void testCompleteIfKeywordStatementGoesToThen() { doTest(); }
|
|
|
|
public void testIndentation() { doTest(); }
|
|
|
|
public void testErrorNavigation() { doTest(); }
|
|
|
|
public void testStringLiteral() { doTest(); }
|
|
|
|
public void testCompleteCatch() { doTest(); }
|
|
|
|
public void testCompleteCatchLParen() { doTest(); }
|
|
|
|
public void testAlreadyCompleteCatch() {
|
|
myJavaSettings.BRACE_STYLE = CommonCodeStyleSettings.NEXT_LINE;
|
|
doTest();
|
|
}
|
|
|
|
public void testNoBlockReformat() { doTest(); }
|
|
|
|
public void testCompleteCatchWithExpression() { doTest(); }
|
|
|
|
public void testCompleteCatchBody() { doTest(); }
|
|
|
|
public void testSCR11147() { doTest(); }
|
|
|
|
public void testNoErrors() { doTest(); }
|
|
|
|
public void testThrow() { doTest(); }
|
|
|
|
public void testReturn() { doTest(); }
|
|
|
|
public void testEmptyLine() { doTest(); }
|
|
|
|
public void testBlock() { doTest(); }
|
|
|
|
public void testTwoStatementsInLine() { doTest(); }
|
|
|
|
public void testFor() { doTest(); }
|
|
|
|
public void testEmptyFor() { doTest(); }
|
|
|
|
public void testForEach() { doTest(); }
|
|
|
|
public void testForBlock() { doTest(); }
|
|
|
|
public void testForIncrementExpressionAndBody() { doTest(); }
|
|
|
|
public void testEmptyBeforeReturn() { doTest(); }
|
|
|
|
public void testIf() { doTest(); }
|
|
|
|
public void testIfWithComment() { doTest(); }
|
|
|
|
public void testIfWithoutParentheses() { doTest(); }
|
|
|
|
public void testBeforeStatement() { doTest(); }
|
|
|
|
public void testTry1() { doTest(); }
|
|
|
|
public void testInsideResourceVariable() { doTest(); }
|
|
|
|
public void testBlock1() { doTest(); }
|
|
|
|
public void testAfterFor() { doTest(); }
|
|
|
|
public void testBeforeFor() { doTest(); }
|
|
|
|
public void testForSingleStatementInBody() { doTest(); }
|
|
|
|
public void testForEachSingleStatementInBody() { doTest(); }
|
|
|
|
public void testForEachNextStatementNotIndented() { doTest(); }
|
|
|
|
public void testAtBlockEnd() { doTest(); }
|
|
|
|
public void testForceBlock() { doTest(); }
|
|
|
|
public void testElseIf() { doTest(); }
|
|
|
|
public void testBlockBeforeElseIf() { doTest(); }
|
|
|
|
public void testIncompleteElseIf() { doTest(); }
|
|
|
|
public void testField() { doTest(); }
|
|
|
|
public void testMethod() { doTest(); }
|
|
|
|
public void testLikelyField() { doTest(); }
|
|
|
|
public void testVoidMethodIncomplete() { doTest(); }
|
|
|
|
public void testFieldWithEquals() { doTest(); }
|
|
|
|
public void testClass() { doTest(); }
|
|
|
|
public void testInnerEnumBeforeMethod() { doTest(); }
|
|
|
|
public void testInnerEnumBeforeMethodWithSpace() { doTest(); }
|
|
|
|
public void testCompleteElseIf() { doTest(); }
|
|
|
|
public void testReformatElseIf() { doTest(); }
|
|
|
|
public void testCompleteStringLiteral() { doTest(); }
|
|
|
|
public void testNonAbstractMethodWithSemicolon() { doTest(); }
|
|
|
|
public void testReturnFromNonVoid() { doTest(); }
|
|
|
|
public void testReturnFromVoid() { doTest(); }
|
|
|
|
public void testIncompleteCall() { doTest(); }
|
|
|
|
public void testCompleteCall() { doTest(); }
|
|
|
|
public void testStartNewBlock() { doTest(); }
|
|
|
|
public void testInPrecedingBlanks() { doTest(); }
|
|
|
|
public void testNoBlockReturn() { doTest(); }
|
|
|
|
public void testInComment() { doTest(); }
|
|
|
|
public void testInComment2() { doTest(); }
|
|
|
|
public void testInComment3() { doTest(); }
|
|
|
|
public void testInComment4() { doTest(); }
|
|
|
|
public void testSCR22904() { doTest(); }
|
|
|
|
public void testSCR30227() { doTest(); }
|
|
|
|
public void testFieldWithInitializer() { doTest(); }
|
|
|
|
public void testFieldBeforeAnnotation() { doTest(); }
|
|
|
|
public void testMethodBeforeAnnotation() { doTest(); }
|
|
|
|
public void testMethodBeforeCommentField() { doTest(); }
|
|
|
|
public void testMethodBeforeCommentMethod() { doTest(); }
|
|
|
|
public void testCloseAnnotationWithArrayInitializer() { doTest(); }
|
|
|
|
public void testParenthesized() { doTest(); }
|
|
|
|
public void testCompleteBreak() { doTest(); }
|
|
|
|
public void testNakedWhile() { doTest(); }
|
|
|
|
public void testCompleteIfNextLineBraceStyle() {
|
|
myJavaSettings.BRACE_STYLE = CommonCodeStyleSettings.NEXT_LINE;
|
|
doTest();
|
|
}
|
|
|
|
public void testCompleteIfNextLineBraceStyle2() {
|
|
myJavaSettings.BRACE_STYLE = CommonCodeStyleSettings.NEXT_LINE;
|
|
doTest();
|
|
}
|
|
|
|
public void testSCR36110() { doTest(); }
|
|
|
|
public void testSCR37331() { doTest(); }
|
|
|
|
public void testGenericBeforeVar() { doTest(); }
|
|
|
|
public void testIDEADEV434() {
|
|
mySettings.getCommonSettings(JavaLanguage.INSTANCE).KEEP_SIMPLE_BLOCKS_IN_ONE_LINE = true;
|
|
doTest();
|
|
mySettings.getCommonSettings(JavaLanguage.INSTANCE).KEEP_SIMPLE_BLOCKS_IN_ONE_LINE = false;
|
|
doTest();
|
|
}
|
|
|
|
public void testIDEADEV1093() { doTest(); }
|
|
|
|
public void testIDEADEV1710() { doTest(); }
|
|
|
|
public void testInterfaceMethodSemicolon() { doTest(); }
|
|
|
|
public void testSynchronized() { doTest(); }
|
|
|
|
public void testCdrEndlessLoop() { doTest(); }
|
|
|
|
public void testFollowedByComment() { doTest(); }
|
|
|
|
public void testBraceFixNewLine() { doTest(); }
|
|
|
|
public void testSwitchKeyword() { doTest(); }
|
|
|
|
public void testSwitchKeywordWithCondition() { doTest(); }
|
|
|
|
public void testSwitchBraces() { doTest(); }
|
|
|
|
public void testCaseColon() { doTest(); }
|
|
|
|
public void testMultipleCasesColon() { doTest(); }
|
|
|
|
public void testDefaultColon() { doTest(); }
|
|
|
|
public void testNewInParentheses() { doTest(); }
|
|
|
|
public void testIDEADEV20713() { doTest(); }
|
|
|
|
public void testIDEA22125() { doTest(); }
|
|
|
|
public void testIDEA22385() { doTest(); }
|
|
|
|
public void testIDEADEV40479() { doTest(); }
|
|
|
|
public void testMultilineReturn() { doTest(); }
|
|
|
|
public void testMultilineCall() { doTest(); }
|
|
|
|
public void testVarargCall() { doTest(); }
|
|
|
|
public void testOverloadedCall() { doTest(); }
|
|
|
|
public void testIDEADEV13019() { doTestBracesNextLineStyle(); }
|
|
|
|
public void testIDEA25139() { doTestBracesNextLineStyle(); }
|
|
|
|
public void testClassBracesNextLine() { doTestBracesNextLineStyle(); }
|
|
|
|
public void testBeforeIfRBrace() {
|
|
mySettings.getCommonSettings(JavaLanguage.INSTANCE).KEEP_SIMPLE_BLOCKS_IN_ONE_LINE = true;
|
|
doTest();
|
|
}
|
|
|
|
public void testNoUnnecessaryEmptyLineAtCodeBlock() { doTest(); }
|
|
|
|
public void testForStatementGeneration() { doTest(); }
|
|
|
|
public void testSpaceAfterSemicolon() {
|
|
mySettings.getCommonSettings(JavaLanguage.INSTANCE).SPACE_AFTER_SEMICOLON = true;
|
|
doTest();
|
|
}
|
|
|
|
public void testNoSpaceAfterSemicolon() {
|
|
myJavaSettings.SPACE_AFTER_SEMICOLON = false;
|
|
doTest();
|
|
}
|
|
|
|
public void testForUpdateGeneration() { doTest(); }
|
|
|
|
public void testReformatForHeader() { doTest(); }
|
|
|
|
public void testValidCodeBlock() { doTest(); }
|
|
|
|
public void testValidCodeBlockWithEmptyLineAfterIt() { doTest(); }
|
|
|
|
public void testFromJavadocParameterDescriptionEndToNextParameter() { doTest(); }
|
|
|
|
public void testFromJavadocParameterDescriptionMiddleToNextParameter() { doTest(); }
|
|
|
|
public void testLastJavadocParameterDescription() { doTest(); }
|
|
|
|
public void testLastJavadocParameterDescriptionToReturn() { doTest(); }
|
|
|
|
public void testCompleteMethodCallAtReturn() { doTest(); }
|
|
|
|
public void testGenericMethodBody() { doTest(); }
|
|
|
|
public void testDefaultMethodBody() { doTest(); }
|
|
|
|
public void testStaticInterfaceMethodBody() { doTest(); }
|
|
|
|
public void testPrivateInterfaceMethodBody() { doTest(); }
|
|
|
|
public void testAddMethodBodyFromInsideAnnotation() { doTest(); }
|
|
|
|
public void testArrayInitializerRBracket() { doTest(); }
|
|
|
|
public void testArrayInitializerRBrace() { doTest(); }
|
|
|
|
public void testArrayInitializerRBrace2() { doTest(); }
|
|
|
|
public void testMultiArrayInitializerRBrace() { doTest(); }
|
|
|
|
public void testMultiArrayInitializerRBrace2() { doTest(); }
|
|
|
|
public void testArrayInitializerSeveralLines() { doTest(); }
|
|
|
|
public void testReturnInLambda() { doTest(); }
|
|
|
|
public void testSemicolonAfterLambda() { doTest(); }
|
|
|
|
public void testModuleInfo() { doTest(); }
|
|
|
|
public void testDoubleFieldDeclaration() { doTest(); }
|
|
|
|
public void testAddTernaryColon() { doTest(); }
|
|
|
|
public void testRecord() { doTest(); }
|
|
|
|
public void testRecordWithComponent() { doTest(); }
|
|
|
|
public void testRecordWithComponentNoBody() { doTest(); }
|
|
|
|
public void testClassBeforeRecord() { doTest(); }
|
|
|
|
public void testVarargMethod() { doTest(); }
|
|
|
|
public void testVarargMethod2() { doTest(); }
|
|
|
|
public void testVarargMethod3() { doTest(); }
|
|
|
|
public void testSemicolonAfterSwitchExpression() { doTest(); }
|
|
|
|
public void testOverloadedMethod() { doTest(); }
|
|
|
|
public void testOverloadedMethodNoCaretHint() { doTest(); }
|
|
|
|
public void testOverloadedMethodOneOrThree() { doTest(); }
|
|
public void testOverloadedMethodOneOrThree2() { doTest(); }
|
|
|
|
public void testOverloadedMethodOneOrThree3() { doTest(); }
|
|
|
|
public void testMissingComma() { doTest(); }
|
|
|
|
public void testInInjection() { doTest(); }
|
|
|
|
public void testNativeMethod() {
|
|
doTest();
|
|
}
|
|
|
|
public void testNativePrivateMethod() {
|
|
doTest();
|
|
}
|
|
|
|
public void testReturnSwitchExpression() {
|
|
doTest();
|
|
}
|
|
|
|
public void testReturnSwitchExpression2() {
|
|
doTest();
|
|
}
|
|
|
|
public void testReturnSwitchExpression3() {
|
|
doTest();
|
|
}
|
|
|
|
public void testSwitchAtTheEndOfClass() { doTest(); }
|
|
|
|
public void testAddMissingLambdaBody() { doTest(); }
|
|
|
|
public void testAddMissingLambdaBody2() { doTest(); }
|
|
|
|
public void testBlockInSwitchRule() { doTest(); }
|
|
|
|
public void testSwitchAddArrow() { doTest(); }
|
|
|
|
public void testYieldSemicolon() { doTest(); }
|
|
public void testCommentSmartEnter() { doTest(false); }
|
|
|
|
public void testWhileStatementWithCondition() { doTest(); }
|
|
|
|
@Override
|
|
protected @NotNull LightProjectDescriptor getProjectDescriptor() {
|
|
return new BasicDefaultLightProjectDescriptor();
|
|
}
|
|
|
|
private void doTestBracesNextLineStyle() {
|
|
myJavaSettings.BRACE_STYLE = CommonCodeStyleSettings.NEXT_LINE;
|
|
myJavaSettings.METHOD_BRACE_STYLE = CommonCodeStyleSettings.NEXT_LINE;
|
|
myJavaSettings.CLASS_BRACE_STYLE = CommonCodeStyleSettings.NEXT_LINE;
|
|
doTest();
|
|
}
|
|
|
|
private void doTest() {
|
|
doTest(true);
|
|
}
|
|
|
|
private void doTest(boolean ignoreTrailingSpaces) {
|
|
String name = getTestName(false);
|
|
doFileTest(name + ".java", name + "_after.java", ignoreTrailingSpaces);
|
|
}
|
|
|
|
protected void doFileTest(String filePathBefore, String filePathAfter, boolean ignoreTrailingSpaces) {
|
|
configureByFile(filePathBefore);
|
|
invokeAction();
|
|
checkResultByFile(null, filePathAfter, ignoreTrailingSpaces);
|
|
}
|
|
|
|
private static void invokeAction() {
|
|
final String actionId = getActionId();
|
|
final AnAction action = ActionManager.getInstance().getAction(actionId);
|
|
//noinspection HardCodedStringLiteral
|
|
assertNotNull("Can find registered action with id=" + actionId, action);
|
|
action.actionPerformed(AnActionEvent.createFromAnAction(action, null, "", DataManager.getInstance().getDataContext()));
|
|
}
|
|
} |