mirror of
https://github.com/JetBrains/intellij-sdk-code-samples.git
synced 2025-07-30 02:07:50 +08:00
Tests for find usages
This commit is contained in:
parent
7b75239b14
commit
56fa68d5dd
@ -11,7 +11,7 @@
|
|||||||
<option name="ALTERNATIVE_JRE_PATH" value="" />
|
<option name="ALTERNATIVE_JRE_PATH" value="" />
|
||||||
<option name="PACKAGE_NAME" value="com.simpleplugin" />
|
<option name="PACKAGE_NAME" value="com.simpleplugin" />
|
||||||
<option name="MAIN_CLASS_NAME" value="com.simpleplugin.SimpleCodeInsightTest" />
|
<option name="MAIN_CLASS_NAME" value="com.simpleplugin.SimpleCodeInsightTest" />
|
||||||
<option name="METHOD_NAME" value="testFolding" />
|
<option name="METHOD_NAME" value="testFindUsages" />
|
||||||
<option name="TEST_OBJECT" value="class" />
|
<option name="TEST_OBJECT" value="class" />
|
||||||
<option name="VM_PARAMETERS" value="-ea -Xbootclasspath/p:../out/classes/production/boot -XX:+HeapDumpOnOutOfMemoryError -Xmx512m -XX:MaxPermSize=320m -Didea.system.path=../test-system -Didea.home.path=../ -Didea.config.path=../test-config -Didea.test.group=ALL_EXCLUDE_DEFINED" />
|
<option name="VM_PARAMETERS" value="-ea -Xbootclasspath/p:../out/classes/production/boot -XX:+HeapDumpOnOutOfMemoryError -Xmx512m -XX:MaxPermSize=320m -Didea.system.path=../test-system -Didea.home.path=../ -Didea.config.path=../test-config -Didea.test.group=ALL_EXCLUDE_DEFINED" />
|
||||||
<option name="PARAMETERS" value="" />
|
<option name="PARAMETERS" value="" />
|
||||||
|
@ -13,13 +13,18 @@ import com.intellij.openapi.vfs.VirtualFile;
|
|||||||
import com.intellij.pom.Navigatable;
|
import com.intellij.pom.Navigatable;
|
||||||
import com.intellij.psi.PsiFile;
|
import com.intellij.psi.PsiFile;
|
||||||
import com.intellij.psi.PsiManager;
|
import com.intellij.psi.PsiManager;
|
||||||
|
import com.intellij.psi.search.FileTypeIndex;
|
||||||
|
import com.intellij.psi.search.GlobalSearchScope;
|
||||||
import com.intellij.util.IncorrectOperationException;
|
import com.intellij.util.IncorrectOperationException;
|
||||||
|
import com.intellij.util.indexing.FileBasedIndex;
|
||||||
import com.simpleplugin.psi.SimpleElementFactory;
|
import com.simpleplugin.psi.SimpleElementFactory;
|
||||||
import com.simpleplugin.psi.SimpleFile;
|
import com.simpleplugin.psi.SimpleFile;
|
||||||
import com.simpleplugin.psi.SimpleProperty;
|
import com.simpleplugin.psi.SimpleProperty;
|
||||||
import com.simpleplugin.psi.SimpleTypes;
|
import com.simpleplugin.psi.SimpleTypes;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
class CreatePropertyQuickFix extends BaseIntentionAction {
|
class CreatePropertyQuickFix extends BaseIntentionAction {
|
||||||
private String key;
|
private String key;
|
||||||
|
|
||||||
@ -49,27 +54,37 @@ class CreatePropertyQuickFix extends BaseIntentionAction {
|
|||||||
ApplicationManager.getApplication().invokeLater(new Runnable() {
|
ApplicationManager.getApplication().invokeLater(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
final FileChooserDescriptor descriptor = FileChooserDescriptorFactory.createSingleFileDescriptor(SimpleFileType.INSTANCE);
|
Collection<VirtualFile> virtualFiles = FileBasedIndex.getInstance().getContainingFiles(FileTypeIndex.NAME, SimpleFileType.INSTANCE,
|
||||||
descriptor.setRoots(project.getBaseDir());
|
GlobalSearchScope.allScope(project));
|
||||||
final VirtualFile file = FileChooser.chooseFile(descriptor, project, null);
|
if (virtualFiles.size() == 1) {
|
||||||
if (file != null) {
|
createProperty(project, virtualFiles.iterator().next());
|
||||||
ApplicationManager.getApplication().runWriteAction(new Runnable() {
|
} else {
|
||||||
@Override
|
final FileChooserDescriptor descriptor = FileChooserDescriptorFactory.createSingleFileDescriptor(SimpleFileType.INSTANCE);
|
||||||
public void run() {
|
descriptor.setRoots(project.getBaseDir());
|
||||||
SimpleFile simpleFile = (SimpleFile) PsiManager.getInstance(project).findFile(file);
|
final VirtualFile file = FileChooser.chooseFile(descriptor, project, null);
|
||||||
ASTNode lastChildNode = simpleFile.getNode().getLastChildNode();
|
if (file != null) {
|
||||||
if (lastChildNode != null && !lastChildNode.getElementType().equals(SimpleTypes.CRLF)) {
|
createProperty(project, file);
|
||||||
simpleFile.getNode().addChild(SimpleElementFactory.createCRLF(project).getNode());
|
}
|
||||||
}
|
|
||||||
SimpleProperty property = SimpleElementFactory.createProperty(project, key, "");
|
|
||||||
simpleFile.getNode().addChild(property.getNode());
|
|
||||||
((Navigatable) property.getLastChild().getNavigationElement()).navigate(true);
|
|
||||||
FileEditorManager.getInstance(project).getSelectedTextEditor().getCaretModel().
|
|
||||||
moveCaretRelatively(2, 0, false, false, false);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void createProperty(final Project project, final VirtualFile file) {
|
||||||
|
ApplicationManager.getApplication().runWriteAction(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
SimpleFile simpleFile = (SimpleFile) PsiManager.getInstance(project).findFile(file);
|
||||||
|
ASTNode lastChildNode = simpleFile.getNode().getLastChildNode();
|
||||||
|
if (lastChildNode != null && !lastChildNode.getElementType().equals(SimpleTypes.CRLF)) {
|
||||||
|
simpleFile.getNode().addChild(SimpleElementFactory.createCRLF(project).getNode());
|
||||||
|
}
|
||||||
|
SimpleProperty property = SimpleElementFactory.createProperty(project, key, "");
|
||||||
|
simpleFile.getNode().addChild(property.getNode());
|
||||||
|
((Navigatable) property.getLastChild().getNavigationElement()).navigate(true);
|
||||||
|
FileEditorManager.getInstance(project).getSelectedTextEditor().getCaretModel().
|
||||||
|
moveCaretRelatively(2, 0, false, false, false);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
5
testData/FindUsagesTestData.java
Normal file
5
testData/FindUsagesTestData.java
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
public class Test {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
System.out.println("simple:website");
|
||||||
|
}
|
||||||
|
}
|
13
testData/FindUsagesTestData.simple
Normal file
13
testData/FindUsagesTestData.simple
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
# You are reading the ".properties" entry.
|
||||||
|
! The exclamation mark can also mark text as comments.
|
||||||
|
<caret>website = http://en.wikipedia.org/
|
||||||
|
|
||||||
|
language = English
|
||||||
|
# The backslash below tells the application to continue reading
|
||||||
|
# the value onto the next line.
|
||||||
|
message = Welcome to \
|
||||||
|
Wikipedia!
|
||||||
|
# Add spaces to the key
|
||||||
|
key\ with\ spaces = This is the value that could be looked up with the key "key with spaces".
|
||||||
|
# Unicode
|
||||||
|
tab : \u0009
|
@ -7,8 +7,12 @@ import com.intellij.psi.PsiElement;
|
|||||||
import com.intellij.psi.codeStyle.CodeStyleManager;
|
import com.intellij.psi.codeStyle.CodeStyleManager;
|
||||||
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
|
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
|
||||||
import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase;
|
import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase;
|
||||||
|
import com.intellij.usageView.UsageInfo;
|
||||||
|
import com.intellij.util.indexing.FileBasedIndex;
|
||||||
import com.simpleplugin.psi.SimpleProperty;
|
import com.simpleplugin.psi.SimpleProperty;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
public class SimpleCodeInsightTest extends LightCodeInsightFixtureTestCase {
|
public class SimpleCodeInsightTest extends LightCodeInsightFixtureTestCase {
|
||||||
@Override
|
@Override
|
||||||
protected String getTestDataPath() {
|
protected String getTestDataPath() {
|
||||||
@ -29,7 +33,6 @@ public class SimpleCodeInsightTest extends LightCodeInsightFixtureTestCase {
|
|||||||
|
|
||||||
public void testAnnotations() {
|
public void testAnnotations() {
|
||||||
myFixture.configureByFiles("AnnotationTest.java", "Example.simple");
|
myFixture.configureByFiles("AnnotationTest.java", "Example.simple");
|
||||||
System.out.println(getProjectDescriptor().getSdk());
|
|
||||||
myFixture.checkHighlighting(false, false, true);
|
myFixture.checkHighlighting(false, false, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -64,4 +67,9 @@ public class SimpleCodeInsightTest extends LightCodeInsightFixtureTestCase {
|
|||||||
commentAction.actionPerformedImpl(getProject(), myFixture.getEditor());
|
commentAction.actionPerformedImpl(getProject(), myFixture.getEditor());
|
||||||
myFixture.checkResult("website = http://en.wikipedia.org/");
|
myFixture.checkResult("website = http://en.wikipedia.org/");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testFindUsages() {
|
||||||
|
Collection<UsageInfo> usageInfos = myFixture.testFindUsages("FindUsagesTestData.simple", "FindUsagesTestData.java");
|
||||||
|
assertEquals(1, usageInfos.size());
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user