Refactor multi-reference tests

This commit is contained in:
Nikolay Krasko
2013-07-11 16:05:27 +04:00
parent 970586bfdd
commit cb19450d8d
3 changed files with 40 additions and 18 deletions
@@ -3,6 +3,8 @@ package ctrl_click
fun IntArray(vararg content : Int) : IntArray = content fun IntArray(vararg content : Int) : IntArray = content
fun <T> array(vararg t : T) : Array<T> = t fun <T> array(vararg t : T) : Array<T> = t
fun main(args : ArrayList<String>) { fun main(args : Array<String>) {
var a = <caret>IntArray(array(1, 2, 3)) var a = <caret>IntArray(array(1, 2, 3))
} }
// REF: (jet).IntArray
+5 -1
View File
@@ -12,4 +12,8 @@ trait C : A, B {
fun test(c: C) { fun test(c: C) {
c.<caret>foo() c.<caret>foo()
} }
// MULTIRESOLVE
// REF: (in A).foo()
// REF: (in B).foo()
@@ -16,6 +16,8 @@
package org.jetbrains.jet.resolve; package org.jetbrains.jet.resolve;
import com.google.common.collect.Lists;
import com.google.common.collect.Ordering;
import com.intellij.ide.startup.impl.StartupManagerImpl; import com.intellij.ide.startup.impl.StartupManagerImpl;
import com.intellij.openapi.projectRoots.Sdk; import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.startup.StartupManager; import com.intellij.openapi.startup.StartupManager;
@@ -31,6 +33,7 @@ import org.jetbrains.jet.plugin.PluginTestCaseBase;
import org.jetbrains.jet.testing.ReferenceUtils; import org.jetbrains.jet.testing.ReferenceUtils;
import java.io.File; import java.io.File;
import java.util.List;
public class ResolveBaseTest extends LightCodeInsightTestCase { public class ResolveBaseTest extends LightCodeInsightTestCase {
@Override @Override
@@ -39,38 +42,47 @@ public class ResolveBaseTest extends LightCodeInsightTestCase {
((StartupManagerImpl) StartupManager.getInstance(getProject())).runPostStartupActivities(); ((StartupManagerImpl) StartupManager.getInstance(getProject())).runPostStartupActivities();
} }
public void testMultiResolve() throws Exception { public void testCtrlClickResolve() throws Exception {
doMultiResolveTest(); doTest();
} }
public void testResolveClass() throws Exception { public void testResolveClass() throws Exception {
doSingleResolveTest(); doTest();
} }
public void testResolvePackageInProperty() throws Exception { public void testResolvePackageInProperty() throws Exception {
doSingleResolveTest(); doTest();
} }
public void testSamConstructor() throws Exception { public void testSamConstructor() throws Exception {
doSingleResolveTest(); doTest();
} }
public void testSamConstructorTypeArguments() throws Exception { public void testSamConstructorTypeArguments() throws Exception {
doSingleResolveTest(); doTest();
} }
public void testSamAdapter() throws Exception { public void testSamAdapter() throws Exception {
doSingleResolveTest(); doTest();
} }
public void testSeveralOverrides() throws Exception { public void testSeveralOverrides() throws Exception {
doMultiResolveTest(); doTest();
} }
protected void doSingleResolveTest() throws Exception { protected void doTest() {
String testName = getTestName(false); String testName = getTestName(false);
configureByFile(testName + ".kt"); configureByFile(testName + ".kt");
if (InTextDirectivesUtils.isDirectiveDefined(getFile().getText(), "MULTIRESOLVE")) {
doMultiResolveTest();
}
else {
doSingleResolveTest();
}
}
protected static void doSingleResolveTest() {
String referenceToString = InTextDirectivesUtils.findStringWithPrefixes(getFile().getText(), "REF:"); String referenceToString = InTextDirectivesUtils.findStringWithPrefixes(getFile().getText(), "REF:");
Assert.assertNotNull("Test data wasn't found, use \"// REF: \" directive", referenceToString); Assert.assertNotNull("Test data wasn't found, use \"// REF: \" directive", referenceToString);
@@ -96,9 +108,8 @@ public class ResolveBaseTest extends LightCodeInsightTestCase {
} }
} }
protected void doMultiResolveTest() throws Exception { protected static void doMultiResolveTest() {
String testName = getTestName(false); List<String> expectedReferences = InTextDirectivesUtils.findListWithPrefixes(getFile().getText(), "REF:");
configureByFile(testName + ".kt");
PsiReference psiReference = PsiReference psiReference =
getFile().findReferenceAt(getEditor().getCaretModel().getOffset()); getFile().findReferenceAt(getEditor().getCaretModel().getOffset());
@@ -107,12 +118,17 @@ public class ResolveBaseTest extends LightCodeInsightTestCase {
PsiPolyVariantReference variantReference = (PsiPolyVariantReference) psiReference; PsiPolyVariantReference variantReference = (PsiPolyVariantReference) psiReference;
PsiElement element = variantReference.resolve();
ResolveResult[] results = variantReference.multiResolve(true); ResolveResult[] results = variantReference.multiResolve(true);
List<String> actualResolvedTo = Lists.newArrayList();
for (ResolveResult result : results) { for (ResolveResult result : results) {
assertNotNull(result); PsiElement resolvedToElement = result.getElement();
assertNotNull(resolvedToElement);
actualResolvedTo.add(ReferenceUtils.renderAsGotoImplementation(resolvedToElement));
} }
assertTrue("Nothing resolved by reference '" + psiReference.getElement().getText() + "'.", element != null || results.length > 0);
assertOrderedEquals(Ordering.natural().sortedCopy(actualResolvedTo), Ordering.natural().sortedCopy(expectedReferences));
} }
@Override @Override