blob: 045caf9b34d9426ea9a9e57600f5b67ba1cfcc1e [file] [log] [blame]
package org.jetbrains.android.dom;
import com.android.SdkConstants;
import com.intellij.codeInsight.completion.CompletionType;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.projectRoots.ProjectJdkTable;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.roots.ModuleRootManager;
import com.intellij.spellchecker.inspections.SpellCheckingInspection;
import com.intellij.testFramework.fixtures.IdeaProjectTestFixture;
import com.intellij.testFramework.fixtures.TestFixtureBuilder;
import org.jetbrains.android.inspections.AndroidElementNotAllowedInspection;
import org.jetbrains.android.inspections.AndroidUnknownAttributeInspection;
import org.jetbrains.annotations.NotNull;
import java.util.List;
/**
* @author coyote
*/
public class AndroidManifestDomTest extends AndroidDomTest {
public AndroidManifestDomTest() {
super(false, "dom/manifest");
}
@Override
protected String getPathToCopy(String testFileName) {
return SdkConstants.FN_ANDROID_MANIFEST_XML;
}
public void testAttributeNameCompletion1() throws Throwable {
doTestCompletionVariants("an1.xml", "android:icon", "android:label", "android:priority", "android:logo");
}
public void testAttributeNameCompletion2() throws Throwable {
doTestCompletionVariants("an2.xml", "debuggable", "description", "hasCode", "vmSafeMode");
}
public void testAttributeNameCompletion3() throws Throwable {
toTestCompletion("an3.xml", "an3_after.xml");
}
public void testAttributeNameCompletion4() throws Throwable {
toTestCompletion("an4.xml", "an4_after.xml");
}
public void testAttributeByLocalNameCompletion() throws Throwable {
toTestCompletion("attrByLocalName.xml", "attrByLocalName_after.xml");
}
public void testTagNameCompletion2() throws Throwable {
doTestCompletionVariants("tn2.xml", "manifest");
}
public void testHighlighting() throws Throwable {
doTestHighlighting("hl.xml");
}
public void testHighlighting2() throws Throwable {
doTestHighlighting("hl2.xml");
}
public void testTagNameCompletion3() throws Throwable {
toTestCompletion("tn3.xml", "tn3_after.xml");
}
public void testTagNameCompletion4() throws Throwable {
toTestCompletion("tn4.xml", "tn4_after.xml");
}
public void testAttributeValueCompletion1() throws Throwable {
doTestCompletionVariants("av1.xml", "behind", "landscape", "nosensor", "portrait", "sensor", "unspecified", "user", "fullSensor",
"reverseLandscape", "reversePortrait", "sensorLandscape", "sensorPortrait",
"fullUser", "locked", "userLandscape", "userPortrait");
}
public void testResourceCompletion1() throws Throwable {
doTestCompletionVariants("av2.xml", "@android:", "@style/style1");
}
public void testResourceCompletion2() throws Throwable {
doTestCompletionVariants("av3.xml", "@android:", "@string/hello", "@string/hello1", "@string/welcome", "@string/welcome1",
"@string/itStr");
}
public void testResourceCompletion3() throws Throwable {
doTestCompletionVariants("av4.xml", "@android:", "@color/", "@dimen/", "@drawable/", "@id/", "@string/", "@style/");
}
public void testTagNameCompletion1() throws Throwable {
doTestCompletionVariants("tn1.xml", "uses-permission", "uses-sdk", "uses-configuration", "uses-feature");
}
public void testSoftTagsAndAttrs() throws Throwable {
myFixture.disableInspections(new AndroidUnknownAttributeInspection());
myFixture.disableInspections(new AndroidElementNotAllowedInspection());
doTestHighlighting("soft.xml");
}
public void testUnknownAttribute() throws Throwable {
doTestHighlighting("unknownAttribute.xml");
}
/*public void testNamespaceCompletion() throws Throwable {
toTestCompletion("ns.xml", "ns_after.xml");
}*/
public void testInnerActivityHighlighting() throws Throwable {
copyFileToProject("A.java", "src/p1/p2/A.java");
doTestHighlighting(getTestName(false) + ".xml");
}
public void testInnerActivityCompletion() throws Throwable {
copyFileToProject("A.java", "src/p1/p2/A.java");
doTestCompletionVariants(getTestName(false) + ".xml", "B");
}
public void testActivityCompletion1() throws Throwable {
copyFileToProject("MyActivity1.java", "src/p1/p2/p3/MyActivity1.java");
copyFileToProject("MyActivity2.java", "src/p1/MyActivity2.java");
copyFileToProject("MyActivity.java", "src/p1/p2/MyActivity.java");
doTestCompletionVariants(getTestName(false) + ".xml", ".MyActivity", ".p3.MyActivity1", "p1.MyActivity2");
}
public void testActivityCompletion2() throws Throwable {
copyFileToProject("MyActivity.java", "src/p1/p2/MyActivity.java");
doTestCompletionVariants(getTestName(false) + ".xml", "p2.MyActivity");
}
public void testActivityCompletion3() throws Throwable {
copyFileToProject("MyActivity.java", "src/p1/p2/MyActivity.java");
copyFileToProject("MyActivity1.java", "src/p1/p2/p3/MyActivity1.java");
doTestCompletionVariants(getTestName(false) + ".xml", ".MyActivity", ".p3.MyActivity1");
}
public void testActivityCompletion4() throws Throwable {
copyFileToProject("MyActivity.java", "src/p1/p2/MyActivity.java");
copyFileToProject("MyActivity1.java", "src/p1/p2/p3/MyActivity1.java");
doTestCompletionVariants(getTestName(false) + ".xml", "MyActivity", "p3.MyActivity1");
}
public void testActivityCompletion5() throws Throwable {
copyFileToProject("MyActivity.java", "src/p1/p2/MyActivity.java");
copyFileToProject("MyActivity1.java", "src/p1/p2/p3/MyActivity1.java");
copyFileToProject("MyActivity2.java", "src/p1/MyActivity2.java");
doTestCompletionVariants(getTestName(false) + ".xml", "MyActivity", "p3.MyActivity1");
}
public void testActivityCompletion6() throws Throwable {
copyFileToProject("MyActivity.java", "src/p1/p2/MyActivity.java");
doTestCompletion(false);
}
public void testParentActivityCompletion1() throws Throwable {
copyFileToProject("MyActivity.java", "src/p1/p2/MyActivity.java");
copyFileToProject("MyActivity1.java", "src/p1/p2/p3/MyActivity1.java");
copyFileToProject("MyActivity2.java", "src/p1/MyActivity2.java");
doTestCompletionVariants(getTestName(false) + ".xml", ".MyActivity", ".p3.MyActivity1", "p1.MyActivity2");
}
public void testBackupAgentCompletion() throws Throwable {
copyFileToProject("MyBackupAgent.java", "src/p1/p2/MyBackupAgent.java");
doTestCompletionVariants(getTestName(false) + ".xml", ".MyBackupAgent");
}
public void testUsesPermissionCompletion() throws Throwable {
doTestCompletion(false);
}
public void testUsesPermissionCompletion1() throws Throwable {
myFixture.configureFromExistingVirtualFile(
copyFileToProject(getTestName(false) + ".xml"));
myFixture.complete(CompletionType.BASIC);
myFixture.type('\n');
myFixture.checkResultByFile(testFolder + '/' + getTestName(false) + "_after.xml");
}
public void testUsesPermissionDoc() throws Throwable {
myFixture.configureFromExistingVirtualFile(
copyFileToProject(getTestName(false) + ".xml"));
myFixture.complete(CompletionType.BASIC);
myFixture.type("WI");
doTestExternalDoc("Allows applications to access information about Wi-Fi networks");
}
public void testUsesPermissionDoc1() throws Throwable {
myFixture.configureFromExistingVirtualFile(copyFileToProject(getTestName(false) + ".xml"));
doTestExternalDoc("Allows applications to access information about Wi-Fi networks");
}
public void testIntentActionDoc() throws Throwable {
myFixture.configureFromExistingVirtualFile(
copyFileToProject(getTestName(false) + ".xml"));
myFixture.complete(CompletionType.BASIC);
myFixture.type("_BUT");
doTestExternalDoc("The user pressed the \"call\" button to go to the dialer");
}
public void testIntentActionDoc1() throws Throwable {
myFixture.configureFromExistingVirtualFile(copyFileToProject(getTestName(false) + ".xml"));
doTestExternalDoc("The user pressed the \"call\" button to go to the dialer");
}
public void testIntentActionDoc2() throws Throwable {
myFixture.configureFromExistingVirtualFile(
copyFileToProject(getTestName(false) + ".xml"));
doTestExternalDoc("The user pressed the \"call\" button to go to the dialer");
}
public void testIntentActionCompletion1() throws Throwable {
doTestCompletionVariants(getTestName(false) + ".xml", "android.intent.action.CALL", "android.intent.action.CALL_BUTTON");
}
public void testIntentActionCompletion2() throws Throwable {
doTestCompletionVariants(getTestName(false) + ".xml", "android.intent.action.CAMERA_BUTTON",
"android.intent.action.NEW_OUTGOING_CALL");
}
public void testIntentActionCompletion3() throws Throwable {
doTestCompletionVariants(getTestName(false) + ".xml");
}
public void testIntentCategoryCompletion() throws Throwable {
doTestCompletion(false);
}
public void testIntentActionsHighlighting() throws Throwable {
doTestHighlighting();
}
public void testIntentCategoryDoc() throws Throwable {
myFixture.configureFromExistingVirtualFile(
copyFileToProject(getTestName(false) + ".xml"));
myFixture.complete(CompletionType.BASIC);
myFixture.type("BRO");
doTestExternalDoc("The activity should be able to browse the Internet.");
}
public void testIntentCategoryDoc1() throws Throwable {
myFixture.configureFromExistingVirtualFile(copyFileToProject(getTestName(false) + ".xml"));
doTestExternalDoc("The activity should be able to browse the Internet.");
}
public void testIntentCategoryDoc2() throws Throwable {
myFixture.configureFromExistingVirtualFile(
copyFileToProject(getTestName(false) + ".xml"));
doTestExternalDoc("To be used as a test");
}
public void testApplicationNameCompletion() throws Throwable {
copyFileToProject("MyApplication.java", "src/p1/p2/MyApplication.java");
doTestCompletion(false);
}
public void testManageSpaceActivity() throws Throwable {
copyFileToProject("MyActivity.java", "src/p1/p2/MyActivity.java");
doTestCompletion(false);
}
public void testInstrumentationRunner() throws Throwable {
doTestHighlighting(getTestName(false) + ".xml");
}
public void testInstrumentationRunner1() throws Throwable {
doTestHighlighting(getTestName(false) + ".xml");
}
public void testInstrumentationRunner2() throws Throwable {
doTestCompletion(false);
}
@Override
protected void configureAdditionalModules(@NotNull TestFixtureBuilder<IdeaProjectTestFixture> projectBuilder,
@NotNull List<MyAdditionalModuleData> modules) {
if ("testInstrumentationRunner1".equals(getName()) ||
"testInstrumentationRunner2".equals(getName())) {
addModuleWithAndroidFacet(projectBuilder, modules, "module1", false);
}
}
public void testIntentsCompletion1() throws Throwable {
doTestCompletion();
}
public void testIntentsCompletion2() throws Throwable {
doTestCompletion();
}
public void testCompletionInManifestTag() throws Throwable {
doTestCompletion();
}
public void testActivityAlias() throws Throwable {
copyFileToProject("MyActivity.java", "src/p1/p2/MyActivity.java");
doTestHighlighting();
}
public void testActivityAlias1() throws Throwable {
copyFileToProject("MyActivity.java", "src/p1/p2/MyActivity.java");
doTestHighlighting();
}
public void testActivityAlias2() throws Throwable {
copyFileToProject("MyActivity.java", "src/p1/p2/MyActivity.java");
doTestHighlighting();
}
public void testActivityAlias3() throws Throwable {
copyFileToProject("MyActivity.java", "src/p1/p2/MyActivity.java");
doTestHighlighting();
}
public void testIntegerRefAsEnumValue() throws Throwable {
copyFileToProject("myIntResource.xml", "res/values/myIntResource.xml");
doTestCompletion();
}
public void testJavaHighlighting() throws Throwable {
copyFileToProject("PermissionsManifest.xml", "AndroidManifest.xml");
copyFileToProject("Manifest.java", "src/p1/p2/Manifest.java");
doTestJavaHighlighting("p1.p2");
}
public void testAndroidPrefixCompletion() throws Throwable {
// do not complete prefix in manifest because there is not many attributes
doTestAndroidPrefixCompletion(null);
}
public void testNamespaceCompletion() throws Throwable {
doTestNamespaceCompletion(true, true);
}
public void testNamespaceCompletion1() throws Throwable {
doTestNamespaceCompletion(true, false);
}
public void testCompatibleScreensCompletion() throws Throwable {
doTestCompletion();
}
public void testCompatibleScreensHighlighting() throws Throwable {
doTestHighlighting();
}
public void testHexInteger() throws Throwable {
doTestHighlighting();
}
public void testMinSdkVersionAttributeValueCompletion() throws Throwable {
doTestSdkVersionAttributeValueCompletion();
}
public void testTargetSdkVersionAttributeValueCompletion() throws Throwable {
doTestSdkVersionAttributeValueCompletion();
}
public void testMaxSdkVersionAttributeValueCompletion() throws Throwable {
doTestSdkVersionAttributeValueCompletion();
}
public void testSpellchecker1() throws Throwable {
myFixture.enableInspections(SpellCheckingInspection.class);
doTestHighlighting();
}
public void testSpellchecker2() throws Throwable {
doTestSpellcheckerQuickFixes();
}
public void testMetadataCompletion1() throws Throwable {
copyFileToProject("MyActivity1.java", "src/p1/p2/p3/MyActivity1.java");
copyFileToProject("MyActivity2.java", "src/p1/MyActivity2.java");
copyFileToProject("MyActivity.java", "src/p1/p2/MyActivity.java");
doTestCompletionVariants(getTestName(true) + ".xml", ".MyActivity2", ".p2.MyActivity", ".p2.p3.MyActivity1");
}
public void testMetadataCompletion2() throws Throwable {
doTestCompletionVariants(getTestName(true) + ".xml",
"@android:", "@color/", "@dimen/", "@drawable/", "@id/", "@string/", "@style/");
}
public void testMetadataCompletion3() throws Throwable {
copyFileToProject("MyActivity1.java", "src/p1/p2/p3/MyActivity1.java");
copyFileToProject("MyActivity2.java", "src/p1/MyActivity2.java");
copyFileToProject("MyActivity.java", "src/p1/p2/MyActivity.java");
doTestCompletionVariants(getTestName(true) + ".xml", "p1.MyActivity2", "p1.p2.MyActivity", "p1.p2.p3.MyActivity1");
}
private void doTestSdkVersionAttributeValueCompletion() throws Throwable {
final ProjectJdkTable projectJdkTable = ProjectJdkTable.getInstance();
final Sdk sdk = ModuleRootManager.getInstance(myModule).getSdk();
ApplicationManager.getApplication().runWriteAction(new Runnable() {
@Override
public void run() {
projectJdkTable.addJdk(sdk);
}
});
try {
doTestCompletionVariants(getTestName(true) + ".xml", "1", "2", "3", "4", "5", "6", "7",
"8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "MNC");
}
finally {
ApplicationManager.getApplication().runWriteAction(new Runnable() {
@Override
public void run() {
projectJdkTable.removeJdk(sdk);
}
});
}
}
}