Refactor multi-reference tests
This commit is contained in:
@@ -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
|
||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user