blob: e9860e9d2d887ec80273708b6b5534c6d9c2151d [file] [log] [blame]
package org.jetbrains.android;
import com.intellij.codeInsight.navigation.actions.GotoDeclarationAction;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.xml.XmlAttributeValue;
import org.jetbrains.android.dom.wrappers.LazyValueResourceElementWrapper;
import org.jetbrains.annotations.Nullable;
import java.io.IOException;
/**
* @author Eugene.Kudelevsky
*/
public class AndroidResourcesLineMarkerTest extends AndroidTestCase {
private static final String BASE_PATH = "/resNavigation/";
public AndroidResourcesLineMarkerTest() {
super(false);
}
@Override
public void setUp() throws Exception {
super.setUp();
myFixture.copyFileToProject(BASE_PATH + "AndroidManifest.xml", "AndroidManifest.xml");
myFixture.copyDirectoryToProject(BASE_PATH + "res", "res");
}
public void testJavaFileNavigation1() throws Exception {
doJavaFileNavigationTest(1, true, XmlAttributeValue.class);
}
public void testJavaFileNavigation2() throws Exception {
doJavaFileNavigationTest(3, true, XmlAttributeValue.class);
}
public void testJavaFileNavigation3() throws Exception {
doJavaFileNavigationTest(2, true, PsiFile.class);
}
public void testJavaFileNavigation4() throws Exception {
doJavaFileNavigationTest(0, false, null);
}
public void testJavaFileNavigation5() throws Exception {
doJavaFileNavigationTest(1, true, XmlAttributeValue.class);
}
public void testJavaFileNavigation6() throws Exception {
doJavaFileNavigationTest(1, true, XmlAttributeValue.class);
}
public void testJavaFileNavigation7() throws Exception {
doJavaFileNavigationTest(1, true, XmlAttributeValue.class);
}
public void testJavaFileNavigation8() throws Exception {
doJavaFileNavigationTest(1, true, XmlAttributeValue.class);
}
public void testJavaFileNavigation9() throws Exception {
doJavaFileNavigationTest(1, true, XmlAttributeValue.class);
}
public void testJavaFileNavigation10() throws Exception {
doJavaFileNavigationTest(1, true, XmlAttributeValue.class);
}
public void testJavaFileNavigation11() throws Exception {
doJavaFileNavigationTest(1, true, XmlAttributeValue.class);
}
public void testJavaFileNavigation12() throws Exception {
myFixture.copyFileToProject(BASE_PATH + "dist_delims.xml", "res/values/strings12.xml");
doJavaFileNavigationTest(1, true, XmlAttributeValue.class);
}
public void testJavaFileNavigation13() throws Exception {
doJavaFileNavigationTest(1, true, XmlAttributeValue.class);
}
public void testJavaFileNavigation14() throws Exception {
doJavaFileNavigationTest(1, true, XmlAttributeValue.class);
}
public void testJavaFileNavigation15() throws Exception {
doJavaFileNavigationTest(1, true, XmlAttributeValue.class);
}
public void testJavaFileNavigationManifest1() throws Exception {
doJavaFileNavigationTest(1, true, XmlAttributeValue.class);
}
public void testJavaFileNavigationManifest2() throws Exception {
doJavaFileNavigationTest(2, true, XmlAttributeValue.class);
}
public void testJavaFileNavigationManifest3() throws Exception {
doJavaFileNavigationTest(1, true, XmlAttributeValue.class);
}
public void testJavaFileNavigationToSystemResource1() throws Exception {
doJavaFileNavigationTest(1, true, XmlAttributeValue.class);
}
public void testJavaFileNavigationToSystemResource2() throws Exception {
doJavaFileNavigationTest(2, true, XmlAttributeValue.class);
}
private void doJavaFileNavigationTest(int expectedTargets,
boolean expectedEnabled,
@Nullable Class<? extends PsiElement> targetElementClass)
throws IOException {
copyRJavaAndManifestJava();
String path = "src/p1/p2/" + getTestName(false) + ".java";
doJavaFileNavigationTest(path, path, expectedTargets, expectedEnabled, true, targetElementClass);
}
private void doJavaFileNavigationTest(String srcPath, String destPath, int expectedTargets, boolean expectedEnabled,
boolean testGotoDeclaration, Class<? extends PsiElement> targetElementClass) throws IOException {
VirtualFile file = myFixture.copyFileToProject(BASE_PATH + srcPath, destPath);
myFixture.configureFromExistingVirtualFile(file);
// test Ctrl+B
if (testGotoDeclaration) {
PsiElement[] targets = GotoDeclarationAction.findAllTargetElements(getProject(), myFixture.getEditor(), myFixture.getCaretOffset());
assertNotNull(targets);
assertEquals(expectedTargets, targets.length);
for (PsiElement target : targets) {
assertInstanceOf(LazyValueResourceElementWrapper.computeLazyElement(target), targetElementClass);
}
}
}
private void copyRJavaAndManifestJava() throws IOException {
myFixture.copyFileToProject("R.java", "src/p1/p2/R.java");
myFixture.copyFileToProject("Manifest.java", "src/p1/p2/Manifest.java");
}
}