blob: 1fdb13084a57bcef3d3754bd1bbfec013aa5d206 [file] [log] [blame]
package com.intellij.codeInsight.completion;
import com.intellij.JavaTestUtil;
import com.intellij.lang.StdLanguages;
import com.intellij.psi.*;
import com.intellij.psi.impl.source.resolve.reference.PsiReferenceRegistrarImpl;
import com.intellij.psi.impl.source.resolve.reference.ReferenceProvidersRegistry;
import com.intellij.util.ProcessingContext;
import org.jetbrains.annotations.NotNull;
/**
* @author Maxim.Mossienko
*/
public class WordCompletionTest extends CompletionTestCase {
private static final String BASE_PATH = "/codeInsight/completion/word/";
@Override
protected String getTestDataPath() {
return JavaTestUtil.getJavaTestDataPath();
}
public void testKeyWordCompletion() throws Exception {
configureByFile(BASE_PATH + "1.txt");
checkResultByFile(BASE_PATH + "1_after.txt");
configureByFile(BASE_PATH + "1.properties");
checkResultByFile(BASE_PATH + "1_after.properties");
configureByFile(BASE_PATH + "1.xml");
checkResultByFile(BASE_PATH + "1_after.xml");
configureByFile(BASE_PATH + "2.xml");
configureByFile(BASE_PATH + "2_after.xml");
}
public void testNoWordCompletionForNonSoftReference() throws Throwable {
final PsiReferenceProvider softProvider = new PsiReferenceProvider() {
@Override
@NotNull
public PsiReference[] getReferencesByElement(@NotNull PsiElement element, @NotNull final ProcessingContext context) {
return new PsiReference[]{new PsiReferenceBase<PsiElement>(element, true) {
@Override
public PsiElement resolve() {
return null;
}
@Override
@NotNull
public Object[] getVariants() {
return new Object[]{"MySoftVariant"};
}
}};
}
};
final PsiReferenceProvider hardProvider = new PsiReferenceProvider() {
@Override
@NotNull
public PsiReference[] getReferencesByElement(@NotNull PsiElement element, @NotNull final ProcessingContext context) {
return new PsiReference[]{new PsiReferenceBase<PsiElement>(element, false) {
@Override
public PsiElement resolve() {
return null;
}
@Override
@NotNull
public Object[] getVariants() {
return new Object[]{"MyHardVariant"};
}
}};
}
};
PsiReferenceRegistrarImpl registrar =
(PsiReferenceRegistrarImpl)ReferenceProvidersRegistry.getInstance().getRegistrar(StdLanguages.JAVA);
try {
registrar.registerReferenceProvider(PsiLiteralExpression.class, softProvider);
registrar.registerReferenceProvider(PsiLiteralExpression.class, hardProvider);
configureByFile(BASE_PATH + "3.java");
checkResultByFile(BASE_PATH + "3_after.java");
}
finally {
registrar.unregisterReferenceProvider(PsiLiteralExpression.class, softProvider);
registrar.unregisterReferenceProvider(PsiLiteralExpression.class, hardProvider);
}
}
public void testInJavaLiterals() throws Exception {
configureByFile(BASE_PATH + "InJavaLiterals.java");
checkResultByFile(BASE_PATH + "InJavaLiterals_after.java");
}
public void testComments() throws Throwable {
configureByFile(BASE_PATH + "4.java");
checkResultByFile(BASE_PATH + "4_after.java");
}
public void testSpaceInComment() throws Throwable {
configureByFile(BASE_PATH + "SpaceInComment.java");
checkResultByFile(BASE_PATH + "SpaceInComment.java");
}
public void testTextInComment() throws Throwable {
configureByFile(BASE_PATH + "TextInComment.java");
checkResultByFile(BASE_PATH + "TextInComment_after.java");
}
public void testDollarsInPrefix() throws Throwable {
configureByFile(BASE_PATH + getTestName(false) + ".txt");
checkResultByFile(BASE_PATH + getTestName(false) + "_after.txt");
}
public void testCompleteStringLiteralCopy() throws Throwable {
configureByFile(BASE_PATH + getTestName(false) + ".java");
checkResultByFile(BASE_PATH + getTestName(false) + "_after.java");
}
}