Use directive configuring in resolve reference tests

This commit is contained in:
Nikolay Krasko
2013-07-10 21:29:24 +04:00
parent 68bd7405ff
commit 970586bfdd
7 changed files with 35 additions and 16 deletions
@@ -74,8 +74,12 @@ public final class InTextDirectivesUtils {
if (strings.isEmpty()) { if (strings.isEmpty()) {
return null; return null;
} }
assert strings.size() == 1 : "There is more than one string with given prefixes " +
Arrays.toString(prefixes) + ". Use findListWithPrefixes() instead."; if (strings.size() != 1) {
throw new IllegalStateException("There is more than one string with given prefixes " +
Arrays.toString(prefixes) + ". Use findListWithPrefixes() instead.");
}
return strings.get(0); return strings.get(0);
} }
+2
View File
@@ -1,3 +1,5 @@
open class Test open class Test
class SomeTest : <caret>Test() class SomeTest : <caret>Test()
// REF: (<root>).Test
@@ -3,3 +3,5 @@ package test1.test2
class Some() class Some()
val test : <caret>test1.test2.Some = Some() val test : <caret>test1.test2.Some = Some()
// REF: test1
+2
View File
@@ -1 +1,3 @@
val c = javax.swing.SwingUtilities.<caret>invokeLater { } val c = javax.swing.SwingUtilities.<caret>invokeLater { }
// REF: (in javax.swing.SwingUtilities).invokeLater(Runnable)
+2
View File
@@ -1 +1,3 @@
val c = java.util.<caret>Comparator {(x: Int, y: Int) -> 1} val c = java.util.<caret>Comparator {(x: Int, y: Int) -> 1}
// REF: (java.util).Comparator
@@ -1 +1,3 @@
val c = java.util.<caret>Comparator<Int> { x, y -> 1 } val c = java.util.<caret>Comparator<Int> { x, y -> 1 }
// REF: (java.util).Comparator
@@ -25,7 +25,8 @@ import com.intellij.psi.PsiReference;
import com.intellij.psi.ResolveResult; import com.intellij.psi.ResolveResult;
import com.intellij.testFramework.LightCodeInsightTestCase; import com.intellij.testFramework.LightCodeInsightTestCase;
import junit.framework.Assert; import junit.framework.Assert;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.InTextDirectivesUtils;
import org.jetbrains.jet.plugin.PluginTestCaseBase; import org.jetbrains.jet.plugin.PluginTestCaseBase;
import org.jetbrains.jet.testing.ReferenceUtils; import org.jetbrains.jet.testing.ReferenceUtils;
@@ -43,41 +44,44 @@ public class ResolveBaseTest extends LightCodeInsightTestCase {
} }
public void testResolveClass() throws Exception { public void testResolveClass() throws Exception {
doSingleResolveTest("(<root>).Test"); doSingleResolveTest();
} }
public void testResolvePackageInProperty() throws Exception { public void testResolvePackageInProperty() throws Exception {
doSingleResolveTest("test1"); doSingleResolveTest();
} }
public void testSamConstructor() throws Exception { public void testSamConstructor() throws Exception {
doSingleResolveTest("(java.util).Comparator"); doSingleResolveTest();
} }
public void testSamConstructorTypeArguments() throws Exception { public void testSamConstructorTypeArguments() throws Exception {
doSingleResolveTest("(java.util).Comparator"); doSingleResolveTest();
} }
public void testSamAdapter() throws Exception { public void testSamAdapter() throws Exception {
doSingleResolveTest("(in javax.swing.SwingUtilities).invokeLater(Runnable)"); doSingleResolveTest();
} }
public void testSeveralOverrides() throws Exception { public void testSeveralOverrides() throws Exception {
doMultiResolveTest(); doMultiResolveTest();
} }
protected void doSingleResolveTest(@Nullable String referenceToString) throws Exception { protected void doSingleResolveTest() throws Exception {
String testName = getTestName(false); String testName = getTestName(false);
configureByFile(testName + ".kt"); configureByFile(testName + ".kt");
String referenceToString = InTextDirectivesUtils.findStringWithPrefixes(getFile().getText(), "REF:");
Assert.assertNotNull("Test data wasn't found, use \"// REF: \" directive", referenceToString);
int offset = getEditor().getCaretModel().getOffset(); int offset = getEditor().getCaretModel().getOffset();
PsiReference psiReference = getFile().findReferenceAt(offset); PsiReference psiReference = getFile().findReferenceAt(offset);
if (psiReference != null) { if (psiReference != null) {
PsiElement resolvedTo = psiReference.resolve(); PsiElement resolvedTo = psiReference.resolve();
if (resolvedTo != null) { if (resolvedTo != null) {
String resolvedToElementStr = ReferenceUtils.renderAsGotoImplementation(resolvedTo); String resolvedToElementStr = ReferenceUtils.renderAsGotoImplementation(resolvedTo);
String notEqualMessage = String.format("Found reference to '%s', but '%s' was expected", resolvedToElementStr, String notEqualMessage = String.format("Found reference to '%s', but '%s' was expected",
referenceToString != null ? referenceToString : "<null>"); resolvedToElementStr, referenceToString);
assertEquals(notEqualMessage, referenceToString, resolvedToElementStr); assertEquals(notEqualMessage, referenceToString, resolvedToElementStr);
} }
else { else {
@@ -116,6 +120,7 @@ public class ResolveBaseTest extends LightCodeInsightTestCase {
return PluginTestCaseBase.jdkFromIdeaHome(); return PluginTestCaseBase.jdkFromIdeaHome();
} }
@NotNull
@Override @Override
protected String getTestDataPath() { protected String getTestDataPath() {
return new File(PluginTestCaseBase.getTestDataPathBase(), "/resolve/").getPath() + File.separator; return new File(PluginTestCaseBase.getTestDataPathBase(), "/resolve/").getPath() + File.separator;