122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy/* 222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy * Copyright (C) 2011 The Android Open Source Project 322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy * 422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy * Licensed under the Apache License, Version 2.0 (the "License"); 522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy * you may not use this file except in compliance with the License. 622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy * You may obtain a copy of the License at 722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy * 822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy * http://www.apache.org/licenses/LICENSE-2.0 922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy * 1022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy * Unless required by applicable law or agreed to in writing, software 1122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy * distributed under the License is distributed on an "AS IS" BASIS, 1222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy * See the License for the specific language governing permissions and 1422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy * limitations under the License. 1522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy */ 1622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 1722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedypackage com.android.emailcommon.provider; 1822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 1922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedyimport com.android.email.provider.ContentCache; 2022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedyimport com.android.email.provider.EmailProvider; 2122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedyimport com.android.email.provider.ProviderTestUtils; 2222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedyimport com.android.emailcommon.provider.EmailContent.MailboxColumns; 2322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedyimport com.android.emailcommon.provider.EmailContent.Message; 2422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedyimport com.android.emailcommon.provider.EmailContent.MessageColumns; 2522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedyimport com.android.emailcommon.utility.Utility; 2622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 2722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedyimport android.content.ContentUris; 2822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedyimport android.content.ContentValues; 2922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedyimport android.content.Context; 3022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedyimport android.net.Uri; 31e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komaloimport android.os.Parcel; 3222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedyimport android.test.MoreAsserts; 3322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedyimport android.test.ProviderTestCase2; 3422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedyimport android.test.suitebuilder.annotation.SmallTest; 3522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 36e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komaloimport java.util.Arrays; 37e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo 3822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy/** 3922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy * Unit tests for the Mailbox inner class. 4022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy * These tests must be locally complete - no server(s) required. 4122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy */ 4222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy@SmallTest 4322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedypublic class MailboxTests extends ProviderTestCase2<EmailProvider> { 4422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy private static final String TEST_DISPLAY_NAME = "display-name"; 4522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy private static final String TEST_PARENT_SERVER_ID = "parent-server-id"; 4622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy private static final String TEST_SERVER_ID = "server-id"; 4722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy private static final String TEST_SYNC_KEY = "sync-key"; 4822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy private static final String TEST_SYNC_STATUS = "sync-status"; 4922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 5022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy private Context mMockContext; 5122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy private EmailProvider mProvider; 5222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 5322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy public MailboxTests() { 5422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy super(EmailProvider.class, EmailContent.AUTHORITY); 5522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy } 5622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 5722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy @Override 5822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy public void setUp() throws Exception { 5922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy super.setUp(); 6022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy mMockContext = getMockContext(); 6122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy mProvider = getProvider(); 6222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy // Invalidate all caches, since we reset the database for each test 636e418aa41a17136be0dddb816d843428a0a1e722Marc Blank ContentCache.invalidateAllCaches(); 6422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy } 6522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 6622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy ////////////////////////////////////////////////////////// 6722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy ////// Utility methods 6822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy ////////////////////////////////////////////////////////// 6922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 7022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy /** Returns the number of messages in a mailbox. */ 7122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy private int getMessageCount(long mailboxId) { 7222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy return Utility.getFirstRowInt(mMockContext, 7322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy ContentUris.withAppendedId(Mailbox.CONTENT_URI, mailboxId), 7422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy new String[] {MailboxColumns.MESSAGE_COUNT}, null, null, null, 0); 7522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy } 7622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 7722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy /** Creates a new message. */ 7822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy private static Message createMessage(Context c, Mailbox b, boolean starred, boolean read, 7922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy int flagLoaded) { 8022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Message message = ProviderTestUtils.setupMessage( 8122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy "1", b.mAccountKey, b.mId, true, false, c, starred, read); 8222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy message.mFlagLoaded = flagLoaded; 8322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy message.save(c); 8422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy return message; 8522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy } 8622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 8722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy ////////////////////////////////////////////////////////// 8822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy ////// The tests 8922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy ////////////////////////////////////////////////////////// 9022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 9122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy /** 9222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy * Test simple mailbox save/retrieve 9322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy */ 9422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy public void testSave() { 9522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy final Context c = mMockContext; 9622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 9722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Account account1 = ProviderTestUtils.setupAccount("mailbox-save", true, c); 9822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy long account1Id = account1.mId; 9922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox box1 = ProviderTestUtils.setupMailbox("box1", account1Id, true, c); 10022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy long box1Id = box1.mId; 10122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 10253ea83ebf91f820692e8fa8e781f5cc982dd94dbBen Komalo Mailbox box2 = Mailbox.restoreMailboxWithId(c, box1Id); 10322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 10422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy ProviderTestUtils.assertMailboxEqual("testMailboxSave", box1, box2); 10522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy } 10622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 10722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy /** 10822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy * Test delete mailbox 10922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy */ 11022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy public void testDelete() { 11122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy final Context c = mMockContext; 11222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 11322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Account account1 = ProviderTestUtils.setupAccount("mailbox-delete", true, c); 11422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy long account1Id = account1.mId; 11522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox box1 = ProviderTestUtils.setupMailbox("box1", account1Id, true, c); 11622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy long box1Id = box1.mId; 11722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox box2 = ProviderTestUtils.setupMailbox("box2", account1Id, true, c); 11822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy long box2Id = box2.mId; 11922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 12022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy String selection = EmailContent.MailboxColumns.ACCOUNT_KEY + "=?"; 12122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy String[] selArgs = new String[] { String.valueOf(account1Id) }; 12222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 12322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy // make sure there are two mailboxes 12422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy int numBoxes = EmailContent.count(c, Mailbox.CONTENT_URI, selection, selArgs); 12522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(2, numBoxes); 12622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 12722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy // now delete one of them 12822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Uri uri = ContentUris.withAppendedId(Mailbox.CONTENT_URI, box1Id); 12922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy c.getContentResolver().delete(uri, null, null); 13022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 13122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy // make sure there's only one mailbox now 13222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy numBoxes = EmailContent.count(c, Mailbox.CONTENT_URI, selection, selArgs); 13322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(1, numBoxes); 13422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 13522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy // now delete the other one 13622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy uri = ContentUris.withAppendedId(Mailbox.CONTENT_URI, box2Id); 13722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy c.getContentResolver().delete(uri, null, null); 13822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 13922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy // make sure there are no mailboxes now 14022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy numBoxes = EmailContent.count(c, Mailbox.CONTENT_URI, selection, selArgs); 14122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(0, numBoxes); 14222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy } 14322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 14422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy public void testGetMailboxType() { 14522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy final Context c = mMockContext; 14622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 14722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Account a = ProviderTestUtils.setupAccount("acct1", true, c); 14822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox bi = ProviderTestUtils.setupMailbox("b1", a.mId, true, c, Mailbox.TYPE_INBOX); 14922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox bm = ProviderTestUtils.setupMailbox("b2", a.mId, true, c, Mailbox.TYPE_MAIL); 15022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 15122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(Mailbox.TYPE_INBOX, Mailbox.getMailboxType(c, bi.mId)); 15222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(Mailbox.TYPE_MAIL, Mailbox.getMailboxType(c, bm.mId)); 15322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(-1, Mailbox.getMailboxType(c, 999999)); // mailbox not found 15422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy } 15522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 15622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy public void testGetDisplayName() { 15722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy final Context c = mMockContext; 15822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 15922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Account a = ProviderTestUtils.setupAccount("acct1", true, c); 16022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox bi = ProviderTestUtils.setupMailbox("b1", a.mId, true, c, Mailbox.TYPE_INBOX); 16122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox bm = ProviderTestUtils.setupMailbox("b2", a.mId, true, c, Mailbox.TYPE_MAIL); 16222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 16322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals("b1", Mailbox.getDisplayName(c, bi.mId)); 16422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals("b2", Mailbox.getDisplayName(c, bm.mId)); 16522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(null, Mailbox.getDisplayName(c, 999999)); // mailbox not found 16622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy } 16722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 16822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy public void testIsRefreshable() { 16922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy final Context c = mMockContext; 17022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 17122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Account a = ProviderTestUtils.setupAccount("acct1", true, c); 17222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox bi = ProviderTestUtils.setupMailbox("b1", a.mId, true, c, Mailbox.TYPE_INBOX); 17322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox bm = ProviderTestUtils.setupMailbox("b1", a.mId, true, c, Mailbox.TYPE_MAIL); 17422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox bd = ProviderTestUtils.setupMailbox("b1", a.mId, true, c, Mailbox.TYPE_DRAFTS); 17522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox bo = ProviderTestUtils.setupMailbox("b1", a.mId, true, c, Mailbox.TYPE_OUTBOX); 17622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 17722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertTrue(Mailbox.isRefreshable(c, bi.mId)); 17822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertTrue(Mailbox.isRefreshable(c, bm.mId)); 17922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertFalse(Mailbox.isRefreshable(c, bd.mId)); 18022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertFalse(Mailbox.isRefreshable(c, bo.mId)); 18122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 18222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy // No such mailbox 18322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertFalse(Mailbox.isRefreshable(c, 9999999)); 18422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 18522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy // Magic mailboxes can't be refreshed. 18622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertFalse(Mailbox.isRefreshable(c, Mailbox.QUERY_ALL_DRAFTS)); 18722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertFalse(Mailbox.isRefreshable(c, Mailbox.QUERY_ALL_INBOXES)); 18822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy } 18922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 19022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy public void testCanMoveFrom() { 19122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy final Context c = mMockContext; 19222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 19322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Account a = ProviderTestUtils.setupAccount("acct1", true, c); 19422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox bi = ProviderTestUtils.setupMailbox("b1", a.mId, true, c, Mailbox.TYPE_INBOX); 19522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox bm = ProviderTestUtils.setupMailbox("b1", a.mId, true, c, Mailbox.TYPE_MAIL); 19622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox bd = ProviderTestUtils.setupMailbox("b1", a.mId, true, c, Mailbox.TYPE_DRAFTS); 19722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox bo = ProviderTestUtils.setupMailbox("b1", a.mId, true, c, Mailbox.TYPE_OUTBOX); 19822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 19981a153463bd9d2e4f71a0985a102548b16a88ec0Ben Komalo assertTrue(bi.canHaveMessagesMoved()); 20081a153463bd9d2e4f71a0985a102548b16a88ec0Ben Komalo assertTrue(bm.canHaveMessagesMoved()); 20181a153463bd9d2e4f71a0985a102548b16a88ec0Ben Komalo assertFalse(bd.canHaveMessagesMoved()); 20281a153463bd9d2e4f71a0985a102548b16a88ec0Ben Komalo assertFalse(bo.canHaveMessagesMoved()); 20322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy } 20422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 20522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy public void testGetMailboxForMessageId() { 20622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy final Context c = mMockContext; 20722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox b1 = ProviderTestUtils.setupMailbox("box1", 1, true, c, Mailbox.TYPE_MAIL); 20822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox b2 = ProviderTestUtils.setupMailbox("box2", 1, true, c, Mailbox.TYPE_MAIL); 20922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Message m1 = ProviderTestUtils.setupMessage("1", b1.mAccountKey, b1.mId, 21022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy true, true, c, false, false); 21122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Message m2 = ProviderTestUtils.setupMessage("1", b2.mAccountKey, b2.mId, 21222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy true, true, c, false, false); 21322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy ProviderTestUtils.assertMailboxEqual("x", b1, Mailbox.getMailboxForMessageId(c, m1.mId)); 21422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy ProviderTestUtils.assertMailboxEqual("x", b2, Mailbox.getMailboxForMessageId(c, m2.mId)); 21522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy } 21622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 21722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy public void testRestoreMailboxWithId() { 21822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy final Context c = mMockContext; 21922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox testMailbox; 22022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 22122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy testMailbox = ProviderTestUtils.setupMailbox("box1", 1, true, c, Mailbox.TYPE_MAIL); 22222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy ProviderTestUtils.assertMailboxEqual( 22322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy "x", testMailbox, Mailbox.restoreMailboxWithId(c, testMailbox.mId)); 22422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy testMailbox = ProviderTestUtils.setupMailbox("box2", 1, true, c, Mailbox.TYPE_MAIL); 22522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy ProviderTestUtils.assertMailboxEqual( 22622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy "x", testMailbox, Mailbox.restoreMailboxWithId(c, testMailbox.mId)); 22722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy // Unknown IDs 22822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertNull(Mailbox.restoreMailboxWithId(c, 8)); 22922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertNull(Mailbox.restoreMailboxWithId(c, -1)); 23022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertNull(Mailbox.restoreMailboxWithId(c, Long.MAX_VALUE)); 23122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy } 23222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 23322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy public void testRestoreMailboxForPath() { 23422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy final Context c = mMockContext; 23522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox testMailbox; 23622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy testMailbox = ProviderTestUtils.setupMailbox("a/b/c/box", 1, true, c, Mailbox.TYPE_MAIL); 23722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy ProviderTestUtils.assertMailboxEqual( 23822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy "x", testMailbox, Mailbox.restoreMailboxForPath(c, 1, "a/b/c/box")); 23922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy // Same name, different account; no match 24022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertNull(Mailbox.restoreMailboxForPath(c, 2, "a/b/c/box")); 24122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy // Substring; no match 24222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertNull(Mailbox.restoreMailboxForPath(c, 1, "a/b/c")); 24322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy // Wild cards not supported; no match 24422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertNull(Mailbox.restoreMailboxForPath(c, 1, "a/b/c/%")); 24522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy } 24622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 24722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy public void testFindMailboxOfType() { 24822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy final Context context = mMockContext; 24922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 25022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy // Create two accounts and a variety of mailbox types 25122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Account acct1 = ProviderTestUtils.setupAccount("acct1", true, context); 25222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox acct1Inbox = 25322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy ProviderTestUtils.setupMailbox("Inbox1", acct1.mId, true, context, Mailbox.TYPE_INBOX); 25422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox acct1Calendar = 25522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy ProviderTestUtils.setupMailbox("Cal1", acct1.mId, true, context, Mailbox.TYPE_CALENDAR); 25622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox acct1Contacts = 25722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy ProviderTestUtils.setupMailbox("Con1", acct1.mId, true, context, Mailbox.TYPE_CONTACTS); 25822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Account acct2 = ProviderTestUtils.setupAccount("acct1", true, context); 25922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox acct2Inbox = 26022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy ProviderTestUtils.setupMailbox("Inbox2", acct2.mId, true, context, Mailbox.TYPE_INBOX); 26122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox acct2Calendar = 26222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy ProviderTestUtils.setupMailbox("Cal2", acct2.mId, true, context, Mailbox.TYPE_CALENDAR); 26322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox acct2Contacts = 26422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy ProviderTestUtils.setupMailbox("Con2", acct2.mId, true, context, Mailbox.TYPE_CONTACTS); 26522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 26622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy // Check that we can find them by type 26722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(acct1Inbox.mId, 26822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox.findMailboxOfType(context, acct1.mId, Mailbox.TYPE_INBOX)); 26922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(acct2Inbox.mId, 27022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox.findMailboxOfType(context, acct2.mId, Mailbox.TYPE_INBOX)); 27122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(acct1Calendar.mId, 27222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox.findMailboxOfType(context, acct1.mId, Mailbox.TYPE_CALENDAR)); 27322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(acct2Calendar.mId, 27422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox.findMailboxOfType(context, acct2.mId, Mailbox.TYPE_CALENDAR)); 27522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(acct1Contacts.mId, 27622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox.findMailboxOfType(context, acct1.mId, Mailbox.TYPE_CONTACTS)); 27722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(acct2Contacts.mId, 27822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox.findMailboxOfType(context, acct2.mId, Mailbox.TYPE_CONTACTS)); 27922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 28022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy // Check that nonexistent mailboxes are not returned 28122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(Mailbox.NO_MAILBOX, 28222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox.findMailboxOfType(context, acct1.mId, Mailbox.TYPE_DRAFTS)); 28322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(Mailbox.NO_MAILBOX, 28422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox.findMailboxOfType(context, acct1.mId, Mailbox.TYPE_OUTBOX)); 28522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 28622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy // delete account 1 and confirm no mailboxes are returned 28722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy context.getContentResolver().delete( 28822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy ContentUris.withAppendedId(Account.CONTENT_URI, acct1.mId), null, null); 28922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(Mailbox.NO_MAILBOX, 29022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox.findMailboxOfType(context, acct1.mId, Mailbox.TYPE_INBOX)); 29122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(Mailbox.NO_MAILBOX, 29222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox.findMailboxOfType(context, acct1.mId, Mailbox.TYPE_CALENDAR)); 29322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(Mailbox.NO_MAILBOX, 29422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox.findMailboxOfType(context, acct1.mId, Mailbox.TYPE_CONTACTS)); 29522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy } 29622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 29722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy public void testRestoreMailboxOfType() { 29822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy final Context context = getMockContext(); 29922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 30022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy // Create two accounts and a variety of mailbox types 30122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Account acct1 = ProviderTestUtils.setupAccount("acct1", true, context); 30222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox acct1Inbox = 30322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy ProviderTestUtils.setupMailbox("Inbox1", acct1.mId, true, context, Mailbox.TYPE_INBOX); 30422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox acct1Calendar = 30522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy ProviderTestUtils.setupMailbox("Cal1", acct1.mId, true, context, Mailbox.TYPE_CALENDAR); 30622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox acct1Contacts = 30722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy ProviderTestUtils.setupMailbox("Con1", acct1.mId, true, context, Mailbox.TYPE_CONTACTS); 30822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Account acct2 =ProviderTestUtils.setupAccount("acct1", true, context); 30922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox acct2Inbox = 31022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy ProviderTestUtils.setupMailbox("Inbox2", acct2.mId, true, context, Mailbox.TYPE_INBOX); 31122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox acct2Calendar = 31222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy ProviderTestUtils.setupMailbox("Cal2", acct2.mId, true, context, Mailbox.TYPE_CALENDAR); 31322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox acct2Contacts = 31422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy ProviderTestUtils.setupMailbox("Con2", acct2.mId, true, context, Mailbox.TYPE_CONTACTS); 31522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 31622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy // Check that we can find them by type 31722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy ProviderTestUtils.assertMailboxEqual("testRestoreMailboxOfType", acct1Inbox, 31822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox.restoreMailboxOfType(context, acct1.mId, Mailbox.TYPE_INBOX)); 31922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy ProviderTestUtils.assertMailboxEqual("testRestoreMailboxOfType", acct2Inbox, 32022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox.restoreMailboxOfType(context, acct2.mId, Mailbox.TYPE_INBOX)); 32122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy ProviderTestUtils.assertMailboxEqual("testRestoreMailboxOfType", acct1Calendar, 32222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox.restoreMailboxOfType(context, acct1.mId, Mailbox.TYPE_CALENDAR)); 32322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy ProviderTestUtils.assertMailboxEqual("testRestoreMailboxOfType", acct2Calendar, 32422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox.restoreMailboxOfType(context, acct2.mId, Mailbox.TYPE_CALENDAR)); 32522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy ProviderTestUtils.assertMailboxEqual("testRestoreMailboxOfType", acct1Contacts, 32622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox.restoreMailboxOfType(context, acct1.mId, Mailbox.TYPE_CONTACTS)); 32722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy ProviderTestUtils.assertMailboxEqual("testRestoreMailboxOfType", acct2Contacts, 32822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox.restoreMailboxOfType(context, acct2.mId, Mailbox.TYPE_CONTACTS)); 32922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy } 33022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 33122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy /** 33222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy * Test for the message count triggers (insert/delete/move mailbox), and also 33322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy * {@link EmailProvider#recalculateMessageCount}. 33422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy * 33522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy * It also covers: 33622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy * - {@link Mailbox#getMessageCountByMailboxType(Context, int)} 33722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy * - {@link Mailbox#getUnreadCountByAccountAndMailboxType(Context, long, int)} 33822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy * - {@link Mailbox#getUnreadCountByMailboxType(Context, int)} 33922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy * - {@link Message#getFavoriteMessageCount(Context)} 34022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy * - {@link Message#getFavoriteMessageCount(Context, long)} 34122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy */ 34222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy public void testMessageCount() { 34322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy final Context c = mMockContext; 34422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 34522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy // Create 2 accounts 34622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Account a1 = ProviderTestUtils.setupAccount("holdflag-1", true, c); 34722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Account a2 = ProviderTestUtils.setupAccount("holdflag-2", true, c); 34822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 34922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy // Create 2 mailboxes for each account 35022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox b1 = ProviderTestUtils.setupMailbox("box1", a1.mId, true, c, Mailbox.TYPE_INBOX); 35122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox b2 = ProviderTestUtils.setupMailbox("box2", a1.mId, true, c, Mailbox.TYPE_OUTBOX); 35222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox b3 = ProviderTestUtils.setupMailbox("box3", a2.mId, true, c, Mailbox.TYPE_INBOX); 35322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox b4 = ProviderTestUtils.setupMailbox("box4", a2.mId, true, c, Mailbox.TYPE_OUTBOX); 35422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox bt = ProviderTestUtils.setupMailbox("boxT", a2.mId, true, c, Mailbox.TYPE_TRASH); 35522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 35622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy // 0. Check the initial values, just in case. 35722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 35822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(0, getMessageCount(b1.mId)); 35922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(0, getMessageCount(b2.mId)); 36022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(0, getMessageCount(b3.mId)); 36122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(0, getMessageCount(b4.mId)); 36222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(0, getMessageCount(bt.mId)); 36322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 36422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(0, Message.getFavoriteMessageCount(c)); 36522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(0, Message.getFavoriteMessageCount(c, a1.mId)); 36622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(0, Message.getFavoriteMessageCount(c, a2.mId)); 36722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(0, Mailbox.getUnreadCountByMailboxType(c, Mailbox.TYPE_INBOX)); 36822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(0, Mailbox.getUnreadCountByMailboxType(c, Mailbox.TYPE_OUTBOX)); 36922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(0, Mailbox.getMessageCountByMailboxType(c, Mailbox.TYPE_INBOX)); 37022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(0, Mailbox.getMessageCountByMailboxType(c, Mailbox.TYPE_OUTBOX)); 37122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(0, Mailbox.getMessageCountByMailboxType(c, Mailbox.TYPE_TRASH)); 37222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 37322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(0, Mailbox.getUnreadCountByAccountAndMailboxType(c, 37422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy a1.mId, Mailbox.TYPE_INBOX)); 37522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(0, Mailbox.getUnreadCountByAccountAndMailboxType(c, 37622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy a1.mId, Mailbox.TYPE_OUTBOX)); 37722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(0, Mailbox.getUnreadCountByAccountAndMailboxType(c, 37822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy a1.mId, Mailbox.TYPE_TRASH)); 37922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(0, Mailbox.getUnreadCountByAccountAndMailboxType(c, 38022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy a2.mId, Mailbox.TYPE_INBOX)); 38122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(0, Mailbox.getUnreadCountByAccountAndMailboxType(c, 38222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy a2.mId, Mailbox.TYPE_OUTBOX)); 38322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(0, Mailbox.getUnreadCountByAccountAndMailboxType(c, 38422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy a2.mId, Mailbox.TYPE_TRASH)); 38522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 38622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy // 1. Test for insert triggers. 38722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 38822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy // Create some messages 38922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy // b1 (account 1, inbox): 1 message, including 1 starred 39022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Message m11 = createMessage(c, b1, true, false, Message.FLAG_LOADED_COMPLETE); 39122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 39222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy // b2 (account 1, outbox): 2 message, including 1 starred 39322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Message m21 = createMessage(c, b2, false, false, Message.FLAG_LOADED_COMPLETE); 39422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Message m22 = createMessage(c, b2, true, true, Message.FLAG_LOADED_COMPLETE); 39522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 39622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy // b3 (account 2, inbox): 3 message, including 1 starred 39722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Message m31 = createMessage(c, b3, false, false, Message.FLAG_LOADED_COMPLETE); 39822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Message m32 = createMessage(c, b3, false, false, Message.FLAG_LOADED_COMPLETE); 39922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Message m33 = createMessage(c, b3, true, true, Message.FLAG_LOADED_COMPLETE); 40022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 40122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy // b4 (account 2, outbox) has no messages. 40222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 40322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy // bt (account 2, trash) has 3 messages, including 2 starred 40422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Message mt1 = createMessage(c, bt, true, false, Message.FLAG_LOADED_COMPLETE); 40522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Message mt2 = createMessage(c, bt, true, false, Message.FLAG_LOADED_COMPLETE); 40622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Message mt3 = createMessage(c, bt, false, false, Message.FLAG_LOADED_COMPLETE); 40722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 40822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy // Check message counts 40922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(1, getMessageCount(b1.mId)); 41022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(2, getMessageCount(b2.mId)); 41122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(3, getMessageCount(b3.mId)); 41222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(0, getMessageCount(b4.mId)); 41322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(3, getMessageCount(bt.mId)); 41422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 41522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy // Check the simple counting methods. 41622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(3, Message.getFavoriteMessageCount(c)); // excludes starred in trash 41722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(2, Message.getFavoriteMessageCount(c, a1.mId)); 41822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(1, Message.getFavoriteMessageCount(c, a2.mId)); // excludes starred in trash 41922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(3, Mailbox.getUnreadCountByMailboxType(c, Mailbox.TYPE_INBOX)); 42022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(1, Mailbox.getUnreadCountByMailboxType(c, Mailbox.TYPE_OUTBOX)); 42122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(4, Mailbox.getMessageCountByMailboxType(c, Mailbox.TYPE_INBOX)); 42222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(2, Mailbox.getMessageCountByMailboxType(c, Mailbox.TYPE_OUTBOX)); 42322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(3, Mailbox.getMessageCountByMailboxType(c, Mailbox.TYPE_TRASH)); 42422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 42522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(1, Mailbox.getUnreadCountByAccountAndMailboxType(c, 42622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy a1.mId, Mailbox.TYPE_INBOX)); 42722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(1, Mailbox.getUnreadCountByAccountAndMailboxType(c, 42822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy a1.mId, Mailbox.TYPE_OUTBOX)); 42922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(0, Mailbox.getUnreadCountByAccountAndMailboxType(c, 43022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy a1.mId, Mailbox.TYPE_TRASH)); 43122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(2, Mailbox.getUnreadCountByAccountAndMailboxType(c, 43222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy a2.mId, Mailbox.TYPE_INBOX)); 43322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(0, Mailbox.getUnreadCountByAccountAndMailboxType(c, 43422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy a2.mId, Mailbox.TYPE_OUTBOX)); 43522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(3, Mailbox.getUnreadCountByAccountAndMailboxType(c, 43622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy a2.mId, Mailbox.TYPE_TRASH)); 43722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 43822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy // 2. Check the "move mailbox" trigger. 43922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 44022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy // Move m32 (in mailbox 3) to mailbox 4. 44122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy ContentValues values = new ContentValues(); 44222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy values.put(MessageColumns.MAILBOX_KEY, b4.mId); 44322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 44422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy getProvider().update(Message.CONTENT_URI, values, EmailContent.ID_SELECTION, 44522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy new String[] {"" + m32.mId}); 44622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 44722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy // Check message counts 44822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(1, getMessageCount(b1.mId)); 44922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(2, getMessageCount(b2.mId)); 45022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(2, getMessageCount(b3.mId)); 45122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(1, getMessageCount(b4.mId)); 45222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 45322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy // 3. Check the delete trigger. 45422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 45522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy // Delete m11 (in mailbox 1) 45622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy getProvider().delete(Message.CONTENT_URI, EmailContent.ID_SELECTION, 45722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy new String[] {"" + m11.mId}); 45822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy // Delete m21 (in mailbox 2) 45922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy getProvider().delete(Message.CONTENT_URI, EmailContent.ID_SELECTION, 46022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy new String[] {"" + m21.mId}); 46122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 46222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy // Check message counts 46322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(0, getMessageCount(b1.mId)); 46422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(1, getMessageCount(b2.mId)); 46522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(2, getMessageCount(b3.mId)); 46622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(1, getMessageCount(b4.mId)); 46722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 46822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy // No such mailbox type. 46922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(0, Mailbox.getMessageCountByMailboxType(c, 99999)); 47022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(0, Mailbox.getUnreadCountByAccountAndMailboxType(c, a1.mId, 99999)); 47122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(0, Mailbox.getUnreadCountByMailboxType(c, 99999)); 47222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 47322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy // No such account 47422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(0, Mailbox.getUnreadCountByAccountAndMailboxType(c, 47522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 99999, Mailbox.TYPE_INBOX)); 47622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy } 47722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 47822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy /** 47922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy * Check if update on MAILBOX_ID_ADD_TO_FIELD updates the cache properly. 48022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy */ 48122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy public void testUpdateCacheMailboxIdAddToField() { 48222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy final Context c = mMockContext; 48322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 48422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Account a1 = ProviderTestUtils.setupAccount("a1", true, c); 48522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Mailbox b1 = ProviderTestUtils.setupMailbox("box1", a1.mId, true, c, Mailbox.TYPE_INBOX); 48622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 48722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy int start = Mailbox.restoreMailboxWithId(c, b1.mId).mSyncInterval; 48822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 48922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy // +1 to SYNC_INTERVAL 49022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy ContentValues cv = new ContentValues(); 49122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy cv.put(EmailContent.FIELD_COLUMN_NAME, MailboxColumns.SYNC_INTERVAL); 49222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy cv.put(EmailContent.ADD_COLUMN_NAME, 1); 49322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy mProvider.update(ContentUris.withAppendedId(Mailbox.ADD_TO_FIELD_URI, a1.mId), cv, 49422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy null, null); 49522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 49622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy // Check 49722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy assertEquals(start + 1, Mailbox.restoreMailboxWithId(c, b1.mId).mSyncInterval); 49822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy } 49922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 500e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo private Mailbox buildTestMailbox(String serverId) { 501e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo return buildTestMailbox(serverId, null); 502e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo } 503e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo 504e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo private Mailbox buildTestMailbox(String serverId, String name) { 505e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo name = (name == null) ? TEST_DISPLAY_NAME : name; 50622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 507e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo Mailbox testMailbox = new Mailbox(); 508e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo testMailbox.mServerId = serverId; 509e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo testMailbox.mDisplayName = name; 51022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy testMailbox.mParentServerId = TEST_PARENT_SERVER_ID; 51122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy testMailbox.mSyncKey = TEST_SYNC_KEY; 51222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy testMailbox.mSyncStatus = TEST_SYNC_STATUS; 51322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy testMailbox.mAccountKey = 1L; 51422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy testMailbox.mDelimiter = '/'; 51522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy testMailbox.mFlags = 2; 51622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy testMailbox.mFlagVisible = true; 51722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy testMailbox.mParentKey = 3L; 51822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy testMailbox.mSyncInterval = 4; 51922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy testMailbox.mSyncLookback = 5; 52022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy testMailbox.mSyncTime = 6L; 52122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy testMailbox.mType = 7; 52222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy testMailbox.mVisibleLimit = 8; 523e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo testMailbox.mLastSeenMessageKey = 9L; 5247984aa60a012374e286802fa35a6b3e79866bca9Todd Kennedy testMailbox.mLastTouchedTime = 10L; 525e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo 526e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo return testMailbox; 527e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo } 528e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo 529e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo public void testGetHashes() { 530e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo final Context c = mMockContext; 531e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo Mailbox testMailbox = buildTestMailbox(TEST_SERVER_ID); 53222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy testMailbox.save(c); 53322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 53422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy Object[] testHash; 53522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy testHash = new Object[] { 53622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy testMailbox.mId, TEST_DISPLAY_NAME, TEST_SERVER_ID, 53722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy TEST_PARENT_SERVER_ID, 1L /*mAccountKey*/, 7 /*mType */, 53822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy (int)'/' /*mDelimiter */, TEST_SYNC_KEY, 5 /*mSyncLookback*/, 53922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 4 /*mSyncInterval*/, 6L /*mSyncTime*/, true /*mFlagVisible*/, 2 /*mFlags*/, 5407984aa60a012374e286802fa35a6b3e79866bca9Todd Kennedy 8 /*mVisibleLimit*/, TEST_SYNC_STATUS, 3L /*mParentKey*/, 9L /*mLastSeen*/, 5417984aa60a012374e286802fa35a6b3e79866bca9Todd Kennedy 10L /*mLastTouchedTime*/, 54222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy }; 54322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy MoreAsserts.assertEquals(testHash, testMailbox.getHashes()); 54422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 54522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy // Verify null checks happen correctly 54622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy testMailbox.mDisplayName = null; 54722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy testMailbox.mParentServerId = null; 54822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy testMailbox.mServerId = null; 54922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy testMailbox.mSyncKey = null; 55022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy testMailbox.mSyncStatus = null; 55122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy testMailbox.mFlagVisible = false; 55222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 55322208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy testHash = new Object[] { 55422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy testMailbox.mId, null /*mDisplayname*/, null /*mServerId*/, 55522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy null /*mParentServerId*/, 1L /*mAccountKey*/, 7 /*mType */, 55622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy (int)'/' /*mDelimiter */, null /*mSyncKey*/, 5 /*mSyncLookback*/, 55722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 4 /*mSyncInterval*/, 6L /*mSyncTime*/, false /*mFlagVisible*/, 2 /*mFlags*/, 5587984aa60a012374e286802fa35a6b3e79866bca9Todd Kennedy 8 /*mVisibleLimit*/, null /*mSyncStatus*/, 3L /*mParentKey*/, 9L /*mLastSeen*/, 5597984aa60a012374e286802fa35a6b3e79866bca9Todd Kennedy 10L /*mLastTouchedTime*/, 56022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy }; 56122208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy MoreAsserts.assertEquals(testHash, testMailbox.getHashes()); 56222208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy } 563e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo 564e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo public void testParcelling() { 565e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo Mailbox original = buildTestMailbox("serverId", "display name for mailbox"); 566e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo 567e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo Parcel p = Parcel.obtain(); 568e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo original.writeToParcel(p, 0 /* flags */); 569e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo 570e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo // Reset. 571e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo p.setDataPosition(0); 572e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo 573e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo Mailbox unparcelled = Mailbox.CREATOR.createFromParcel(p); 574e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo MoreAsserts.assertEquals(original.getHashes(), unparcelled.getHashes()); 575e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo 576e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo Mailbox phony = buildTestMailbox("different ID", "display name for mailbox"); 577e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo assertFalse(Arrays.equals(phony.getHashes(), unparcelled.getHashes())); 578e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo 579e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo p.recycle(); 580e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo } 581e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo 582e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo public void testParcellingWithPartialMailbox() { 583e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo Mailbox unpopulated = new Mailbox(); 584e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo unpopulated.mDisplayName = "the only thing filled in for some reason"; 585e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo 586e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo Parcel p = Parcel.obtain(); 587e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo unpopulated.writeToParcel(p, 0 /* flags */); 588e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo 589e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo // Reset. 590e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo p.setDataPosition(0); 591e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo 592e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo Mailbox unparcelled = Mailbox.CREATOR.createFromParcel(p); 593e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo MoreAsserts.assertEquals(unpopulated.getHashes(), unparcelled.getHashes()); 594e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo 595e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo p.recycle(); 596e0bb7e79092a1066f4cf42ec364a81ebb31ac808Ben Komalo } 59722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy} 59822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy 599