Files
openide/java/java-frontback-tests/testSrc/com/intellij/codeInsight/AbstractBasicCompleteStatementTest.java
Mikhail Pyltsin 76d10b31f3 [java-rd] IDEA-322563 Improve editing experience in Remote Dev for Java
- fix while completion

GitOrigin-RevId: 40827f77037557eab988d33d8170bd4446b8478a
2023-09-18 23:01:45 +00:00

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()));
}
}