mirror of
https://github.com/chylex/IntelliJ-IdeaVim.git
synced 2025-07-28 04:59:03 +02:00
77 lines
2.9 KiB
Java
77 lines
2.9 KiB
Java
package org.jetbrains.plugins.ideavim;
|
|
|
|
import com.intellij.openapi.application.PathManager;
|
|
import com.intellij.openapi.editor.Editor;
|
|
import com.intellij.openapi.project.Project;
|
|
import com.intellij.testFramework.LightProjectDescriptor;
|
|
import com.intellij.testFramework.PlatformTestCase;
|
|
import com.intellij.testFramework.UsefulTestCase;
|
|
import com.intellij.testFramework.fixtures.CodeInsightTestFixture;
|
|
import com.intellij.testFramework.fixtures.IdeaProjectTestFixture;
|
|
import com.intellij.testFramework.fixtures.IdeaTestFixtureFactory;
|
|
import com.intellij.testFramework.fixtures.TestFixtureBuilder;
|
|
import com.intellij.testFramework.fixtures.impl.LightTempDirTestFixtureImpl;
|
|
import com.maddyhome.idea.vim.KeyHandler;
|
|
import com.maddyhome.idea.vim.helper.EditorDataContext;
|
|
import com.maddyhome.idea.vim.helper.RunnableHelper;
|
|
import com.maddyhome.idea.vim.option.Options;
|
|
import org.jetbrains.annotations.NotNull;
|
|
|
|
import javax.swing.*;
|
|
import java.util.List;
|
|
|
|
/**
|
|
* @author vlan
|
|
*/
|
|
public abstract class VimTestCase extends UsefulTestCase {
|
|
protected CodeInsightTestFixture myFixture;
|
|
|
|
public VimTestCase() {
|
|
PlatformTestCase.initPlatformLangPrefix();
|
|
}
|
|
|
|
@Override
|
|
protected void setUp() throws Exception {
|
|
super.setUp();
|
|
final IdeaTestFixtureFactory factory = IdeaTestFixtureFactory.getFixtureFactory();
|
|
final LightProjectDescriptor projectDescriptor = LightProjectDescriptor.EMPTY_PROJECT_DESCRIPTOR;
|
|
final TestFixtureBuilder<IdeaProjectTestFixture> fixtureBuilder = factory.createLightFixtureBuilder(projectDescriptor);
|
|
final IdeaProjectTestFixture fixture = fixtureBuilder.getFixture();
|
|
myFixture = IdeaTestFixtureFactory.getFixtureFactory().createCodeInsightFixture(fixture,
|
|
new LightTempDirTestFixtureImpl(true));
|
|
myFixture.setUp();
|
|
myFixture.setTestDataPath(getTestDataPath());
|
|
KeyHandler.getInstance().fullReset(myFixture.getEditor());
|
|
Options.getInstance().resetAllOptions();
|
|
}
|
|
|
|
protected String getTestDataPath() {
|
|
return PathManager.getHomePath() + "/community/plugins/ideavim/testData";
|
|
}
|
|
|
|
@Override
|
|
protected void tearDown() throws Exception {
|
|
myFixture.tearDown();
|
|
myFixture = null;
|
|
super.tearDown();
|
|
}
|
|
|
|
@NotNull
|
|
protected Editor typeTextInFile(@NotNull final List<KeyStroke> keys, @NotNull String fileContents) {
|
|
myFixture.configureByText("a.txt", fileContents);
|
|
final Editor editor = myFixture.getEditor();
|
|
final KeyHandler keyHandler = KeyHandler.getInstance();
|
|
final EditorDataContext dataContext = new EditorDataContext(editor);
|
|
final Project project = myFixture.getProject();
|
|
RunnableHelper.runWriteCommand(project, new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
for (KeyStroke key : keys) {
|
|
keyHandler.handleKey(editor, key, dataContext);
|
|
}
|
|
}
|
|
}, null, null);
|
|
return editor;
|
|
}
|
|
}
|