Upgrade BuiltInsReferenceResolverTest

This commit is contained in:
Pavel V. Talanov
2015-12-10 17:12:26 +03:00
parent ef134ffb1b
commit ddde372fad
10 changed files with 74 additions and 47 deletions
+4 -2
View File
@@ -1,2 +1,4 @@
var x : <ref>Any? var x : <caret>Any?
//kotlin/Any.kt:Any // BINARY: kotlin/Any.kotlin_class
// SRC: kotlin/Any.kt
// TARGET: (kotlin).Any
+4 -2
View File
@@ -1,2 +1,4 @@
val empty = IntRange.<ref>EMPTY val empty = IntRange.<caret>EMPTY
//kotlin/Ranges.kt:EMPTY // BINARY: kotlin/IntRange.class
// SRC: kotlin/Ranges.kt
// TARGET: (in kotlin.IntRange.Companion).EMPTY
+4 -2
View File
@@ -1,2 +1,4 @@
val x = 5.<ref>equals(5) val x = 5.<caret>equals(5)
//kotlin/Any.kt:equals // BINARY: kotlin/Any.kotlin_class
// SRC: kotlin/Any.kt
// TARGET: (in kotlin.Any).equals(Any?)
+4 -2
View File
@@ -1,2 +1,4 @@
val x : <ref>Int? val x : <caret>Int?
//kotlin/Primitives.kt:Int // BINARY: kotlin/Int.kotlin_class
// SRC: kotlin/Primitives.kt
// TARGET: (kotlin).Int
+4 -2
View File
@@ -1,2 +1,4 @@
val ia = <ref>IntArray(4) val ia = <caret>IntArray(4)
//kotlin/Arrays.kt:IntArray // BINARY: kotlin/IntArray.kotlin_class
// SRC: kotlin/Arrays.kt
// TARGET: (in kotlin.IntArray).IntArray(Int)
+4 -2
View File
@@ -1,2 +1,4 @@
var x : <ref>Nothing var x : <caret>Nothing
//kotlin/Nothing.kt:Nothing // BINARY: kotlin/Nothing.kotlin_class
// SRC: kotlin/Nothing.kt
// TARGET: (kotlin).Nothing
+4 -2
View File
@@ -1,2 +1,4 @@
val x = 2.0 <ref>* 3.0 val x = 2.0 <caret>* 3.0
//kotlin/Primitives.kt:times // BINARY: kotlin/Double.kotlin_class
// SRC: kotlin/Primitives.kt
// TARGET: (in kotlin.Double).times(Double)
+4 -2
View File
@@ -1,2 +1,4 @@
val x = 5.<ref>toString() val x = 5.<caret>toString()
//kotlin/Any.kt:toString // BINARY: kotlin/Any.kotlin_class
// SRC: kotlin/Any.kt
// TARGET: (in kotlin.Any).toString()
+4 -2
View File
@@ -1,2 +1,4 @@
var x : <ref>Unit? var x : <caret>Unit?
//kotlin/Unit.kt:Unit // BINARY: kotlin/Unit.class
// SRC: kotlin/Unit.kt
// TARGET: (kotlin).Unit
@@ -16,37 +16,31 @@
package org.jetbrains.kotlin.idea.references; package org.jetbrains.kotlin.idea.references;
import com.intellij.openapi.vfs.newvfs.impl.VfsRootAccess; import com.intellij.psi.PsiDirectory;
import com.intellij.psi.*; import com.intellij.psi.PsiElement;
import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.PsiFile;
import com.intellij.testFramework.ResolveTestCase; import com.intellij.psi.PsiPolyVariantReference;
import com.intellij.testFramework.LightProjectDescriptor;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.builtins.DefaultBuiltIns; import org.jetbrains.kotlin.builtins.DefaultBuiltIns;
import org.jetbrains.kotlin.descriptors.ClassDescriptor; import org.jetbrains.kotlin.descriptors.ClassDescriptor;
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor; import org.jetbrains.kotlin.descriptors.DeclarationDescriptor;
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor; import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor;
import org.jetbrains.kotlin.descriptors.impl.DeclarationDescriptorVisitorEmptyBodies; import org.jetbrains.kotlin.descriptors.impl.DeclarationDescriptorVisitorEmptyBodies;
import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde; import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde;
import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase;
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase; import org.jetbrains.kotlin.idea.test.PluginTestCaseBase;
import org.jetbrains.kotlin.test.KotlinTestUtils; import org.jetbrains.kotlin.idea.test.ProjectDescriptorWithStdlibSources;
import org.jetbrains.kotlin.resolve.DescriptorUtils; import org.jetbrains.kotlin.resolve.DescriptorUtils;
import org.jetbrains.kotlin.test.InTextDirectivesUtils;
import org.jetbrains.kotlin.test.ReferenceUtils;
import org.junit.Assert;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
public class BuiltInsReferenceResolverTest extends ResolveTestCase { public class BuiltInsReferenceResolverTest extends KotlinLightCodeInsightFixtureTestCase {
@Override
protected void setUp() throws Exception {
super.setUp();
VfsRootAccess.allowRootAccess(KotlinTestUtils.getHomeDirectory());
}
@Override
protected void tearDown() throws Exception {
VfsRootAccess.disallowRootAccess(KotlinTestUtils.getHomeDirectory());
super.tearDown();
}
public void testAny() throws Exception { public void testAny() throws Exception {
doTest(); doTest();
} }
@@ -85,7 +79,7 @@ public class BuiltInsReferenceResolverTest extends ResolveTestCase {
public void testAllReferencesResolved() { public void testAllReferencesResolved() {
for (DeclarationDescriptor descriptor : getAllStandardDescriptors()) { for (DeclarationDescriptor descriptor : getAllStandardDescriptors()) {
assertNotNull("Can't resolve " + descriptor, DescriptorToSourceUtilsIde.INSTANCE$.getAnyDeclaration(getProject(), descriptor)); assertNotNull("Can't resolve " + descriptor, DescriptorToSourceUtilsIde.INSTANCE.getAnyDeclaration(getProject(), descriptor));
} }
} }
@@ -99,7 +93,8 @@ public class BuiltInsReferenceResolverTest extends ResolveTestCase {
@Override @Override
public Void visitClassDescriptor(ClassDescriptor descriptor, Void data) { public Void visitClassDescriptor(ClassDescriptor descriptor, Void data) {
descriptors.add(descriptor); descriptors.add(descriptor);
for (DeclarationDescriptor classMember : DescriptorUtils.getAllDescriptors(descriptor.getDefaultType().getMemberScope())) { for (DeclarationDescriptor classMember : DescriptorUtils
.getAllDescriptors(descriptor.getDefaultType().getMemberScope())) {
classMember.acceptVoid(this); classMember.acceptVoid(this);
} }
return null; return null;
@@ -117,27 +112,41 @@ public class BuiltInsReferenceResolverTest extends ResolveTestCase {
} }
private void doTest() throws Exception { private void doTest() throws Exception {
PsiPolyVariantReference reference = (PsiPolyVariantReference) configureByFile(getTestName(true) + ".kt"); PsiPolyVariantReference reference = (PsiPolyVariantReference) myFixture.getReferenceAtCaretPosition(getTestName(true) + ".kt");
assert reference != null;
PsiElement resolved = reference.resolve(); PsiElement resolved = reference.resolve();
assertNotNull(resolved); assertNotNull(resolved);
assertEquals(1, reference.multiResolve(false).length); assertEquals(1, reference.multiResolve(false).length);
List<PsiComment> comments = PsiTreeUtil.getChildrenOfTypeAsList(getFile(), PsiComment.class); String text = myFixture.getFile().getText();
String[] expectedTarget = comments.get(comments.size() - 1).getText().substring(2).split(":"); String expectedBinaryFile = InTextDirectivesUtils.findStringWithPrefixes(text, "// BINARY:");
assertEquals(2, expectedTarget.length); String expectedSourceFile = InTextDirectivesUtils.findStringWithPrefixes(text, "// SRC:");
String expectedFile = expectedTarget[0]; String expectedTarget = InTextDirectivesUtils.findStringWithPrefixes(text, "// TARGET:");
String expectedName = expectedTarget[1];
assertEquals(expectedBinaryFile, getFileWithDir(resolved));
assertEquals(expectedTarget, ReferenceUtils.renderAsGotoImplementation(resolved));
PsiElement srcElement = resolved.getNavigationElement();
Assert.assertNotEquals(srcElement, resolved);
assertEquals(expectedSourceFile, getFileWithDir(srcElement));
assertEquals(expectedTarget, ReferenceUtils.renderAsGotoImplementation(srcElement));
}
@NotNull
private static String getFileWithDir(@NotNull PsiElement resolved) {
PsiFile targetFile = resolved.getContainingFile(); PsiFile targetFile = resolved.getContainingFile();
PsiDirectory targetDir = targetFile.getParent(); PsiDirectory targetDir = targetFile.getParent();
assertNotNull(targetDir); assertNotNull(targetDir);
assertEquals(expectedFile, targetDir.getName() + "/" + targetFile.getName()); return targetDir.getName() + "/" + targetFile.getName();
assertInstanceOf(resolved, PsiNamedElement.class);
assertEquals(expectedName, ((PsiNamedElement) resolved).getName());
} }
@Override @Override
protected String getTestDataPath() { protected String getTestDataPath() {
return PluginTestCaseBase.getTestDataPathBase() + "/resolve/builtins/"; return PluginTestCaseBase.getTestDataPathBase() + "/resolve/builtins/";
} }
@NotNull
@Override
protected LightProjectDescriptor getProjectDescriptor() {
return ProjectDescriptorWithStdlibSources.INSTANCE;
}
} }