mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[java-tests] Inline introduce variable in property tests
GitOrigin-RevId: 77af7b2ef7e15a13bd0d09a22e21f1fce3237cc9
This commit is contained in:
committed by
intellij-monorepo-bot
parent
6958c18760
commit
fce543ac60
@@ -1,10 +1,15 @@
|
||||
// Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package com.intellij.java.propertyBased;
|
||||
|
||||
import com.intellij.codeInsight.template.impl.TemplateManagerImpl;
|
||||
import com.intellij.codeInsight.template.impl.TemplateState;
|
||||
import com.intellij.java.refactoring.InplaceIntroduceVariableTest;
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.fileEditor.FileEditorManager;
|
||||
import com.intellij.openapi.fileEditor.OpenFileDescriptor;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Disposer;
|
||||
import com.intellij.openapi.util.NlsSafe;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.psi.*;
|
||||
@@ -15,12 +20,16 @@ import com.intellij.refactoring.introduceVariable.IntroduceVariableSettings;
|
||||
import com.intellij.refactoring.ui.TypeSelectorManagerImpl;
|
||||
import com.intellij.refactoring.util.CommonRefactoringUtil;
|
||||
import com.intellij.testFramework.propertyBased.ActionOnFile;
|
||||
import com.intellij.testFramework.propertyBased.RandomActivityInterceptor;
|
||||
import com.intellij.ui.UiInterceptors;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jetCheck.Generator;
|
||||
import org.jetbrains.jetCheck.ImperativeCommand;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
|
||||
public class IntroduceVariable extends ActionOnFile {
|
||||
public IntroduceVariable(@NotNull PsiFile file) {
|
||||
super(file);
|
||||
@@ -40,13 +49,39 @@ public class IntroduceVariable extends ActionOnFile {
|
||||
PsiExpression expression = env.generateValue(Generator.sampledFrom(expressions), "Expression");
|
||||
TextRange range = expression.getTextRange();
|
||||
editor.getSelectionModel().setSelection(range.getStartOffset(), range.getEndOffset());
|
||||
if (env.generateValue(Generator.booleans(), "inline")) {
|
||||
introduceVariableInline(env, project, editor, expression);
|
||||
} else {
|
||||
introduceVariableNoInline(env, project, editor, expression);
|
||||
}
|
||||
}
|
||||
|
||||
private static void introduceVariableInline(Environment env, Project project, Editor editor, PsiExpression expression) {
|
||||
var handler = new InplaceIntroduceVariableTest.MyIntroduceVariableHandler();
|
||||
Disposable disposable = Disposer.newDisposable();
|
||||
try {
|
||||
UiInterceptors.register(new RandomActivityInterceptor(env, disposable));
|
||||
TemplateManagerImpl.setTemplateTesting(disposable);
|
||||
handler.invokeImpl(project, expression, editor);
|
||||
TemplateState state = TemplateManagerImpl.getTemplateState(editor);
|
||||
assertNotNull(state);
|
||||
state.gotoEnd(false);
|
||||
}
|
||||
catch (CommonRefactoringUtil.RefactoringErrorHintException ignored) { }
|
||||
finally {
|
||||
Disposer.dispose(disposable);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private static void introduceVariableNoInline(@NotNull Environment env, Project project, Editor editor, PsiExpression expression) {
|
||||
IntroduceVariableBase handler = new MockIntroduceVariableHandler(env.generateValue(Generator.asciiIdentifiers(), "var name"),
|
||||
env.generateValue(Generator.booleans(), "replaceAll"),
|
||||
env.generateValue(Generator.booleans(), "replaceFinal"),
|
||||
env.generateValue(Generator.booleans(), "replaceVar"),
|
||||
env.generateValue(Generator.booleans(), "replaceLValues"));
|
||||
try {
|
||||
handler.invoke(project, expression, editor);
|
||||
handler.invoke(project, expression, editor);
|
||||
}
|
||||
catch (CommonRefactoringUtil.RefactoringErrorHintException ignored) { }
|
||||
}
|
||||
|
||||
+2
-2
@@ -21,7 +21,7 @@ import static org.junit.Assert.fail;
|
||||
* A UI Interceptor which intercepts every known UI component shown and performs random activity within it
|
||||
* logging that activity.
|
||||
*/
|
||||
class RandomActivityInterceptor extends UiInterceptors.UiInterceptor<Object> {
|
||||
public class RandomActivityInterceptor extends UiInterceptors.UiInterceptor<Object> {
|
||||
/**
|
||||
* A sentinel UI component which is activated at dispose to remove the last interceptor
|
||||
* from an interception queue.
|
||||
@@ -29,7 +29,7 @@ class RandomActivityInterceptor extends UiInterceptors.UiInterceptor<Object> {
|
||||
private static final Object SINK = ObjectUtils.sentinel("RandomActivityInterceptor.SINK");
|
||||
private final ImperativeCommand.Environment myEnvironment;
|
||||
|
||||
RandomActivityInterceptor(ImperativeCommand.Environment env, Disposable disposable) {
|
||||
public RandomActivityInterceptor(ImperativeCommand.Environment env, Disposable disposable) {
|
||||
super(Object.class);
|
||||
myEnvironment = env;
|
||||
Disposer.register(disposable, () -> UiInterceptors.tryIntercept(SINK));
|
||||
|
||||
Reference in New Issue
Block a user