| 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"); |
| } |
| } |