blob: 72366726457f588d7ecaf6884b8c798eaf3bed63 [file] [log] [blame]
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");
}
}