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 <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))
}
}
// REF: (jet).IntArray
+5 -1
View File
@@ -12,4 +12,8 @@ trait C : A, B {
fun test(c: C) {
c.<caret>foo()
}
}
// MULTIRESOLVE
// REF: (in A).foo()
// REF: (in B).foo()
@@ -16,6 +16,8 @@
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.openapi.projectRoots.Sdk;
import com.intellij.openapi.startup.StartupManager;
@@ -31,6 +33,7 @@ import org.jetbrains.jet.plugin.PluginTestCaseBase;
import org.jetbrains.jet.testing.ReferenceUtils;
import java.io.File;
import java.util.List;
public class ResolveBaseTest extends LightCodeInsightTestCase {
@Override
@@ -39,38 +42,47 @@ public class ResolveBaseTest extends LightCodeInsightTestCase {
((StartupManagerImpl) StartupManager.getInstance(getProject())).runPostStartupActivities();
}
public void testMultiResolve() throws Exception {
doMultiResolveTest();
public void testCtrlClickResolve() throws Exception {
doTest();
}
public void testResolveClass() throws Exception {
doSingleResolveTest();
doTest();
}
public void testResolvePackageInProperty() throws Exception {
doSingleResolveTest();
doTest();
}
public void testSamConstructor() throws Exception {
doSingleResolveTest();
doTest();
}
public void testSamConstructorTypeArguments() throws Exception {
doSingleResolveTest();
doTest();
}
public void testSamAdapter() throws Exception {
doSingleResolveTest();
doTest();
}
public void testSeveralOverrides() throws Exception {
doMultiResolveTest();
doTest();
}
protected void doSingleResolveTest() throws Exception {
protected void doTest() {
String testName = getTestName(false);
configureByFile(testName + ".kt");
if (InTextDirectivesUtils.isDirectiveDefined(getFile().getText(), "MULTIRESOLVE")) {
doMultiResolveTest();
}
else {
doSingleResolveTest();
}
}
protected static void doSingleResolveTest() {
String referenceToString = InTextDirectivesUtils.findStringWithPrefixes(getFile().getText(), "REF:");
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 {
String testName = getTestName(false);
configureByFile(testName + ".kt");
protected static void doMultiResolveTest() {
List<String> expectedReferences = InTextDirectivesUtils.findListWithPrefixes(getFile().getText(), "REF:");
PsiReference psiReference =
getFile().findReferenceAt(getEditor().getCaretModel().getOffset());
@@ -107,12 +118,17 @@ public class ResolveBaseTest extends LightCodeInsightTestCase {
PsiPolyVariantReference variantReference = (PsiPolyVariantReference) psiReference;
PsiElement element = variantReference.resolve();
ResolveResult[] results = variantReference.multiResolve(true);
List<String> actualResolvedTo = Lists.newArrayList();
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