Tests for navigation to property delegates' accessors

This commit is contained in:
Andrey Breslav
2013-08-28 12:54:44 +04:00
parent d19b3a5628
commit 9fa8ee10dc
11 changed files with 173 additions and 20 deletions
@@ -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;
}
}