--- /dev/null
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.content.cts;
+
+import java.io.IOException;
+import java.io.Serializable;
+import java.net.URISyntaxException;
+import java.util.ArrayList;
+import java.util.Set;
+
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlPullParserException;
+
+import android.app.cts.MockActivity;
+import android.app.cts.MockReceiver;
+import android.content.ComponentName;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ActivityInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.PackageManager.NameNotFoundException;
+import android.content.res.XmlResourceParser;
+import android.net.Uri;
+import android.os.Bundle;
+import android.os.IBinder;
+import android.os.Parcel;
+import android.os.ServiceManager;
+import android.provider.Contacts.People;
+import android.test.AndroidTestCase;
+import android.util.AttributeSet;
+import android.util.Xml;
+
+import com.android.internal.app.ResolverActivity;
+import com.android.internal.util.XmlUtils;
+
+import dalvik.annotation.TestLevel;
+import dalvik.annotation.TestTargetClass;
+import dalvik.annotation.TestTargetNew;
+import dalvik.annotation.TestTargets;
+
+@TestTargetClass(Intent.class)
+public class IntentTest extends AndroidTestCase {
+
+ private Intent mIntent;
+ private static final String TEST_ACTION = "android.content.IntentTest_test";
+ private static final Uri TEST_URI = People.CONTENT_URI;
+ private static final Uri ANOTHER_TEST_URI = People.CONTENT_FILTER_URI;
+ private static final String TEST_EXTRA_NAME = "testExtraName";
+ private Context mContext;
+ private ComponentName mComponentName;
+ private ComponentName mAnotherComponentName;
+ private static final String TEST_TYPE = "testType";
+ private static final String ANOTHER_TEST_TYPE = "anotherTestType";
+ private static final String TEST_CATEGORY = "testCategory";
+ private static final String ANOTHER_TEST_CATEGORY = "testAnotherCategory";
+ private static final String TEST_PACKAGE = "android.content.cts";
+ private static final String ANOTHER_TEST_PACKAGE = "android.database.cts";
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ mIntent = new Intent();
+ mContext = getContext();
+ mComponentName = new ComponentName(mContext, MockActivity.class);
+ mAnotherComponentName = new ComponentName(mContext, "tmp");
+ }
+
+ @TestTargets({
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "Intent",
+ args = {}
+ ),
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "Intent",
+ args = {android.content.Context.class, java.lang.Class.class}
+ ),
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "Intent",
+ args = {android.content.Intent.class}
+ ),
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "Intent",
+ args = {java.lang.String.class}
+ ),
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "Intent",
+ args = {java.lang.String.class, android.net.Uri.class}
+ ),
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "Intent",
+ args = {java.lang.String.class, android.net.Uri.class,
+ android.content.Context.class, java.lang.Class.class}
+ )
+ })
+ public void testConstructor() {
+ mIntent = new Intent();
+ assertNotNull(mIntent);
+
+ Intent intent = new Intent();
+ intent.setAction(TEST_ACTION);
+
+ mIntent = new Intent(intent);
+ assertNotNull(mIntent);
+ assertEquals(TEST_ACTION, mIntent.getAction());
+
+ mIntent = new Intent(TEST_ACTION);
+ assertNotNull(mIntent);
+ assertEquals(TEST_ACTION, mIntent.getAction());
+
+ mIntent = new Intent(TEST_ACTION, TEST_URI);
+ assertNotNull(mIntent);
+ assertEquals(TEST_ACTION, mIntent.getAction());
+ assertEquals(TEST_URI, mIntent.getData());
+
+ mIntent = new Intent(mContext, MockActivity.class);
+ assertNotNull(mIntent);
+ assertEquals(mComponentName, mIntent.getComponent());
+
+ mIntent = new Intent(TEST_ACTION, TEST_URI, mContext, MockActivity.class);
+ assertNotNull(mIntent);
+ assertEquals(TEST_ACTION, mIntent.getAction());
+ assertEquals(TEST_URI, mIntent.getData());
+ assertEquals(mComponentName, mIntent.getComponent());
+ }
+
+ @TestTargets({
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "removeExtra",
+ args = {java.lang.String.class}
+ ),
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "putExtra",
+ args = {java.lang.String.class, java.lang.String.class}
+ )
+ })
+ public void testRemoveExtra() {
+ mIntent = new Intent();
+ mIntent.putExtra(TEST_EXTRA_NAME, "testvalue");
+ assertNotNull(mIntent.getStringExtra(TEST_EXTRA_NAME));
+ mIntent.removeExtra(TEST_EXTRA_NAME);
+ assertNull(mIntent.getStringExtra(TEST_EXTRA_NAME));
+ }
+
+ @TestTargets({
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "getCharSequenceExtra",
+ args = {java.lang.String.class}
+ ),
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "putExtra",
+ args = {java.lang.String.class, java.lang.CharSequence.class}
+ )
+ })
+ public void testGetCharSequenceExtra() {
+ final CharSequence expected = "CharSequencetest";
+ mIntent.putExtra(TEST_EXTRA_NAME, expected);
+ assertEquals(expected, mIntent.getCharSequenceExtra(TEST_EXTRA_NAME));
+ }
+
+ @TestTargets({
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "readFromParcel",
+ args = {android.os.Parcel.class}
+ ),
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "setAction",
+ args = {java.lang.String.class}
+ ),
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "setData",
+ args = {android.net.Uri.class}
+ ),
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "setType",
+ args = {java.lang.String.class}
+ ),
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+
+ method = "setFlags",
+ args = {int.class}
+ ),
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "setComponent",
+ args = {android.content.ComponentName.class}
+ ),
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "addCategory",
+ args = {java.lang.String.class}
+ ),
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "writeToParcel",
+ args = {android.os.Parcel.class, int.class}
+ )
+ })
+ public void testReadFromParcel() {
+ mIntent.setAction(TEST_ACTION);
+ mIntent.setData(TEST_URI);
+ mIntent.setType(TEST_TYPE);
+ mIntent.setFlags(0);
+ mIntent.setComponent(mComponentName);
+ mIntent.addCategory(TEST_CATEGORY);
+ final Parcel parcel = Parcel.obtain();
+ mIntent.writeToParcel(parcel, 0);
+ parcel.setDataPosition(0);
+ final Intent target = new Intent();
+ target.readFromParcel(parcel);
+ assertEquals(mIntent.getAction(), target.getAction());
+ assertEquals(mIntent.getData(), target.getData());
+ assertEquals(mIntent.getFlags(), target.getFlags());
+ assertEquals(mIntent.getComponent(), target.getComponent());
+ assertEquals(mIntent.getCategories(), target.getCategories());
+ assertEquals(mIntent.toURI(), target.toURI());
+ }
+
+ @TestTargets({
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "putParcelableArrayListExtra",
+ args = {java.lang.String.class, java.util.ArrayList.class}
+ ),
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "getParcelableArrayListExtra",
+ args = {java.lang.String.class}
+ )
+ })
+ public void testGetParcelableArrayListExtra() {
+ final ArrayList<Intent> expected = new ArrayList<Intent>();
+ Intent intent = new Intent(TEST_ACTION);
+ expected.add(intent);
+
+ mIntent.putParcelableArrayListExtra(TEST_EXTRA_NAME, expected);
+ final ArrayList<Intent> target = mIntent.getParcelableArrayListExtra(TEST_EXTRA_NAME);
+ assertEquals(expected.size(), target.size());
+ assertEquals(expected, target);
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "filterHashCode",
+ args = {}
+ )
+ public void testFilterHashCode() {
+ mIntent.filterHashCode();
+ }
+
+ @TestTargets({
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "getCategories",
+ args = {}
+ ),
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "addCategory",
+ args = {java.lang.String.class}
+ )
+ })
+ public void testGetCategories() {
+ mIntent.addCategory(TEST_CATEGORY);
+ final Set<String> target = mIntent.getCategories();
+ assertEquals(TEST_CATEGORY, target.toArray()[0]);
+ }
+
+ @TestTargets({
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "setData",
+ args = {android.net.Uri.class}
+ ),
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "getScheme",
+ args = {}
+ )
+ })
+ public void testGetScheme() {
+ assertNull(mIntent.getScheme());
+ mIntent.setData(TEST_URI);
+ assertEquals(TEST_URI.getScheme(), mIntent.getScheme());
+ }
+
+ @TestTargets({
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "putIntegerArrayListExtra",
+ args = {java.lang.String.class, java.util.ArrayList.class}
+ ),
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "getIntegerArrayListExtra",
+ args = {java.lang.String.class}
+ )
+ })
+ public void testGetIntegerArrayListExtra() {
+ final ArrayList<Integer> expected = new ArrayList<Integer>();
+ expected.add(0);
+ mIntent.putIntegerArrayListExtra(TEST_EXTRA_NAME, expected);
+ assertEquals(expected, mIntent.getIntegerArrayListExtra(TEST_EXTRA_NAME));
+ }
+
+ @TestTargets({
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "putExtra",
+ args = {java.lang.String.class, java.lang.String.class}
+ ),
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "hasExtra",
+ args = {java.lang.String.class}
+ )
+ })
+ public void testHasExtra() {
+ mIntent = new Intent();
+ assertFalse(mIntent.hasExtra(TEST_EXTRA_NAME));
+ mIntent.putExtra(TEST_EXTRA_NAME, "test");
+ assertTrue(mIntent.hasExtra(TEST_EXTRA_NAME));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "getIntArrayExtra",
+ args = {java.lang.String.class}
+ )
+ public void testGetIntArrayExtra() {
+ final int[] expected = { 1, 2, 3 };
+ assertNull(mIntent.getIntArrayExtra(TEST_EXTRA_NAME));
+ mIntent.putExtra(TEST_EXTRA_NAME, expected);
+ assertEquals(expected, mIntent.getIntArrayExtra(TEST_EXTRA_NAME));
+ }
+
+ @TestTargets({
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "setClassName",
+ args = {android.content.Context.class, java.lang.String.class}
+ ),
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "getComponent",
+ args = {}
+ )
+ })
+ public void testSetClassName1() {
+ final Intent intent = mIntent.setClassName(mContext, MockActivity.class.getName());
+ assertEquals(mComponentName, mIntent.getComponent());
+ assertSame(mIntent, intent);
+ }
+
+ @TestTargets({
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "setClassName",
+ args = {java.lang.String.class, java.lang.String.class}
+ ),
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "getComponent",
+ args = {}
+ )
+ })
+ public void testSetClassName2() {
+ mIntent.setClassName(mContext.getPackageName(), MockActivity.class.getName());
+ assertEquals(mComponentName, mIntent.getComponent());
+ }
+
+ @TestTargets({
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "getIntExtra",
+ args = {java.lang.String.class, int.class}
+ ),
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "putExtra",
+ args = {java.lang.String.class, int.class}
+ )
+ })
+ public void testGetIntExtra() {
+ final int expected = 0;
+ mIntent = new Intent();
+ assertEquals(expected, mIntent.getIntExtra(TEST_EXTRA_NAME, expected));
+ mIntent.putExtra(TEST_EXTRA_NAME, 100);
+ assertEquals(100, mIntent.getIntExtra(TEST_EXTRA_NAME, 1));
+
+ }
+
+ @TestTargets({
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "putIntegerArrayListExtra",
+ args = {java.lang.String.class, java.util.ArrayList.class}
+ ),
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "getIntegerArrayListExtra",
+ args = {java.lang.String.class}
+ )
+ })
+ public void testPutIntegerArrayListExtra() {
+ final ArrayList<Integer> expected = new ArrayList<Integer>();
+ expected.add(0);
+ mIntent = new Intent();
+ mIntent.putIntegerArrayListExtra(TEST_EXTRA_NAME, expected);
+ assertEquals(expected, mIntent.getIntegerArrayListExtra(TEST_EXTRA_NAME));
+ }
+
+ @TestTargets({
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "setType",
+ args = {java.lang.String.class}
+ ),
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "getType",
+ args = {}
+ )
+ })
+ public void testAccessType() {
+ mIntent.setType(TEST_TYPE);
+ assertEquals(TEST_TYPE, mIntent.getType());
+ }
+
+ @TestTargets({
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "putExtras",
+ args = {android.os.Bundle.class}
+ ),
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "getBundleExtra",
+ args = {java.lang.String.class}
+ )
+ })
+ public void testGetBundleExtra() {
+ final Bundle expected = new Bundle();
+ expected.putBoolean("testTrue", true);
+ mIntent.putExtras(expected);
+ mIntent.putExtra(TEST_EXTRA_NAME, expected);
+
+ assertEquals(expected, mIntent.getBundleExtra(TEST_EXTRA_NAME));
+ }
+
+ @TestTargets({
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "putExtra",
+ args = {java.lang.String.class, char[].class}
+ ),
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "getCharArrayExtra",
+ args = {java.lang.String.class}
+ )
+ })
+ public void testGetCharArrayExtra() {
+ final char[] expected = { 'a', 'b', 'c' };
+ mIntent.putExtra(TEST_EXTRA_NAME, expected);
+ final char[] actual= mIntent.getCharArrayExtra(TEST_EXTRA_NAME);
+ assertEquals(expected.length, actual.length);
+ assertEquals(expected[0], actual[0]);
+ assertEquals(expected[1], actual[1]);
+ assertEquals(expected[2], actual[2]);
+ }
+
+ @TestTargets({
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "putExtra",
+ args = {java.lang.String.class, double[].class}
+ ),
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "getDoubleArrayExtra",
+ args = {java.lang.String.class}
+ )
+ })
+ public void testGetDoubleArrayExtra() {
+ final double[] expected = { 1d, 2d };
+ mIntent.putExtra(TEST_EXTRA_NAME, expected);
+ assertEquals(expected, mIntent.getDoubleArrayExtra(TEST_EXTRA_NAME));
+ }
+
+ @TestTargets({
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "putStringArrayListExtra",
+ args = {java.lang.String.class, java.util.ArrayList.class}
+ ),
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "getStringArrayListExtra",
+ args = {java.lang.String.class}
+ )
+ })
+ public void testPutStringArrayListExtra() {
+ final ArrayList<String> expected = new ArrayList<String>();
+ expected.add("testString");
+ mIntent.putStringArrayListExtra(TEST_EXTRA_NAME, expected);
+ assertEquals(expected, mIntent.getStringArrayListExtra(TEST_EXTRA_NAME));
+ }
+
+ @TestTargets({
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "resolveType",
+ args = {android.content.Context.class}
+ ),
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "setType",
+ args = {java.lang.String.class}
+ ),
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "setData",
+ args = {android.net.Uri.class}
+ )
+ })
+ public void testResolveType1() {
+ final ContentResolver contentResolver = mContext.getContentResolver();
+ assertNull(mIntent.resolveType(mContext));
+ mIntent.setType(TEST_TYPE);
+ assertEquals(TEST_TYPE, mIntent.resolveType(mContext));
+ mIntent.setType(null);
+ mIntent.setData(TEST_URI);
+ assertEquals(contentResolver.getType(TEST_URI), mIntent.resolveType(mContext));
+ mIntent.setData(Uri.parse("test"));
+ assertNull(mIntent.resolveType(mContext));
+ }
+
+ @TestTargets({
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "resolveType",
+ args = {android.content.ContentResolver.class}
+ ),
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "setType",
+ args = {java.lang.String.class}
+ ),
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "setData",
+ args = {android.net.Uri.class}
+ )
+ })
+ public void testResolveType2() {
+ final ContentResolver contentResolver = mContext.getContentResolver();
+ assertNull(mIntent.resolveType(contentResolver));
+ mIntent.setType(TEST_TYPE);
+ assertEquals(TEST_TYPE, mIntent.resolveType(contentResolver));
+ mIntent.setType(null);
+ mIntent.setData(TEST_URI);
+ assertEquals(contentResolver.getType(TEST_URI), mIntent.resolveType(contentResolver));
+ mIntent.setData(Uri.parse("test"));
+ assertNull(mIntent.resolveType(contentResolver));
+ }
+
+ @TestTargets({
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "setComponent",
+ args = {android.content.ComponentName.class}
+ ),
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "getComponent",
+ args = {}
+ )
+ })
+ public void testAccessComponent() {
+ mIntent.setComponent(mComponentName);
+ assertEquals(mComponentName, mIntent.getComponent());
+ }
+
+ @TestTargets({
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "setData",
+ args = {android.net.Uri.class}
+ ),
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "getDataString",
+ args = {}
+ )
+ })
+ public void testGetDataString() {
+ assertNull(mIntent.getDataString());
+ mIntent.setData(TEST_URI);
+ assertEquals(TEST_URI.toString(), mIntent.getDataString());
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "hasCategory",
+ args = {java.lang.String.class}
+ )
+ public void testHasCategory() {
+ assertFalse(mIntent.hasCategory(TEST_CATEGORY));
+ mIntent.addCategory(TEST_CATEGORY);
+ assertTrue(mIntent.hasCategory(TEST_CATEGORY));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "getLongArrayExtra",
+ args = {java.lang.String.class}
+ )
+ public void testGetLongArrayExtra() {
+ final long[] expected = { 1l, 2l, 3l };
+ mIntent.putExtra(TEST_EXTRA_NAME, expected);
+ assertEquals(expected, mIntent.getLongArrayExtra(TEST_EXTRA_NAME));
+ }
+
+ @TestTargets({
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "parseIntent",
+ args = {android.content.res.Resources.class, org.xmlpull.v1.XmlPullParser.class,
+ android.util.AttributeSet.class}
+ ),
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "getIBinderExtra",
+ args = {java.lang.String.class}
+ )
+ })
+ public void testParseIntent() throws XmlPullParserException, IOException,
+ NameNotFoundException {
+ mIntent = null;
+ XmlResourceParser parser = null;
+ AttributeSet attrs = null;
+ ActivityInfo ai = null;
+ try {
+ mIntent = Intent.parseIntent(mContext.getResources(), parser, attrs);
+ fail("should thow exception!");
+ } catch (NullPointerException e) {
+ // expected
+ }
+
+ ai = mContext.getPackageManager().getActivityInfo(mComponentName,
+ PackageManager.GET_META_DATA);
+ parser = ai.loadXmlMetaData(mContext.getPackageManager(), "android.app.alias");
+
+ attrs = Xml.asAttributeSet(parser);
+ int type;
+ while ((type = parser.next()) != XmlPullParser.END_DOCUMENT
+ && type != XmlPullParser.START_TAG) {
+ }
+
+ String nodeName = parser.getName();
+ if (!"alias".equals(nodeName)) {
+ throw new RuntimeException();
+ }
+
+ int outerDepth = parser.getDepth();
+ while ((type = parser.next()) != XmlPullParser.END_DOCUMENT
+ && (type != XmlPullParser.END_TAG || parser.getDepth() > outerDepth)) {
+ if (type == XmlPullParser.END_TAG || type == XmlPullParser.TEXT) {
+ continue;
+ }
+
+ nodeName = parser.getName();
+ if ("intent".equals(nodeName)) {
+ mIntent = Intent.parseIntent(mContext.getResources(), parser, attrs);
+ } else {
+ XmlUtils.skipCurrentTag(parser);
+ }
+ }
+
+ assertNotNull(mIntent);
+ assertEquals("android.intent.action.MAIN", mIntent.getAction());
+ assertEquals(Uri.parse("http://www.google.com/"), mIntent.getData());
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "setClass",
+ args = {android.content.Context.class, java.lang.Class.class}
+ )
+ public void testSetClass() {
+ assertNull(mIntent.getComponent());
+ mIntent.setClass(mContext, MockActivity.class);
+ assertEquals(mComponentName, mIntent.getComponent());
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "resolveTypeIfNeeded",
+ args = {android.content.ContentResolver.class}
+ )
+ public void testResolveTypeIfNeeded() {
+ ContentResolver contentResolver = mContext.getContentResolver();
+ assertNull(mIntent.resolveTypeIfNeeded(contentResolver));
+ mIntent.setType(TEST_TYPE);
+ assertEquals(TEST_TYPE, mIntent.resolveTypeIfNeeded(contentResolver));
+
+ mIntent.setType(null);
+ mIntent.setComponent(mComponentName);
+ assertEquals(null, mIntent.resolveTypeIfNeeded(contentResolver));
+
+ mIntent.setType(TEST_TYPE);
+ mIntent.setComponent(mComponentName);
+ assertEquals(TEST_TYPE, mIntent.resolveTypeIfNeeded(contentResolver));
+
+ mIntent.setType(null);
+ mIntent.setData(TEST_URI);
+ assertNull(mIntent.resolveTypeIfNeeded(contentResolver));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "putExtra",
+ args = {java.lang.String.class, boolean.class}
+ )
+ public void testPutExtra1() {
+ assertFalse(mIntent.getBooleanExtra(TEST_EXTRA_NAME, false));
+ mIntent.putExtra(TEST_EXTRA_NAME, true);
+ assertTrue(mIntent.getBooleanExtra(TEST_EXTRA_NAME, false));
+ mIntent.putExtra(TEST_EXTRA_NAME, false);
+ assertFalse(mIntent.getBooleanExtra(TEST_EXTRA_NAME, false));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "putExtra",
+ args = {java.lang.String.class, byte.class}
+ )
+ public void testPutExtra2() {
+ final byte expected = Byte.valueOf("1");
+ mIntent.putExtra(TEST_EXTRA_NAME, expected);
+ assertEquals(expected, mIntent.getByteExtra(TEST_EXTRA_NAME, Byte.valueOf("1")));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "putExtra",
+ args = {java.lang.String.class, char.class}
+ )
+ public void testPutExtra3() {
+ assertEquals('a', mIntent.getCharExtra(TEST_EXTRA_NAME, 'a'));
+ final char expected = 'a';
+ mIntent.putExtra(TEST_EXTRA_NAME, expected);
+ assertEquals(expected, mIntent.getCharExtra(TEST_EXTRA_NAME, 'a'));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "putExtra",
+ args = {java.lang.String.class, short.class}
+ )
+ public void testPutExtra4() {
+ final Short expected = Short.valueOf("2");
+ assertEquals(Short.valueOf("1").shortValue(), mIntent.getShortExtra(
+ TEST_EXTRA_NAME, Short.valueOf("1")));
+ mIntent.putExtra(TEST_EXTRA_NAME, expected);
+ assertEquals(expected.shortValue(), mIntent.getShortExtra(TEST_EXTRA_NAME, Short.valueOf("1")));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "putExtra",
+ args = {java.lang.String.class, int.class}
+ )
+ public void testPutExtra5() {
+ final int expected = 2;
+ assertEquals(1, mIntent.getIntExtra(TEST_EXTRA_NAME, 1));
+ mIntent.putExtra(TEST_EXTRA_NAME, expected);
+ assertEquals(expected, mIntent.getIntExtra(TEST_EXTRA_NAME, 1));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "putExtra",
+ args = {java.lang.String.class, long.class}
+ )
+ public void testPutExtra6() {
+ final long expected = 2l;
+ assertEquals(1l, mIntent.getLongExtra(TEST_EXTRA_NAME, 1l));
+ mIntent.putExtra(TEST_EXTRA_NAME, expected);
+ assertEquals(expected, mIntent.getLongExtra(TEST_EXTRA_NAME, 1l));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "putExtra",
+ args = {java.lang.String.class, float.class}
+ )
+ public void testPutExtra7() {
+ final float expected = 2f;
+ assertEquals(1f, mIntent.getFloatExtra(TEST_EXTRA_NAME, 1f));
+ mIntent.putExtra(TEST_EXTRA_NAME, expected);
+ assertEquals(expected, mIntent.getFloatExtra(TEST_EXTRA_NAME, 1f));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "putExtra",
+ args = {java.lang.String.class, double.class}
+ )
+ public void testPutExtra8() {
+ final double expected = 2d;
+ assertEquals(1d, mIntent.getDoubleExtra(TEST_EXTRA_NAME, 1d));
+ mIntent.putExtra(TEST_EXTRA_NAME, expected);
+ assertEquals(expected, mIntent.getDoubleExtra(TEST_EXTRA_NAME, 1d));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "putExtra",
+ args = {java.lang.String.class, java.lang.String.class}
+ )
+ public void testPutExtra9() {
+ final String expected = "testString";
+ assertNull(mIntent.getStringExtra(TEST_EXTRA_NAME));
+ mIntent.putExtra(TEST_EXTRA_NAME, expected);
+ assertEquals(expected, mIntent.getStringExtra(TEST_EXTRA_NAME));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "putExtra",
+ args = {java.lang.String.class, java.lang.CharSequence.class}
+ )
+ public void testPutExtra10() {
+ final CharSequence expected = "testString";
+ assertNull(mIntent.getCharSequenceExtra(TEST_EXTRA_NAME));
+ mIntent.putExtra(TEST_EXTRA_NAME, expected);
+ assertEquals(expected, mIntent.getCharSequenceExtra(TEST_EXTRA_NAME));
+ }
+
+ @TestTargets({
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "putExtra",
+ args = {java.lang.String.class, android.os.Parcelable.class}
+ ),
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "getParcelableExtra",
+ args = {java.lang.String.class}
+ )
+ })
+ public void testPutExtra11() {
+ final Intent expected = new Intent(TEST_ACTION);
+ mIntent.putExtra(TEST_EXTRA_NAME, expected);
+ assertEquals(expected, mIntent.getParcelableExtra(TEST_EXTRA_NAME));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "putExtra",
+ args = {java.lang.String.class, android.os.Parcelable[].class}
+ )
+ public void testPutExtra12() {
+ final Intent[] expected = { new Intent(TEST_ACTION), new Intent(mContext, MockActivity.class) };
+ mIntent.putExtra(TEST_EXTRA_NAME, expected);
+ assertEquals(expected, mIntent.getParcelableArrayExtra(TEST_EXTRA_NAME));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "putExtra",
+ args = {java.lang.String.class, java.io.Serializable.class}
+ )
+ public void testPutExtra13() {
+ final TestSerializable expected = new TestSerializable();
+ expected.Name = "testName";
+ mIntent.putExtra(TEST_EXTRA_NAME, expected);
+ assertEquals(expected, mIntent.getSerializableExtra(TEST_EXTRA_NAME));
+ TestSerializable target = (TestSerializable) mIntent.getSerializableExtra(TEST_EXTRA_NAME);
+ assertEquals(expected.Name, target.Name);
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "putExtra",
+ args = {java.lang.String.class, boolean[].class}
+ )
+ public void testPutExtra14() {
+ final boolean[] expected = { true, true, false };
+ mIntent.putExtra(TEST_EXTRA_NAME, expected);
+ assertEquals(expected, mIntent.getBooleanArrayExtra(TEST_EXTRA_NAME));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "putExtra",
+ args = {java.lang.String.class, byte[].class}
+ )
+ public void testPutExtra15() {
+ final byte[] expected = TEST_ACTION.getBytes();
+ mIntent.putExtra(TEST_EXTRA_NAME, expected);
+ assertEquals(expected, mIntent.getByteArrayExtra(TEST_EXTRA_NAME));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "putExtra",
+ args = {java.lang.String.class, short[].class}
+ )
+ public void testPutExtra16() {
+ final short[] expected = { 1, 2, 3 };
+ mIntent.putExtra(TEST_EXTRA_NAME, expected);
+ assertEquals(expected, mIntent.getShortArrayExtra(TEST_EXTRA_NAME));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "putExtra",
+ args = {java.lang.String.class, char[].class}
+ )
+ public void testPutExtra17() {
+ final char[] expected = { '1', '2', '3' };
+ mIntent.putExtra(TEST_EXTRA_NAME, expected);
+ assertEquals(expected, mIntent.getCharArrayExtra(TEST_EXTRA_NAME));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "putExtra",
+ args = {java.lang.String.class, int[].class}
+ )
+ public void testPutExtra18() {
+ final int[] expected = { 1, 2, 3 };
+ mIntent.putExtra(TEST_EXTRA_NAME, expected);
+ assertEquals(expected, mIntent.getIntArrayExtra(TEST_EXTRA_NAME));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "putExtra",
+ args = {java.lang.String.class, long[].class}
+ )
+ public void testPutExtra19() {
+ final long[] expected = { 1l, 2l, 3l };
+ mIntent.putExtra(TEST_EXTRA_NAME, expected);
+ assertEquals(expected, mIntent.getLongArrayExtra(TEST_EXTRA_NAME));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "putExtra",
+ args = {java.lang.String.class, float[].class}
+ )
+ public void testPutExtra20() {
+ final float[] expected = { 1f, 2f, 3f };
+ mIntent.putExtra(TEST_EXTRA_NAME, expected);
+ assertEquals(expected, mIntent.getFloatArrayExtra(TEST_EXTRA_NAME));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "putExtra",
+ args = {java.lang.String.class, double[].class}
+ )
+ public void testPutExtra21() {
+ final double[] expected = { 1d, 2d, 3d };
+ mIntent.putExtra(TEST_EXTRA_NAME, expected);
+ assertEquals(expected, mIntent.getDoubleArrayExtra(TEST_EXTRA_NAME));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "putExtra",
+ args = {java.lang.String.class, java.lang.String[].class}
+ )
+ public void testPutExtra22() {
+ final String[] expected = { "1d", "2d", "3d" };
+ mIntent.putExtra(TEST_EXTRA_NAME, expected);
+ assertEquals(expected, mIntent.getStringArrayExtra(TEST_EXTRA_NAME));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "putExtras",
+ args = {android.os.Bundle.class}
+ )
+ public void testPutExtra23() {
+ final Bundle expected = new Bundle();
+ expected.putString("key", "value");
+ mIntent.putExtra(TEST_EXTRA_NAME, expected);
+ assertEquals(expected, mIntent.getBundleExtra(TEST_EXTRA_NAME));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "putExtra",
+ args = {java.lang.String.class, android.os.IBinder.class}
+ )
+ @SuppressWarnings("deprecation")
+ public void testPutExtra24() {
+ final IBinder expected = ServiceManager.getService("activity");
+ mIntent.putExtra(TEST_EXTRA_NAME, expected);
+ assertEquals(expected, mIntent.getIBinderExtra(TEST_EXTRA_NAME));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "addCategory",
+ args = {java.lang.String.class}
+ )
+ public void testAddCategory() {
+ assertFalse(mIntent.hasCategory(TEST_CATEGORY));
+ mIntent.addCategory(TEST_CATEGORY);
+ assertTrue(mIntent.hasCategory(TEST_CATEGORY));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "putParcelableArrayListExtra",
+ args = {java.lang.String.class, java.util.ArrayList.class}
+ )
+ public void testPutParcelableArrayListExtra() {
+ ArrayList<Intent> expected = new ArrayList<Intent>();
+ mIntent.putExtra(TEST_EXTRA_NAME, expected);
+ assertEquals(expected, mIntent.getParcelableArrayListExtra(TEST_EXTRA_NAME));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "toString",
+ args = {}
+ )
+ public void testToString() {
+ assertNotNull(mIntent.toString());
+ }
+
+ @TestTargets({
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "setData",
+ args = {android.net.Uri.class}
+ ),
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "getData",
+ args = {}
+ )
+ })
+ public void testAccessData() {
+ mIntent.setData(TEST_URI);
+ assertEquals(TEST_URI, mIntent.getData());
+ }
+
+ @TestTargetNew(
+ level = TestLevel.NOT_FEASIBLE,
+ method = "setExtrasClassLoader",
+ args = {java.lang.ClassLoader.class}
+ )
+ public void testSetExtrasClassLoader() {
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "getStringArrayListExtra",
+ args = {java.lang.String.class}
+ )
+ public void testGetStringArrayListExtra() {
+ final ArrayList<String> expected = new ArrayList<String>();
+ expected.add("testString");
+ mIntent.putStringArrayListExtra(TEST_EXTRA_NAME, expected);
+ assertEquals(expected, mIntent.getStringArrayListExtra(TEST_EXTRA_NAME));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "getCharSequenceArrayListExtra",
+ args = {java.lang.String.class}
+ )
+ public void testGetCharSequenceArrayListExtra() {
+ final ArrayList<CharSequence> expected = new ArrayList<CharSequence>();
+ expected.add("testCharSequence");
+ mIntent.putCharSequenceArrayListExtra(TEST_EXTRA_NAME, expected);
+ assertEquals(expected, mIntent.getCharSequenceArrayListExtra(TEST_EXTRA_NAME));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "resolveActivityInfo",
+ args = {android.content.pm.PackageManager.class, int.class}
+ )
+ public void testResolveActivityInfo() throws NameNotFoundException {
+ final PackageManager pm = mContext.getPackageManager();
+ assertEquals(null, mIntent.resolveActivityInfo(pm, 1));
+ mIntent.setComponent(mComponentName);
+ ActivityInfo target = null;
+
+ target = pm.getActivityInfo(mComponentName, 1);
+ assertEquals(target.targetActivity, mIntent.resolveActivityInfo(pm, 1).targetActivity);
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "getParcelableArrayExtra",
+ args = {java.lang.String.class}
+ )
+ public void testGetParcelableExtra() {
+ final Intent expected = new Intent(TEST_ACTION);
+ mIntent.putExtra(TEST_EXTRA_NAME, expected);
+ assertEquals(expected, mIntent.getParcelableExtra(TEST_EXTRA_NAME));
+ }
+
+ @TestTargets({
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "setAction",
+ args = {java.lang.String.class}
+ ),
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "getAction",
+ args = {}
+ )
+ })
+ public void testAccessAction() {
+ mIntent.setAction(TEST_ACTION);
+ assertEquals(TEST_ACTION, mIntent.getAction());
+ }
+
+ @TestTargets({
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "addFlags",
+ args = {int.class}
+ ),
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "getFlags",
+ args = {}
+ )
+ })
+ public void testAddFlags() {
+ final int flag = 1;
+ int expected = 0;
+ mIntent.addFlags(flag);
+ expected |= flag;
+ assertEquals(expected, mIntent.getFlags());
+ }
+
+ @TestTargets({
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "describeContents",
+ args = {}
+ )
+ })
+ public void testDescribeContents() {
+ final int expected = 0;
+ assertEquals(expected, mIntent.describeContents());
+ mIntent.putExtra(TEST_EXTRA_NAME, "test");
+ assertEquals(mIntent.getExtras().describeContents(), mIntent.describeContents());
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "getShortExtra",
+ args = {java.lang.String.class, short.class}
+ )
+ public void testGetShortExtra() {
+
+ final Short expected = Short.valueOf("2");
+ assertEquals(Short.valueOf("1").shortValue(), mIntent.getShortExtra(
+ TEST_EXTRA_NAME, Short.valueOf("1")));
+ mIntent.putExtra(TEST_EXTRA_NAME, expected);
+ assertEquals(expected.shortValue(), mIntent.getShortExtra(TEST_EXTRA_NAME, Short.valueOf("1")));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "clone",
+ args = {}
+ )
+ public void testClone() {
+ mIntent.setAction(TEST_ACTION);
+ mIntent.setClass(mContext, MockActivity.class);
+ mIntent.setComponent(mComponentName);
+ mIntent.setDataAndType(TEST_URI, TEST_TYPE);
+ mIntent.addCategory(TEST_CATEGORY);
+ final String key = "testkey";
+ final String excepted = "testValue";
+ mIntent.putExtra(key, excepted);
+ Intent actual = (Intent) mIntent.clone();
+ assertEquals(mComponentName, actual.getComponent());
+ assertEquals(TEST_ACTION, actual.getAction());
+ assertEquals(mComponentName, actual.getComponent());
+ assertEquals(TEST_URI, actual.getData());
+ assertEquals(TEST_TYPE, actual.getType());
+ assertEquals(TEST_CATEGORY, (String) (actual.getCategories().toArray()[0]));
+ assertEquals(excepted, actual.getStringExtra(key));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "getDoubleExtra",
+ args = {java.lang.String.class, double.class}
+ )
+ public void testGetDoubleExtra() {
+ final double expected = 2d;
+ assertEquals(1d, mIntent.getDoubleExtra(TEST_EXTRA_NAME, 1d));
+ mIntent.putExtra(TEST_EXTRA_NAME, expected);
+ assertEquals(expected, mIntent.getDoubleExtra(TEST_EXTRA_NAME, 1d));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "cloneFilter",
+ args = {}
+ )
+ public void testCloneFilter() {
+ mIntent.setAction(TEST_ACTION);
+ mIntent.setClass(mContext, MockActivity.class);
+ mIntent.setComponent(mComponentName);
+ mIntent.setDataAndType(TEST_URI, TEST_TYPE);
+ mIntent.addCategory(TEST_CATEGORY);
+ final String key = "testkey";
+ mIntent.putExtra(key, "testValue");
+ Intent actual = mIntent.cloneFilter();
+ assertEquals(mComponentName, actual.getComponent());
+ assertEquals(TEST_ACTION, actual.getAction());
+ assertEquals(mComponentName, actual.getComponent());
+ assertEquals(TEST_URI, actual.getData());
+ assertEquals(TEST_TYPE, actual.getType());
+ assertEquals(TEST_CATEGORY, (String) (actual.getCategories().toArray()[0]));
+ assertNull(actual.getStringExtra(key));
+ }
+
+ @TestTargets({
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "getIntentOld",
+ args = {java.lang.String.class}
+ ),
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "getBooleanExtra",
+ args = {java.lang.String.class, boolean.class}
+ )
+ })
+ public void testGetIntentOld() throws URISyntaxException {
+ String uri = "test";
+ mIntent = Intent.getIntentOld(uri);
+ assertEquals(Intent.ACTION_VIEW, mIntent.getAction());
+
+ mIntent = null;
+ try {
+ uri = "test#action(test)categories(test)type(mtype)launchFlags(test)extras(test";
+ mIntent = Intent.getIntentOld(uri);
+ fail("should throw URISyntaxException.");
+ } catch (Exception e) {
+ // expected
+ }
+
+ final String compnent =
+ "component(" + mContext.getPackageName() + "!" + MockActivity.class.getName() + ")";
+ uri = "testdata#action(test)categories(test!test2)type(mtype)launchFlags(1)" + compnent
+ + "extras(Stest=testString!btestbyte=1!"
+ + "Btestboolean=true!ctestchar=a!dtestdouble=1d!"
+ + "itestint=1!ltestlong=1!stestshort=1!ftestfloat=1f)";
+ mIntent = Intent.getIntentOld(uri);
+ assertEquals("test", mIntent.getAction());
+ assertEquals("testdata", mIntent.getData().toString());
+ assertEquals(mComponentName, mIntent.getComponent());
+ assertEquals("test", (String) (mIntent.getCategories().toArray()[0]));
+ assertEquals("mtype", mIntent.getType());
+ assertEquals(1, mIntent.getFlags());
+ assertEquals("testString", mIntent.getStringExtra("test"));
+ assertTrue(mIntent.getBooleanExtra("testboolean", false));
+ final byte b = 1;
+ final byte defaulttByte = 2;
+ assertEquals(b, mIntent.getByteExtra("testbyte", defaulttByte));
+ assertEquals('a', mIntent.getCharExtra("testchar", 'b'));
+ final float testFloat = 1f;
+ assertEquals(testFloat, mIntent.getFloatExtra("testfloat", 2f));
+ final double testDouble = 1d;
+ assertEquals(testDouble, mIntent.getDoubleExtra("testdouble", 2d));
+
+ final long testLong = 1;
+ assertEquals(testLong, mIntent.getLongExtra("testlong", 2l));
+
+ final short testShort = 1;
+ final short defaultShort = 2;
+ assertEquals(testShort, mIntent.getShortExtra("testshort", defaultShort));
+ assertEquals(1, mIntent.getIntExtra("testint", 2));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "getParcelableArrayExtra",
+ args = {java.lang.String.class}
+ )
+ public void testGetParcelableArrayExtra() {
+ final Intent[] expected = { new Intent(TEST_ACTION), new Intent(mContext, MockActivity.class) };
+ mIntent.putExtra(TEST_EXTRA_NAME, expected);
+ assertEquals(expected, mIntent.getParcelableArrayExtra(TEST_EXTRA_NAME));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "resolveActivity",
+ args = {android.content.pm.PackageManager.class}
+ )
+ public void testResolveActivity() {
+ final PackageManager pm = mContext.getPackageManager();
+
+ ComponentName target = mIntent.resolveActivity(pm);
+ assertNull(target);
+
+ mIntent.setComponent(mComponentName);
+ target = mIntent.resolveActivity(pm);
+ assertEquals(mComponentName, target);
+
+ mIntent.setComponent(null);
+ mIntent.setData(TEST_URI);
+ target = mIntent.resolveActivity(pm);
+ assertEquals(ResolverActivity.class.getName(), target.getClassName());
+ assertEquals("android", target.getPackageName());
+
+ mIntent.setComponent(null);
+ mIntent.setAction(TEST_TYPE);
+ target = mIntent.resolveActivity(pm);
+ assertNull(target);
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "getCharExtra",
+ args = {java.lang.String.class, char.class}
+ )
+ public void testGetCharExtra() {
+ assertEquals('a', mIntent.getCharExtra(TEST_EXTRA_NAME, 'a'));
+ final char expected = 'b';
+ mIntent.putExtra(TEST_EXTRA_NAME, expected);
+ assertEquals(expected, mIntent.getCharExtra(TEST_EXTRA_NAME, 'a'));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "getIntent",
+ args = {java.lang.String.class}
+ )
+ public void testGetIntent() throws URISyntaxException {
+ mIntent = Intent.getIntent("test#");
+ assertEquals(Intent.ACTION_VIEW, mIntent.getAction());
+
+ try {
+ String uri = "#Intent;action=android.content.IntentTest_test;"
+ + "category=testCategory;type=testtype;launchFlags=0x1;"
+ + "component=com.android/.app.MockActivity;K.testExtraName=1;end";
+ mIntent = Intent.getIntent(uri);
+ fail("should throw URISyntaxException.");
+ } catch (Exception e) {
+ // expected
+ }
+ mIntent = new Intent();
+
+ String uri = mIntent.toURI();
+ Intent target = Intent.getIntent(uri);
+ assertEquals(Intent.ACTION_VIEW, target.getAction());
+
+ mIntent.setAction(TEST_ACTION);
+ uri = mIntent.toURI();
+ target = Intent.getIntent(uri);
+ assertEquals(TEST_ACTION, target.getAction());
+
+ mIntent.setData(TEST_URI);
+ uri = mIntent.toURI();
+ target = Intent.getIntent(uri);
+ assertEquals(TEST_URI, target.getData());
+
+ mIntent.setComponent(mComponentName);
+ uri = mIntent.toURI();
+ target = Intent.getIntent(uri);
+ assertEquals(mComponentName, target.getComponent());
+
+ mIntent.addCategory(TEST_CATEGORY);
+ uri = mIntent.toURI();
+ target = Intent.getIntent(uri);
+ assertEquals(1, target.getCategories().size());
+ assertEquals(TEST_CATEGORY, (String) (target.getCategories().toArray()[0]));
+
+ mIntent.setType(TEST_TYPE);
+ uri = mIntent.toURI();
+ target = Intent.getIntent(uri);
+ assertEquals(TEST_TYPE, target.getType());
+
+ mIntent.setFlags(1);
+ uri = mIntent.toURI();
+ target = Intent.getIntent(uri);
+ assertEquals(1, target.getFlags());
+
+ String stringValue = "testString";
+ mIntent.putExtra(TEST_EXTRA_NAME, stringValue);
+ uri = mIntent.toURI();
+ target = Intent.getIntent(uri);
+ assertEquals(stringValue, target.getStringExtra(TEST_EXTRA_NAME));
+
+ mIntent.putExtra(TEST_EXTRA_NAME, true);
+ uri = mIntent.toURI();
+ target = Intent.getIntent(uri);
+ assertTrue(target.getBooleanExtra(TEST_EXTRA_NAME, false));
+
+ final byte b = 1;
+ mIntent.putExtra(TEST_EXTRA_NAME, b);
+
+ uri = mIntent.toURI();
+ target = Intent.getIntent(uri);
+ final byte defaulttByte = 2;
+ assertEquals(b, target.getByteExtra(TEST_EXTRA_NAME, defaulttByte));
+
+ final char testChar = 'a';
+ mIntent.putExtra(TEST_EXTRA_NAME, testChar);
+ uri = mIntent.toURI();
+ target = Intent.getIntent(uri);
+ assertEquals(testChar, target.getCharExtra(TEST_EXTRA_NAME, 'b'));
+
+ final double testDouble = 1;
+ mIntent.putExtra(TEST_EXTRA_NAME, testDouble);
+ uri = mIntent.toURI();
+ target = Intent.getIntent(uri);
+ assertEquals(testDouble, target.getDoubleExtra(TEST_EXTRA_NAME, 2));
+
+ final int testInt = 1;
+ mIntent.putExtra(TEST_EXTRA_NAME, testInt);
+ uri = mIntent.toURI();
+ target = Intent.getIntent(uri);
+ assertEquals(testInt, target.getIntExtra(TEST_EXTRA_NAME, 2));
+
+ final long testLong = 1l;
+ mIntent.putExtra(TEST_EXTRA_NAME, testLong);
+ uri = mIntent.toURI();
+ target = Intent.getIntent(uri);
+ assertEquals(testLong, target.getLongExtra(TEST_EXTRA_NAME, 2l));
+
+ final short testShort = 1;
+ final short defaultShort = 2;
+ mIntent.putExtra(TEST_EXTRA_NAME, testShort);
+ uri = mIntent.toURI();
+ target = Intent.getIntent(uri);
+ assertEquals(testShort, target.getShortExtra(TEST_EXTRA_NAME, defaultShort));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "toURI",
+ args = {}
+ )
+ public void testToURI() {
+ mIntent.setFlags(0);
+ assertEquals("#Intent;end", mIntent.toURI());
+
+ mIntent.setData(TEST_URI);
+ assertTrue(mIntent.toURI().indexOf(TEST_URI.toString()) != -1);
+
+ mIntent.setAction(TEST_ACTION);
+ assertTrue(mIntent.toURI().indexOf("action=" + TEST_ACTION) != -1);
+
+ mIntent.addCategory(TEST_CATEGORY);
+ assertTrue(mIntent.toURI().indexOf("category=") != -1);
+
+ mIntent.setType(TEST_TYPE);
+
+ assertTrue(mIntent.toURI().indexOf("type=" + TEST_TYPE) != -1);
+
+ mIntent.setFlags(1);
+ assertFalse(mIntent.toURI().indexOf("launchFlags=" + Integer.toHexString(1)) != -1);
+
+ mIntent.setComponent(mComponentName);
+ assertTrue(mIntent.toURI().indexOf(
+ "component=" + mComponentName.flattenToShortString()) != -1);
+
+ final String stringValue = "testString";
+ mIntent.putExtra(TEST_EXTRA_NAME, stringValue);
+
+ assertTrue(mIntent.toURI().indexOf(getString("S", TEST_EXTRA_NAME, stringValue)) != -1);
+
+ mIntent.putExtra(TEST_EXTRA_NAME, true);
+
+ assertTrue(mIntent.toURI().indexOf(getString("B", TEST_EXTRA_NAME, true)) != -1);
+
+ final byte b = 1;
+ mIntent.putExtra(TEST_EXTRA_NAME, b);
+ assertTrue(mIntent.toURI().indexOf(getString("b", TEST_EXTRA_NAME, b)) != -1);
+
+ final Character testChar = 'a';
+ mIntent.putExtra(TEST_EXTRA_NAME, testChar);
+
+ assertTrue(mIntent.toURI().indexOf(getString("c", TEST_EXTRA_NAME, testChar)) != -1);
+
+ final double testDouble = 1;
+ mIntent.putExtra(TEST_EXTRA_NAME, testDouble);
+ assertTrue(mIntent.toURI().indexOf(getString("d", TEST_EXTRA_NAME, testDouble)) != -1);
+
+ final int testInt = 1;
+ mIntent.putExtra(TEST_EXTRA_NAME, testInt);
+ assertTrue(mIntent.toURI().indexOf(getString("i", TEST_EXTRA_NAME, testInt)) != -1);
+
+ final long testLong = 1l;
+ mIntent.putExtra(TEST_EXTRA_NAME, testLong);
+ assertTrue(mIntent.toURI().indexOf(getString("l", TEST_EXTRA_NAME, testLong)) != -1);
+ final short testShort = 1;
+ mIntent.putExtra(TEST_EXTRA_NAME, testShort);
+ assertTrue(mIntent.toURI().indexOf(getString("s", TEST_EXTRA_NAME, testShort)) != -1);
+ assertTrue(mIntent.toURI().indexOf("end") != -1);
+ }
+
+ private String getString(String entryType, String key, Object value) {
+ StringBuilder uri = new StringBuilder();
+ uri.append(entryType);
+ uri.append('.');
+ uri.append(Uri.encode(key));
+ uri.append('=');
+ uri.append(Uri.encode(value.toString()));
+ return uri.toString();
+ }
+
+ @TestTargets({
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "setFlags",
+ args = {int.class}
+ ),
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "getFlags",
+ args = {}
+ )
+ })
+ public void testAccessFlags() {
+ int expected = 1;
+ mIntent.setFlags(expected);
+ assertEquals(expected, mIntent.getFlags());
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "createChooser",
+ args = {android.content.Intent.class, java.lang.CharSequence.class}
+ )
+ public void testCreateChooser() {
+ Intent target = Intent.createChooser(mIntent, null);
+ assertEquals(Intent.ACTION_CHOOSER, target.getAction());
+ Intent returnIntent = (Intent) target.getParcelableExtra(Intent.EXTRA_INTENT);
+ assertEquals(mIntent.toString(), returnIntent.toString());
+ assertEquals(mIntent.toURI(), returnIntent.toURI());
+ assertNull(returnIntent.getStringExtra(Intent.EXTRA_INTENT));
+ final String title = "title String";
+ target = Intent.createChooser(mIntent, title);
+ assertEquals(title, target.getStringExtra(Intent.EXTRA_TITLE));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "getFloatArrayExtra",
+ args = {java.lang.String.class}
+ )
+ public void testGetFloatArrayExtra() {
+ final float[] expected = { 1f, 2f, 3f };
+ mIntent.putExtra(TEST_EXTRA_NAME, expected);
+ assertEquals(expected, mIntent.getFloatArrayExtra(TEST_EXTRA_NAME));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "setDataAndType",
+ args = {android.net.Uri.class, java.lang.String.class}
+ )
+ public void testSetDataAndType() {
+ mIntent.setDataAndType(TEST_URI, TEST_TYPE);
+ assertEquals(TEST_URI, mIntent.getData());
+ assertEquals(TEST_TYPE, mIntent.getType());
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "setData",
+ args = {android.net.Uri.class}
+ )
+ public void testSetData() {
+ mIntent.setData(TEST_URI);
+ assertEquals(TEST_URI, mIntent.getData());
+ assertNull(mIntent.getType());
+
+ mIntent.setType(TEST_TYPE);
+ mIntent.setData(TEST_URI);
+ assertEquals(TEST_URI, mIntent.getData());
+ assertNull(mIntent.getType());
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "setType",
+ args = {java.lang.String.class}
+ )
+ public void testSetType() {
+ mIntent.setType(TEST_TYPE);
+ assertEquals(TEST_TYPE, mIntent.getType());
+ assertNull(mIntent.getData());
+
+ mIntent.setData(TEST_URI);
+ mIntent.setType(TEST_TYPE);
+ assertEquals(TEST_TYPE, mIntent.getType());
+ assertNull(mIntent.getData());
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "getStringExtra",
+ args = {java.lang.String.class}
+ )
+ public void testGetStringExtra() {
+ final String expected = "testString";
+ assertNull(mIntent.getStringExtra(TEST_EXTRA_NAME));
+ mIntent.putExtra(TEST_EXTRA_NAME, expected);
+ assertEquals(expected, mIntent.getStringExtra(TEST_EXTRA_NAME));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "fillIn",
+ args = {android.content.Intent.class, int.class}
+ )
+ /**
+ * Test that fillIn has no effect when no fields are set.
+ */
+ public void testFillIn_blank() {
+ Intent sourceIntent = new Intent();
+ Intent destIntent = new Intent();
+ assertEquals(0, destIntent.fillIn(sourceIntent, Intent.FILL_IN_ACTION));
+ assertEquals(0, destIntent.fillIn(sourceIntent, 0));
+ assertNull(destIntent.getAction());
+ }
+
+ /**
+ * Test that fillIn copies the action field.
+ */
+ public void testFillIn_action() {
+ Intent sourceIntent = new Intent();
+ Intent destIntent = new Intent();
+ // test action copied when null
+ sourceIntent.setAction(TEST_ACTION);
+ assertEquals(Intent.FILL_IN_ACTION, destIntent.fillIn(sourceIntent, 0));
+ assertEquals(TEST_ACTION, destIntent.getAction());
+ }
+
+ /**
+ * Test that fillIn does not copy action when its already set in target Intent.
+ */
+ public void testFillIn_actionSet() {
+ Intent sourceIntent = new Intent();
+ Intent destIntent = new Intent();
+ final String newAction = "foo";
+ sourceIntent = new Intent();
+ sourceIntent.setAction(newAction);
+ destIntent.setAction(TEST_ACTION);
+
+ assertEquals(0, destIntent.fillIn(sourceIntent, 0));
+ assertEquals(TEST_ACTION, destIntent.getAction());
+ }
+
+ /**
+ * Test that fillIn copies action when {@link Intent#FILL_IN_ACTION} flag is set.
+ */
+ public void testFillIn_actionOverride() {
+ Intent sourceIntent = new Intent();
+ Intent destIntent = new Intent();
+ final String newAction = "foo";
+ sourceIntent = new Intent();
+ sourceIntent.setAction(newAction);
+ destIntent.setAction(TEST_ACTION);
+
+ assertEquals(Intent.FILL_IN_ACTION, destIntent.fillIn(sourceIntent, Intent.FILL_IN_ACTION));
+ assertEquals(newAction, destIntent.getAction());
+ }
+
+ /**
+ * Test that fillIn copies data.
+ */
+ public void testFillIn_data() {
+ Intent sourceIntent = new Intent();
+ Intent destIntent = new Intent();
+ sourceIntent.setData(TEST_URI);
+ assertEquals(Intent.FILL_IN_DATA, destIntent.fillIn(sourceIntent, 0));
+ assertEquals(TEST_URI, destIntent.getData());
+ }
+
+ /**
+ * Test that fillIn does not copy data when already its already set in target Intent.
+ */
+ public void testFillIn_dataSet() {
+ Intent sourceIntent = new Intent();
+ Intent destIntent = new Intent();
+ sourceIntent.setData(TEST_URI);
+ destIntent.setData(ANOTHER_TEST_URI);
+ assertEquals(0, destIntent.fillIn(sourceIntent, 0));
+ assertEquals(ANOTHER_TEST_URI, destIntent.getData());
+ }
+
+ /**
+ * Test that fillIn overrides data when {@link Intent#FILL_IN_DATA} flag is set.
+ */
+ public void testFillIn_dataOverride() {
+ Intent sourceIntent = new Intent();
+ Intent destIntent = new Intent();
+ sourceIntent.setData(TEST_URI);
+ destIntent.setData(ANOTHER_TEST_URI);
+ assertEquals(Intent.FILL_IN_DATA, destIntent.fillIn(sourceIntent, Intent.FILL_IN_DATA));
+ assertEquals(TEST_URI, destIntent.getData());
+ }
+
+ /**
+ * Test that fillIn copies data type.
+ */
+ public void testFillIn_dataType() {
+ Intent sourceIntent = new Intent();
+ Intent destIntent = new Intent();
+ sourceIntent.setType(TEST_TYPE);
+ assertEquals(Intent.FILL_IN_DATA, destIntent.fillIn(sourceIntent, 0));
+ assertEquals(TEST_TYPE, destIntent.getType());
+ }
+
+ /**
+ * Test that fillIn does not copy data type when already its already set in target Intent.
+ */
+ public void testFillIn_dataTypeSet() {
+ Intent sourceIntent = new Intent();
+ Intent destIntent = new Intent();
+ sourceIntent.setType(TEST_TYPE);
+ destIntent.setType(ANOTHER_TEST_TYPE);
+ assertEquals(0, destIntent.fillIn(sourceIntent, 0));
+ assertEquals(ANOTHER_TEST_TYPE, destIntent.getType());
+ }
+
+ /**
+ * Test that fillIn overrides data type when {@link Intent#FILL_IN_DATA} flag is set.
+ */
+ public void testFillIn_dataTypeOverride() {
+ Intent sourceIntent = new Intent();
+ Intent destIntent = new Intent();
+ sourceIntent.setType(TEST_TYPE);
+ destIntent.setType(ANOTHER_TEST_TYPE);
+ assertEquals(Intent.FILL_IN_DATA, destIntent.fillIn(sourceIntent, Intent.FILL_IN_DATA));
+ assertEquals(TEST_TYPE, destIntent.getType());
+ }
+
+ /**
+ * Test component is not copied by fillIn method when {@link Intent#FILL_IN_COMPONENT} flag is
+ * not set.
+ */
+ public void testFillIn_componentNoCopy() {
+ Intent sourceIntent = new Intent();
+ Intent destIntent = new Intent();
+ sourceIntent.setComponent(mComponentName);
+ assertEquals(0, destIntent.fillIn(sourceIntent, 0));
+ assertEquals(null, destIntent.getComponent());
+ }
+
+ /**
+ * Test that fillIn copies component when {@link Intent#FILL_IN_COMPONENT} flag is set.
+ */
+ public void testFillIn_componentOverride() {
+ Intent sourceIntent = new Intent();
+ Intent destIntent = new Intent();
+ sourceIntent.setComponent(mComponentName);
+ destIntent.setComponent(mAnotherComponentName);
+ assertEquals(Intent.FILL_IN_COMPONENT, destIntent.fillIn(sourceIntent,
+ Intent.FILL_IN_COMPONENT));
+ assertEquals(mComponentName, destIntent.getComponent());
+ }
+
+ /**
+ * Test that fillIn copies categories.
+ */
+ public void testFillIn_category() {
+ Intent sourceIntent = new Intent();
+ Intent destIntent = new Intent();
+ // add two categories to ensure all categories are copied
+ sourceIntent.addCategory(TEST_CATEGORY);
+ sourceIntent.addCategory(ANOTHER_TEST_CATEGORY);
+ assertEquals(Intent.FILL_IN_CATEGORIES, destIntent.fillIn(sourceIntent, 0));
+ assertEquals(2, destIntent.getCategories().size());
+ assertTrue(destIntent.getCategories().contains(TEST_CATEGORY));
+ assertTrue(destIntent.getCategories().contains(ANOTHER_TEST_CATEGORY));
+ }
+
+ /**
+ * Test fillIn does not copy categories by default when already set.
+ */
+ public void testFillIn_categorySet() {
+ Intent sourceIntent = new Intent();
+ Intent destIntent = new Intent();
+ sourceIntent = new Intent();
+ sourceIntent.addCategory(TEST_CATEGORY);
+ destIntent.addCategory(ANOTHER_TEST_CATEGORY);
+
+ assertEquals(0, destIntent.fillIn(sourceIntent, 0));
+ assertEquals(1, destIntent.getCategories().size());
+ assertTrue(destIntent.getCategories().contains(ANOTHER_TEST_CATEGORY));
+ assertFalse(destIntent.getCategories().contains(TEST_CATEGORY));
+ }
+
+ /**
+ * Test that fillIn adds categories when {@link Intent#FILL_IN_CATEGORIES} flag is set.
+ */
+ public void testFillIn_categoryOverride() {
+ Intent sourceIntent = new Intent();
+ Intent destIntent = new Intent();
+ sourceIntent = new Intent();
+ sourceIntent.addCategory(TEST_CATEGORY);
+ destIntent.addCategory(ANOTHER_TEST_CATEGORY);
+
+ assertEquals(Intent.FILL_IN_CATEGORIES, destIntent.fillIn(sourceIntent, Intent.FILL_IN_CATEGORIES));
+ assertEquals(1, destIntent.getCategories().size());
+ assertFalse(destIntent.getCategories().contains(ANOTHER_TEST_CATEGORY));
+ assertTrue(destIntent.getCategories().contains(TEST_CATEGORY));
+ }
+
+ /**
+ * Test fillIn copies package.
+ */
+ public void testFillIn_package() {
+ Intent sourceIntent = new Intent();
+ Intent destIntent = new Intent();
+ sourceIntent.setPackage(TEST_PACKAGE);
+ assertEquals(Intent.FILL_IN_PACKAGE, destIntent.fillIn(sourceIntent, 0));
+ assertEquals(TEST_PACKAGE, destIntent.getPackage());
+ }
+
+ /**
+ * Test fillIn does not copy package by default when already set.
+ */
+ public void testFillIn_packageSet() {
+ Intent sourceIntent = new Intent();
+ Intent destIntent = new Intent();
+ sourceIntent.setPackage(TEST_PACKAGE);
+ destIntent.setPackage(ANOTHER_TEST_PACKAGE);
+ assertEquals(0, destIntent.fillIn(sourceIntent, 0));
+ assertEquals(ANOTHER_TEST_PACKAGE, destIntent.getPackage());
+ }
+
+ /**
+ * Test that fillIn overrides package when {@link Intent#FILL_IN_PACKAGE} flag is set.
+ */
+ public void testFillIn_packageOverride() {
+ Intent sourceIntent = new Intent();
+ Intent destIntent = new Intent();
+ sourceIntent.setPackage(TEST_PACKAGE);
+ destIntent.setPackage(ANOTHER_TEST_PACKAGE);
+ assertEquals(Intent.FILL_IN_PACKAGE, destIntent.fillIn(sourceIntent, Intent.FILL_IN_PACKAGE));
+ assertEquals(TEST_PACKAGE, destIntent.getPackage());
+ }
+
+ /**
+ * Test that fillIn copies extras.
+ */
+ public void testFillIn_extras() {
+ Intent sourceIntent = new Intent();
+ Intent destIntent = new Intent();
+ final Bundle bundle = new Bundle();
+ bundle.putBoolean(TEST_EXTRA_NAME, true);
+ sourceIntent.putExtras(bundle);
+ assertEquals(0, destIntent.fillIn(sourceIntent, 0));
+ assertTrue(destIntent.getExtras().getBoolean(TEST_EXTRA_NAME));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "getExtras",
+ args = {}
+ )
+ public void testGetExtras() {
+ assertNull(mIntent.getExtras());
+ final String expected = "testString";
+ mIntent.putExtra(TEST_EXTRA_NAME, expected);
+ assertNotNull(mIntent.getExtras());
+ assertEquals(expected, mIntent.getExtras().getString(TEST_EXTRA_NAME));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "getBooleanExtra",
+ args = {java.lang.String.class, boolean.class}
+ )
+ public void testGetBooleanExtra() {
+ assertFalse(mIntent.getBooleanExtra(TEST_EXTRA_NAME, false));
+ mIntent.putExtra(TEST_EXTRA_NAME, true);
+ assertTrue(mIntent.getBooleanExtra(TEST_EXTRA_NAME, false));
+ mIntent.putExtra(TEST_EXTRA_NAME, false);
+ assertFalse(mIntent.getBooleanExtra(TEST_EXTRA_NAME, false));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "getFloatExtra",
+ args = {java.lang.String.class, float.class}
+ )
+ public void testGetFloatExtra() {
+ float expected = 2f;
+ assertEquals(1f, mIntent.getFloatExtra(TEST_EXTRA_NAME, 1f));
+ mIntent.putExtra(TEST_EXTRA_NAME, expected);
+ assertEquals(expected, mIntent.getFloatExtra(TEST_EXTRA_NAME, 1f));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "getShortArrayExtra",
+ args = {java.lang.String.class}
+ )
+ public void testGetShortArrayExtra() {
+ final short[] expected = { 1, 2, 3 };
+ mIntent.putExtra(TEST_EXTRA_NAME, expected);
+ assertEquals(expected, mIntent.getShortArrayExtra(TEST_EXTRA_NAME));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "getStringArrayExtra",
+ args = {java.lang.String.class}
+ )
+ public void testGetStringArrayExtra() {
+ final String[] expected = { "1d", "2d", "3d" };
+ mIntent.putExtra(TEST_EXTRA_NAME, expected);
+ assertEquals(expected, mIntent.getStringArrayExtra(TEST_EXTRA_NAME));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "getCharSequenceArrayExtra",
+ args = {java.lang.String.class}
+ )
+ public void testGetCharSequenceArrayExtra() {
+ final String[] expected = { "1d", "2d", "3d" };
+ mIntent.putExtra(TEST_EXTRA_NAME, expected);
+ assertEquals(expected, mIntent.getCharSequenceArrayExtra(TEST_EXTRA_NAME));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "getByteArrayExtra",
+ args = {java.lang.String.class}
+ )
+ public void testGetByteArrayExtra() {
+ final byte[] expected = TEST_ACTION.getBytes();
+ mIntent.putExtra(TEST_EXTRA_NAME, expected);
+ assertEquals(expected, mIntent.getByteArrayExtra(TEST_EXTRA_NAME));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "hasFileDescriptors",
+ args = {}
+ )
+ public void testHasFileDescriptors() {
+ Bundle bundle = mIntent.getExtras();
+ assertEquals(bundle != null && bundle.hasFileDescriptors(), mIntent.hasFileDescriptors());
+ final byte[] expected = TEST_ACTION.getBytes();
+ mIntent.putExtra(TEST_EXTRA_NAME, expected);
+ bundle = mIntent.getExtras();
+ assertEquals(bundle != null && bundle.hasFileDescriptors(), mIntent.hasFileDescriptors());
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "getBooleanArrayExtra",
+ args = {java.lang.String.class}
+ )
+ public void testGetBooleanArrayExtra() {
+ final boolean[] expected = { true, true, false };
+ mIntent.putExtra(TEST_EXTRA_NAME, expected);
+ assertEquals(expected, mIntent.getBooleanArrayExtra(TEST_EXTRA_NAME));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "getLongExtra",
+ args = {java.lang.String.class, long.class}
+ )
+ public void testGetLongExtra() {
+ final long expected = 2l;
+ assertEquals(1l, mIntent.getLongExtra(TEST_EXTRA_NAME, 1l));
+ mIntent.putExtra(TEST_EXTRA_NAME, expected);
+ assertEquals(expected, mIntent.getLongExtra(TEST_EXTRA_NAME, 1l));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "removeCategory",
+ args = {java.lang.String.class}
+ )
+ public void testRemoveCategory() {
+ assertNull(mIntent.getCategories());
+ mIntent.addCategory(TEST_CATEGORY);
+ assertNotNull(mIntent.getCategories());
+ assertEquals(1, mIntent.getCategories().size());
+ assertEquals(TEST_CATEGORY, (String) (mIntent.getCategories().toArray()[0]));
+ mIntent.removeCategory(TEST_CATEGORY);
+ assertFalse(mIntent.hasCategory(TEST_CATEGORY));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "filterEquals",
+ args = {android.content.Intent.class}
+ )
+ public void testFilterEquals() {
+ assertFalse(mIntent.filterEquals(null));
+
+ Intent target = new Intent();
+ assertTrue(mIntent.filterEquals(target));
+
+ target.setAction(TEST_ACTION);
+ assertFalse(mIntent.filterEquals(target));
+ mIntent.setAction(TEST_ACTION + "test");
+ assertFalse(mIntent.filterEquals(target));
+ mIntent.setAction(null);
+ assertFalse(mIntent.filterEquals(target));
+ mIntent.setAction(TEST_ACTION);
+ assertTrue(mIntent.filterEquals(target));
+
+ target.setData(TEST_URI);
+ assertFalse(mIntent.filterEquals(target));
+ mIntent.setData(Uri.parse("myURI"));
+ assertFalse(mIntent.filterEquals(target));
+ mIntent.setData(null);
+ assertFalse(mIntent.filterEquals(target));
+ mIntent.setData(TEST_URI);
+ assertTrue(mIntent.filterEquals(target));
+
+ target.setType(TEST_TYPE);
+ assertFalse(mIntent.filterEquals(target));
+ mIntent.setType(TEST_TYPE + "test");
+ assertFalse(mIntent.filterEquals(target));
+ mIntent.setType(null);
+ assertFalse(mIntent.filterEquals(target));
+ mIntent.setType(TEST_TYPE);
+ assertTrue(mIntent.filterEquals(target));
+
+ target.setComponent(mComponentName);
+ assertFalse(mIntent.filterEquals(target));
+ mIntent.setComponent(new ComponentName(mContext, MockReceiver.class));
+ assertFalse(mIntent.filterEquals(target));
+ mIntent.setComponent(null);
+ assertFalse(mIntent.filterEquals(target));
+ mIntent.setComponent(mComponentName);
+ assertTrue(mIntent.filterEquals(target));
+
+ target.addCategory(TEST_CATEGORY);
+ assertFalse(mIntent.filterEquals(target));
+ mIntent.addCategory(TEST_CATEGORY + "test");
+ assertFalse(mIntent.filterEquals(target));
+ mIntent.addCategory(null);
+ assertFalse(mIntent.filterEquals(target));
+ mIntent.addCategory(TEST_CATEGORY);
+ assertFalse(mIntent.filterEquals(target));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "putExtras",
+ args = {android.content.Intent.class}
+ )
+ public void testPutExtras1() {
+ final Intent intent = new Intent();
+ mIntent.putExtras(intent);
+ assertEquals(intent.getExtras(), mIntent.getExtras());
+ intent.putExtra("test2", true);
+ mIntent.putExtras(intent);
+ assertEquals(intent.getExtras().toString(), mIntent.getExtras().toString());
+ }
+
+ @TestTargets({
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "putExtras",
+ args = {android.os.Bundle.class}
+ ),
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "putExtra",
+ args = {java.lang.String.class, android.os.Bundle.class}
+ )
+ })
+ public void testPutExtras2() {
+ final Bundle bundle = new Bundle();
+ mIntent.putExtras(bundle);
+ assertEquals(0, mIntent.getExtras().size());
+ String expected = "testString";
+ bundle.putString(TEST_EXTRA_NAME, expected);
+ mIntent.putExtras(bundle);
+ assertEquals(1, mIntent.getExtras().size());
+ assertEquals(expected, mIntent.getExtras().getString(TEST_EXTRA_NAME));
+ mIntent.putExtra(TEST_EXTRA_NAME, bundle);
+ assertEquals(bundle, mIntent.getBundleExtra(TEST_EXTRA_NAME));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "getByteExtra",
+ args = {java.lang.String.class, byte.class}
+ )
+ public void testGetByteExtra() {
+ final byte expected = Byte.valueOf("1");
+ mIntent.putExtra(TEST_EXTRA_NAME, expected);
+ assertEquals(expected, mIntent.getByteExtra(TEST_EXTRA_NAME, Byte.valueOf("1")));
+ }
+
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "getSerializableExtra",
+ args = {java.lang.String.class}
+ )
+ public void testGetSerializableExtra() {
+ TestSerializable expected = new TestSerializable();
+ expected.Name = "testName";
+ mIntent.putExtra(TEST_EXTRA_NAME, expected);
+ assertEquals(expected, mIntent.getSerializableExtra(TEST_EXTRA_NAME));
+ TestSerializable target = (TestSerializable) mIntent.getSerializableExtra(TEST_EXTRA_NAME);
+ assertEquals(expected.Name, target.Name);
+ }
+
+ @TestTargets({
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "replaceExtras",
+ args = {android.os.Bundle.class}
+ ),
+ @TestTargetNew(
+ level = TestLevel.COMPLETE,
+ method = "replaceExtras",
+ args = {android.content.Intent.class}
+ )
+ })
+ public void testReplaceExtras() {
+ Bundle extras = new Bundle();
+ String bundleKey = "testKey";
+ String bundleValue = "testValue";
+ extras.putString(bundleKey, bundleValue);
+
+ Intent intent = mIntent.replaceExtras(extras);
+ assertSame(mIntent, intent);
+ String actualValue = intent.getExtras().getString(bundleKey);
+ assertEquals(bundleValue, actualValue);
+
+ Intent src = new Intent();
+ String intentName = "srcName";
+ String intentValue = "srcValue";
+ src.putExtra(intentName, intentValue);
+
+ intent = mIntent.replaceExtras(src);
+ assertSame(mIntent, intent);
+ actualValue = intent.getExtras().getString(intentName);
+ assertEquals(intentValue, actualValue);
+ }
+
+ private static class TestSerializable implements Serializable {
+ static final long serialVersionUID = 1l;
+ public String Name;
+ }
+}