| package org.jetbrains.android.refactoring; |
| |
| import com.intellij.openapi.vfs.VirtualFile; |
| import com.intellij.psi.PsiFile; |
| import com.intellij.psi.util.PsiTreeUtil; |
| import com.intellij.psi.xml.XmlFile; |
| import com.intellij.psi.xml.XmlTag; |
| import com.intellij.usageView.UsageInfo; |
| import com.intellij.util.xml.DomManager; |
| import org.jetbrains.android.AndroidTestCase; |
| import org.jetbrains.android.dom.layout.LayoutDomFileDescription; |
| |
| import java.util.ArrayList; |
| import java.util.Collection; |
| import java.util.List; |
| |
| /** |
| * @author Eugene.Kudelevsky |
| */ |
| public class AndroidFindStyleApplicationsTest extends AndroidTestCase { |
| private static final String BASE_PATH = "refactoring/findPossibleUsages/"; |
| |
| public void test1() throws Exception { |
| doTest(); |
| } |
| |
| public void testGranular1() throws Exception { |
| myFixture.copyFileToProject(BASE_PATH + "1_layout.xml", "res/layout/layout.xml"); |
| final VirtualFile f = myFixture.copyFileToProject(BASE_PATH + "1.xml", "res/values/styles.xml"); |
| myFixture.configureFromExistingVirtualFile(f); |
| XmlTag tag = PsiTreeUtil.getParentOfType(myFixture.getElementAtCaret(), XmlTag.class); |
| AndroidFindStyleApplicationsAction.MyStyleData styleData = AndroidFindStyleApplicationsAction.getStyleData(tag); |
| assertNotNull(styleData); |
| AndroidFindStyleApplicationsProcessor processor = |
| AndroidFindStyleApplicationsAction.createFindStyleApplicationsProcessor(tag, styleData, null); |
| processor.configureScope(AndroidFindStyleApplicationsProcessor.MyScope.PROJECT, null); |
| Collection<PsiFile> files = processor.collectFilesToProcess(); |
| assertEquals(1, files.size()); |
| XmlFile layoutFile = (XmlFile)files.iterator().next(); |
| assertInstanceOf(DomManager.getDomManager(myFixture.getProject()).getDomFileDescription( |
| (XmlFile)layoutFile), LayoutDomFileDescription.class); |
| final List<UsageInfo> usages = new ArrayList<UsageInfo>(); |
| processor.collectPossibleStyleApplications(layoutFile, usages); |
| assertEquals(2, usages.size()); |
| } |
| |
| public void test2() throws Exception { |
| doTest(); |
| } |
| |
| public void test3() throws Exception { |
| doTest(); |
| } |
| |
| public void test4() throws Exception { |
| doTest(); |
| } |
| |
| public void test5() throws Exception { |
| doTest(); |
| } |
| |
| public void test6() throws Exception { |
| final String testName = getTestName(true); |
| myFixture.copyFileToProject(BASE_PATH + testName + "_layout.xml", "res/layout/layout1.xml"); |
| myFixture.copyFileToProject(BASE_PATH + testName + "_layout.xml", "res/layout/layout2.xml"); |
| |
| doTest1(); |
| |
| myFixture.checkResultByFile("res/layout/layout1.xml", BASE_PATH + testName + "_layout_after.xml", true); |
| myFixture.checkResultByFile("res/layout/layout2.xml", BASE_PATH + testName + "_layout_after.xml", true); |
| } |
| |
| public void test7() throws Exception { |
| try { |
| doTest(); |
| fail(); |
| } |
| catch (RuntimeException e) { |
| assertEquals("IDEA has not found any possible applications of style 'style1'", e.getMessage()); |
| } |
| } |
| |
| private void doTest() { |
| final String testName = getTestName(true); |
| myFixture.copyFileToProject(BASE_PATH + testName + "_layout.xml", "res/layout/layout.xml"); |
| |
| doTest1(); |
| |
| myFixture.checkResultByFile("res/layout/layout.xml", BASE_PATH + testName + "_layout_after.xml", true); |
| } |
| |
| private void doTest1() { |
| final String testName = getTestName(true); |
| final VirtualFile f = myFixture.copyFileToProject(BASE_PATH + testName + ".xml", "res/values/styles.xml"); |
| myFixture.configureFromExistingVirtualFile(f); |
| myFixture.testAction(new AndroidFindStyleApplicationsAction(new AndroidFindStyleApplicationsAction.MyTestConfig( |
| AndroidFindStyleApplicationsProcessor.MyScope.PROJECT))); |
| myFixture.checkResultByFile(BASE_PATH + testName + ".xml"); |
| } |
| } |