Tests for navigation to property delegates' accessors
This commit is contained in:
@@ -446,7 +446,7 @@ public class GenerateTests {
|
||||
"idea/tests/",
|
||||
"ReferenceResolveTestGenerated",
|
||||
AbstractResolveBaseTest.class,
|
||||
testModel("idea/testData/resolve/references", "doTest")
|
||||
testModel("idea/testData/resolve/references", true, "doTest")
|
||||
);
|
||||
|
||||
generateTest(
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
val x: Int <caret>by Foo()
|
||||
|
||||
class Foo
|
||||
|
||||
fun Foo.get(_this: Any?, p: Any?): Int = 1
|
||||
|
||||
// REF: (for Foo in <root>).get(Any?,Any?)
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
val x: Int <caret>by Foo()
|
||||
|
||||
class Foo {
|
||||
fun get(_this: Any?, p: Any?): Int = 1
|
||||
}
|
||||
|
||||
// REF: (in Foo).get(Any?,Any?)
|
||||
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
var x : Int <caret>by Baz()
|
||||
|
||||
trait Foo {
|
||||
fun get(p1: Any?, p2: Any?): Int = 1
|
||||
}
|
||||
|
||||
trait Bar {
|
||||
fun get(p1: Any?, p2: Any?): Int
|
||||
}
|
||||
|
||||
trait Zoo {
|
||||
fun set(p1: Any?, p2: Any?, p3: Any?)
|
||||
}
|
||||
|
||||
class Baz: Foo, Bar, Zoo
|
||||
|
||||
// MULTIRESOLVE
|
||||
// REF: (in Bar).get(Any?,Any?)
|
||||
// REF: (in Foo).get(Any?,Any?)
|
||||
// REF: (in Zoo).set(Any?,Any?,Any?)
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
var x: Int <caret>by Foo()
|
||||
|
||||
class Foo
|
||||
|
||||
fun Foo.get(_this: Any?, p: Any?): Int = 1
|
||||
fun Foo.set(_this: Any?, p: Any?, val: Any?) {}
|
||||
|
||||
// MULTIRESOLVE
|
||||
// REF: (for Foo in <root>).get(Any?,Any?)
|
||||
// REF: (for Foo in <root>).set(Any?,Any?,Any?)
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
var x: Int <caret>by Foo()
|
||||
|
||||
class Foo {
|
||||
fun get(_this: Any?, p: Any?): Int = 1
|
||||
fun set(_this: Any?, p: Any?, val: Any?) {}
|
||||
}
|
||||
|
||||
// MULTIRESOLVE
|
||||
// REF: (in Foo).get(Any?,Any?)
|
||||
// REF: (in Foo).set(Any?,Any?,Any?)
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
import kotlin.properties.Delegates
|
||||
|
||||
val x: Int <caret>by Delegates.lazy {1}
|
||||
|
||||
// REF: (in kotlin.properties.ReadOnlyProperty).get(R,jet.PropertyMetadata)
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
import kotlin.properties.Delegates
|
||||
|
||||
var x: Int <caret>by Delegates.notNull()
|
||||
|
||||
// MULTIRESOLVE
|
||||
// REF: (in kotlin.properties.ReadWriteProperty).get(R,jet.PropertyMetadata)
|
||||
// REF: (in kotlin.properties.ReadWriteProperty).set(R,jet.PropertyMetadata,T)
|
||||
@@ -0,0 +1,5 @@
|
||||
val foo: Int <caret>by Bar()
|
||||
|
||||
class Bar
|
||||
|
||||
// REF_EMPTY
|
||||
@@ -19,22 +19,22 @@ 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;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiPolyVariantReference;
|
||||
import com.intellij.psi.PsiReference;
|
||||
import com.intellij.psi.ResolveResult;
|
||||
import com.intellij.testFramework.LightCodeInsightTestCase;
|
||||
import com.intellij.testFramework.LightProjectDescriptor;
|
||||
import com.intellij.testFramework.fixtures.LightPlatformCodeInsightFixtureTestCase;
|
||||
import junit.framework.Assert;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.InTextDirectivesUtils;
|
||||
import org.jetbrains.jet.plugin.PluginTestCaseBase;
|
||||
import org.jetbrains.jet.plugin.JetWithJdkAndRuntimeLightProjectDescriptor;
|
||||
import org.jetbrains.jet.testing.ReferenceUtils;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public abstract class AbstractResolveBaseTest extends LightCodeInsightTestCase {
|
||||
public abstract class AbstractResolveBaseTest extends LightPlatformCodeInsightFixtureTestCase {
|
||||
|
||||
public static final String MULTIRESOLVE = "MULTIRESOLVE";
|
||||
public static final String REF_EMPTY = "REF_EMPTY";
|
||||
@@ -46,9 +46,9 @@ public abstract class AbstractResolveBaseTest extends LightCodeInsightTestCase {
|
||||
}
|
||||
|
||||
protected void doTest(String path) {
|
||||
configureByFile(path);
|
||||
myFixture.configureByFile(path);
|
||||
|
||||
if (InTextDirectivesUtils.isDirectiveDefined(getFile().getText(), MULTIRESOLVE)) {
|
||||
if (InTextDirectivesUtils.isDirectiveDefined(myFixture.getFile().getText(), MULTIRESOLVE)) {
|
||||
doMultiResolveTest();
|
||||
}
|
||||
else {
|
||||
@@ -56,9 +56,9 @@ public abstract class AbstractResolveBaseTest extends LightCodeInsightTestCase {
|
||||
}
|
||||
}
|
||||
|
||||
protected static void doSingleResolveTest() {
|
||||
boolean shouldBeUnresolved = InTextDirectivesUtils.isDirectiveDefined(getFile().getText(), REF_EMPTY);
|
||||
List<String> refs = InTextDirectivesUtils.findLinesWithPrefixesRemoved(getFile().getText(), "REF:");
|
||||
protected void doSingleResolveTest() {
|
||||
boolean shouldBeUnresolved = InTextDirectivesUtils.isDirectiveDefined(myFixture.getFile().getText(), REF_EMPTY);
|
||||
List<String> refs = InTextDirectivesUtils.findLinesWithPrefixesRemoved(myFixture.getFile().getText(), "REF:");
|
||||
|
||||
String referenceToString;
|
||||
if (shouldBeUnresolved) {
|
||||
@@ -74,8 +74,8 @@ public abstract class AbstractResolveBaseTest extends LightCodeInsightTestCase {
|
||||
Assert.assertNotNull("Test data wasn't found, use \"// REF: \" directive", referenceToString);
|
||||
}
|
||||
|
||||
int offset = getEditor().getCaretModel().getOffset();
|
||||
PsiReference psiReference = getFile().findReferenceAt(offset);
|
||||
int offset = myFixture.getEditor().getCaretModel().getOffset();
|
||||
PsiReference psiReference = myFixture.getFile().findReferenceAt(offset);
|
||||
if (psiReference != null) {
|
||||
PsiElement resolvedTo = psiReference.resolve();
|
||||
if (resolvedTo != null) {
|
||||
@@ -93,17 +93,16 @@ public abstract class AbstractResolveBaseTest extends LightCodeInsightTestCase {
|
||||
}
|
||||
}
|
||||
else {
|
||||
Assert.assertNull(
|
||||
String.format("No reference found at offset: %s, but one resolved to %s was expected", offset, referenceToString),
|
||||
referenceToString);
|
||||
Assert.assertNull(String.format("No reference found at offset: %s, but one resolved to %s was expected", offset, referenceToString),
|
||||
referenceToString);
|
||||
}
|
||||
}
|
||||
|
||||
protected static void doMultiResolveTest() {
|
||||
List<String> expectedReferences = InTextDirectivesUtils.findListWithPrefixes(getFile().getText(), "REF:");
|
||||
protected void doMultiResolveTest() {
|
||||
List<String> expectedReferences = InTextDirectivesUtils.findLinesWithPrefixesRemoved(myFixture.getFile().getText(), "REF:");
|
||||
|
||||
PsiReference psiReference =
|
||||
getFile().findReferenceAt(getEditor().getCaretModel().getOffset());
|
||||
myFixture.getFile().findReferenceAt(myFixture.getEditor().getCaretModel().getOffset());
|
||||
|
||||
assertTrue(psiReference instanceof PsiPolyVariantReference);
|
||||
|
||||
@@ -123,8 +122,8 @@ public abstract class AbstractResolveBaseTest extends LightCodeInsightTestCase {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Sdk getProjectJDK() {
|
||||
return PluginTestCaseBase.jdkFromIdeaHome();
|
||||
protected LightProjectDescriptor getProjectDescriptor() {
|
||||
return JetWithJdkAndRuntimeLightProjectDescriptor.INSTANCE;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
@@ -31,6 +31,7 @@ import org.jetbrains.jet.resolve.AbstractResolveBaseTest;
|
||||
/** This class is generated by {@link org.jetbrains.jet.generators.tests.GenerateTests}. DO NOT MODIFY MANUALLY */
|
||||
@SuppressWarnings("all")
|
||||
@TestMetadata("idea/testData/resolve/references")
|
||||
@InnerTestClasses({ReferenceResolveTestGenerated.DelegatedPropertyAccessors.class})
|
||||
public class ReferenceResolveTestGenerated extends AbstractResolveBaseTest {
|
||||
public void testAllFilesPresentInReferences() throws Exception {
|
||||
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("idea/testData/resolve/references"), Pattern.compile("^(.+)\\.kt$"), true);
|
||||
@@ -171,4 +172,82 @@ public class ReferenceResolveTestGenerated extends AbstractResolveBaseTest {
|
||||
doTest("idea/testData/resolve/references/TypeParameterInFunctionLiteral.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("idea/testData/resolve/references/delegatedPropertyAccessors")
|
||||
@InnerTestClasses({DelegatedPropertyAccessors.InSource.class, DelegatedPropertyAccessors.InStandardLibrary.class})
|
||||
public static class DelegatedPropertyAccessors extends AbstractResolveBaseTest {
|
||||
public void testAllFilesPresentInDelegatedPropertyAccessors() throws Exception {
|
||||
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("idea/testData/resolve/references/delegatedPropertyAccessors"), Pattern.compile("^(.+)\\.kt$"), true);
|
||||
}
|
||||
|
||||
@TestMetadata("unresolved.kt")
|
||||
public void testUnresolved() throws Exception {
|
||||
doTest("idea/testData/resolve/references/delegatedPropertyAccessors/unresolved.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("idea/testData/resolve/references/delegatedPropertyAccessors/inSource")
|
||||
public static class InSource extends AbstractResolveBaseTest {
|
||||
public void testAllFilesPresentInInSource() throws Exception {
|
||||
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("idea/testData/resolve/references/delegatedPropertyAccessors/inSource"), Pattern.compile("^(.+)\\.kt$"), true);
|
||||
}
|
||||
|
||||
@TestMetadata("getExtension.kt")
|
||||
public void testGetExtension() throws Exception {
|
||||
doTest("idea/testData/resolve/references/delegatedPropertyAccessors/inSource/getExtension.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("getMember.kt")
|
||||
public void testGetMember() throws Exception {
|
||||
doTest("idea/testData/resolve/references/delegatedPropertyAccessors/inSource/getMember.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("getMultipleDeclarations.kt")
|
||||
public void testGetMultipleDeclarations() throws Exception {
|
||||
doTest("idea/testData/resolve/references/delegatedPropertyAccessors/inSource/getMultipleDeclarations.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("getSetExtension.kt")
|
||||
public void testGetSetExtension() throws Exception {
|
||||
doTest("idea/testData/resolve/references/delegatedPropertyAccessors/inSource/getSetExtension.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("getSetMember.kt")
|
||||
public void testGetSetMember() throws Exception {
|
||||
doTest("idea/testData/resolve/references/delegatedPropertyAccessors/inSource/getSetMember.kt");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@TestMetadata("idea/testData/resolve/references/delegatedPropertyAccessors/inStandardLibrary")
|
||||
public static class InStandardLibrary extends AbstractResolveBaseTest {
|
||||
public void testAllFilesPresentInInStandardLibrary() throws Exception {
|
||||
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("idea/testData/resolve/references/delegatedPropertyAccessors/inStandardLibrary"), Pattern.compile("^(.+)\\.kt$"), true);
|
||||
}
|
||||
|
||||
@TestMetadata("lazy.kt")
|
||||
public void testLazy() throws Exception {
|
||||
doTest("idea/testData/resolve/references/delegatedPropertyAccessors/inStandardLibrary/lazy.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("notNull.kt")
|
||||
public void testNotNull() throws Exception {
|
||||
doTest("idea/testData/resolve/references/delegatedPropertyAccessors/inStandardLibrary/notNull.kt");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static Test innerSuite() {
|
||||
TestSuite suite = new TestSuite("DelegatedPropertyAccessors");
|
||||
suite.addTestSuite(DelegatedPropertyAccessors.class);
|
||||
suite.addTestSuite(InSource.class);
|
||||
suite.addTestSuite(InStandardLibrary.class);
|
||||
return suite;
|
||||
}
|
||||
}
|
||||
|
||||
public static Test suite() {
|
||||
TestSuite suite = new TestSuite("ReferenceResolveTestGenerated");
|
||||
suite.addTestSuite(ReferenceResolveTestGenerated.class);
|
||||
suite.addTest(DelegatedPropertyAccessors.innerSuite());
|
||||
return suite;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user