/* * Copyright (C) 2011 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 com.android.email.activity; import com.android.emailcommon.utility.IntentUtilities; import android.content.Intent; import android.net.Uri; import android.test.AndroidTestCase; public class IntentUtilitiesTests extends AndroidTestCase { public void testSimple() { final Uri.Builder b = IntentUtilities.createActivityIntentUrlBuilder("/abc"); IntentUtilities.setAccountId(b, 10); IntentUtilities.setMailboxId(b, 20); IntentUtilities.setMessageId(b, 30); IntentUtilities.setAccountUuid(b, "*uuid*"); final Uri u = b.build(); assertEquals("content", u.getScheme()); assertEquals("ui.email.android.com", u.getAuthority()); assertEquals("/abc", u.getPath()); final Intent i = new Intent(Intent.ACTION_MAIN, u); assertEquals(10, IntentUtilities.getAccountIdFromIntent(i)); assertEquals(20, IntentUtilities.getMailboxIdFromIntent(i)); assertEquals(30, IntentUtilities.getMessageIdFromIntent(i)); assertEquals("*uuid*", IntentUtilities.getAccountUuidFromIntent(i)); } public void testGetIdFromIntent() { Intent i; // No URL in intent i = new Intent(getContext(), getClass()); assertEquals(-1, IntentUtilities.getAccountIdFromIntent(i)); assertEquals(-1, IntentUtilities.getMailboxIdFromIntent(i)); assertEquals(-1, IntentUtilities.getMessageIdFromIntent(i)); // No param checkGetIdFromIntent("content://s/", -1); // No value checkGetIdFromIntent("content://s/?ID=", -1); // Value not integer checkGetIdFromIntent("content://s/?ID=x", -1); // Negative value checkGetIdFromIntent("content://s/?ID=-100", -100); // Normal value checkGetIdFromIntent("content://s/?ID=200", 200); // With all 3 params i = new Intent(Intent.ACTION_VIEW, Uri.parse( "content://s/?ACCOUNT_ID=5&MAILBOX_ID=6&MESSAGE_ID=7")); assertEquals(5, IntentUtilities.getAccountIdFromIntent(i)); assertEquals(6, IntentUtilities.getMailboxIdFromIntent(i)); assertEquals(7, IntentUtilities.getMessageIdFromIntent(i)); } public void checkGetIdFromIntent(String uri, long expected) { Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(uri.replace("ID", "ACCOUNT_ID"))); assertEquals(expected, IntentUtilities.getAccountIdFromIntent(i)); i = new Intent(Intent.ACTION_VIEW, Uri.parse(uri.replace("ID", "MAILBOX_ID"))); assertEquals(expected, IntentUtilities.getMailboxIdFromIntent(i)); i = new Intent(Intent.ACTION_VIEW, Uri.parse(uri.replace("ID", "MESSAGE_ID"))); assertEquals(expected, IntentUtilities.getMessageIdFromIntent(i)); } public void testGetAccountUuidFromIntent() { Intent i; // No URL in intent i = new Intent(getContext(), getClass()); assertEquals(null, IntentUtilities.getAccountUuidFromIntent(i)); // No param i = new Intent(Intent.ACTION_VIEW, Uri.parse("content://s/")); assertEquals(null, IntentUtilities.getAccountUuidFromIntent(i)); // No value i = new Intent(Intent.ACTION_VIEW, Uri.parse("content://s/?ACCOUNT_UUID=")); assertEquals(null, IntentUtilities.getAccountUuidFromIntent(i)); // With valid UUID i = new Intent(Intent.ACTION_VIEW, Uri.parse("content://s/?ACCOUNT_UUID=xyz")); assertEquals("xyz", IntentUtilities.getAccountUuidFromIntent(i)); } }