128448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler/* 228448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler * Copyright (C) 2009 The Android Open Source Project 328448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler * 428448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler * Licensed under the Apache License, Version 2.0 (the "License"); 528448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler * you may not use this file except in compliance with the License. 628448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler * You may obtain a copy of the License at 728448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler * 828448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler * http://www.apache.org/licenses/LICENSE-2.0 928448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler * 1028448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler * Unless required by applicable law or agreed to in writing, software 1128448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler * distributed under the License is distributed on an "AS IS" BASIS, 1228448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1328448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler * See the License for the specific language governing permissions and 1428448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler * limitations under the License. 1528448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler */ 1628448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler 1728448e782b825d1978c0923003a2cf91efe733dcAndrew Stadlerpackage com.android.email.provider; 1828448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler 1931d9acbf0623872f9d4a2b3210b5970854b654c7Marc Blankimport com.android.emailcommon.internet.Rfc822Output; 20f5418f1f93b02e7fab9f15eb201800b65510998eMarc Blankimport com.android.emailcommon.provider.Account; 21a7bc0319a75184ad706bb35c049af107ac3688e6Marc Blankimport com.android.emailcommon.provider.EmailContent; 22a7bc0319a75184ad706bb35c049af107ac3688e6Marc Blankimport com.android.emailcommon.provider.EmailContent.Attachment; 23a7bc0319a75184ad706bb35c049af107ac3688e6Marc Blankimport com.android.emailcommon.provider.EmailContent.Body; 24a7bc0319a75184ad706bb35c049af107ac3688e6Marc Blankimport com.android.emailcommon.provider.EmailContent.Message; 2512b82d9374947c9268217f45befe8a74bd9b60d7Ben Komaloimport com.android.emailcommon.provider.HostAuth; 2653ea83ebf91f820692e8fa8e781f5cc982dd94dbBen Komaloimport com.android.emailcommon.provider.Mailbox; 2731d9acbf0623872f9d4a2b3210b5970854b654c7Marc Blankimport com.android.emailcommon.utility.Utility; 2828448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler 29897a0ea81c8cddcb142d6ac7f7c47801858c8537Makoto Onukiimport android.content.ContentUris; 3028448e782b825d1978c0923003a2cf91efe733dcAndrew Stadlerimport android.content.Context; 31206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onukiimport android.net.Uri; 3220225d57609d6a5e482c088fdad60c29212d31a0Makoto Onukiimport android.test.MoreAsserts; 3328448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler 34206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onukiimport java.io.File; 35206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onukiimport java.io.FileOutputStream; 36206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki 3728448e782b825d1978c0923003a2cf91efe733dcAndrew Stadlerimport junit.framework.Assert; 3828448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler 3928448e782b825d1978c0923003a2cf91efe733dcAndrew Stadlerpublic class ProviderTestUtils extends Assert { 4028448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler 4128448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler /** 4228448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler * No constructor - statics only 4328448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler */ 4428448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler private ProviderTestUtils() { 4528448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler } 4628448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler 4728448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler /** 4828448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler * Create an account for test purposes 4928448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler */ 5028448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler public static Account setupAccount(String name, boolean saveIt, Context context) { 5128448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler Account account = new Account(); 5228448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler 5328448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler account.mDisplayName = name; 5428448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler account.mEmailAddress = name + "@android.com"; 5528448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler account.mSyncKey = "sync-key-" + name; 5628448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler account.mSyncLookback = 1; 57f5418f1f93b02e7fab9f15eb201800b65510998eMarc Blank account.mSyncInterval = Account.CHECK_INTERVAL_NEVER; 58da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler account.mHostAuthKeyRecv = 0; 59da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler account.mHostAuthKeySend = 0; 6028448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler account.mFlags = 4; 6128448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler account.mSenderName = name; 6253093871c492d03947c494f17e2463b27345e083Marc Blank account.mProtocolVersion = "2.5" + name; 63aeee10e57ef4d931e7708fde218d590453a82aeaMarc Blank account.mPolicyKey = 0; 64345fb8b737c1632fb2a7e69ac44b8612be6237edAndrew Stadler account.mSecuritySyncKey = "sec-sync-key-" + name; 65345fb8b737c1632fb2a7e69ac44b8612be6237edAndrew Stadler account.mSignature = "signature-" + name; 6628448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler if (saveIt) { 679e2c6bd5f21f2d19eef7ebfe30e6fdf94ede0857Andrew Stadler account.save(context); 6828448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler } 6928448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler return account; 7028448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler } 7128448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler 7228448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler /** 73897a0ea81c8cddcb142d6ac7f7c47801858c8537Makoto Onuki * Lightweight way of deleting an account for testing. 74897a0ea81c8cddcb142d6ac7f7c47801858c8537Makoto Onuki */ 75897a0ea81c8cddcb142d6ac7f7c47801858c8537Makoto Onuki public static void deleteAccount(Context context, long accountId) { 76897a0ea81c8cddcb142d6ac7f7c47801858c8537Makoto Onuki context.getContentResolver().delete(ContentUris.withAppendedId( 77f5418f1f93b02e7fab9f15eb201800b65510998eMarc Blank Account.CONTENT_URI, accountId), null, null); 78897a0ea81c8cddcb142d6ac7f7c47801858c8537Makoto Onuki } 79897a0ea81c8cddcb142d6ac7f7c47801858c8537Makoto Onuki 80897a0ea81c8cddcb142d6ac7f7c47801858c8537Makoto Onuki /** 81da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler * Create a hostauth record for test purposes 82da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler */ 83da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler public static HostAuth setupHostAuth(String name, long accountId, boolean saveIt, 84da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler Context context) { 85fe68c0e7c2672e09076038b36ad24f095633d313Todd Kennedy return setupHostAuth("protocol", name, saveIt, context); 86f3f15c12c93377a30682d0abe6fda88098d9c761Makoto Onuki } 87f3f15c12c93377a30682d0abe6fda88098d9c761Makoto Onuki 88f3f15c12c93377a30682d0abe6fda88098d9c761Makoto Onuki /** 89f3f15c12c93377a30682d0abe6fda88098d9c761Makoto Onuki * Create a hostauth record for test purposes 90f3f15c12c93377a30682d0abe6fda88098d9c761Makoto Onuki */ 91fe68c0e7c2672e09076038b36ad24f095633d313Todd Kennedy public static HostAuth setupHostAuth(String protocol, String name, boolean saveIt, 92fe68c0e7c2672e09076038b36ad24f095633d313Todd Kennedy Context context) { 93da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler HostAuth hostAuth = new HostAuth(); 94da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler 9525144e2b7990c50bb3650faf1aec341837c05348Makoto Onuki hostAuth.mProtocol = protocol; 96da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler hostAuth.mAddress = "address-" + name; 97da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler hostAuth.mPort = 100; 98da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler hostAuth.mFlags = 200; 99da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler hostAuth.mLogin = "login-" + name; 100da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler hostAuth.mPassword = "password-" + name; 101da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler hostAuth.mDomain = "domain-" + name; 102da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler 103da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler if (saveIt) { 104da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler hostAuth.save(context); 105da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler } 106da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler return hostAuth; 107da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler } 108da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler 109da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler /** 11028448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler * Create a mailbox for test purposes 11128448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler */ 11228448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler public static Mailbox setupMailbox(String name, long accountId, boolean saveIt, 11328448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler Context context) { 114694257cb7e7a191b3314cb209b6c38a8a07583efMarc Blank return setupMailbox(name, accountId, saveIt, context, Mailbox.TYPE_MAIL); 115694257cb7e7a191b3314cb209b6c38a8a07583efMarc Blank } 116694257cb7e7a191b3314cb209b6c38a8a07583efMarc Blank public static Mailbox setupMailbox(String name, long accountId, boolean saveIt, 117694257cb7e7a191b3314cb209b6c38a8a07583efMarc Blank Context context, int type) { 118200c6bd9fa19b78acc2c1664f858521aa9885353Todd Kennedy return setupMailbox(name, accountId, saveIt, context, type, '/'); 119200c6bd9fa19b78acc2c1664f858521aa9885353Todd Kennedy } 120200c6bd9fa19b78acc2c1664f858521aa9885353Todd Kennedy public static Mailbox setupMailbox(String name, long accountId, boolean saveIt, 121200c6bd9fa19b78acc2c1664f858521aa9885353Todd Kennedy Context context, int type, char delimiter) { 12228448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler Mailbox box = new Mailbox(); 12328448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler 12422208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy int delimiterIndex = name.lastIndexOf(delimiter); 12522208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy String displayName = name; 12622208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy if (delimiterIndex > 0) { 12722208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy displayName = name.substring(delimiterIndex + 1); 12822208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy } 12922208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy box.mDisplayName = displayName; 13022208771b7b39c5d131372ba6bc45ab23cc22232Todd Kennedy box.mServerId = name; 13128448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler box.mParentServerId = "parent-serverid-" + name; 1323a58509b2ad7b6f946eb0a4a7b0f75ece6d6a46fAndy Stadler box.mParentKey = 4; 13328448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler box.mAccountKey = accountId; 134694257cb7e7a191b3314cb209b6c38a8a07583efMarc Blank box.mType = type; 135200c6bd9fa19b78acc2c1664f858521aa9885353Todd Kennedy box.mDelimiter = delimiter; 13628448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler box.mSyncKey = "sync-key-" + name; 13728448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler box.mSyncLookback = 2; 138f5418f1f93b02e7fab9f15eb201800b65510998eMarc Blank box.mSyncInterval = Account.CHECK_INTERVAL_NEVER; 13928448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler box.mSyncTime = 3; 14028448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler box.mFlagVisible = true; 14128448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler box.mFlags = 5; 14228448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler 14328448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler if (saveIt) { 1449e2c6bd5f21f2d19eef7ebfe30e6fdf94ede0857Andrew Stadler box.save(context); 14528448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler } 14628448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler return box; 14728448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler } 14828448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler 14928448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler /** 15028448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler * Create a message for test purposes 15128448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler */ 15228448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler public static Message setupMessage(String name, long accountId, long mailboxId, 15328448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler boolean addBody, boolean saveIt, Context context) { 154833fe73b99e62ad9cf6e80c782717c7de1ff12e4Makoto Onuki // Default starred, read, (backword compatibility) 155833fe73b99e62ad9cf6e80c782717c7de1ff12e4Makoto Onuki return setupMessage(name, accountId, mailboxId, addBody, saveIt, context, true, true); 156833fe73b99e62ad9cf6e80c782717c7de1ff12e4Makoto Onuki } 157833fe73b99e62ad9cf6e80c782717c7de1ff12e4Makoto Onuki 158833fe73b99e62ad9cf6e80c782717c7de1ff12e4Makoto Onuki /** 159833fe73b99e62ad9cf6e80c782717c7de1ff12e4Makoto Onuki * Create a message for test purposes 160833fe73b99e62ad9cf6e80c782717c7de1ff12e4Makoto Onuki */ 161833fe73b99e62ad9cf6e80c782717c7de1ff12e4Makoto Onuki public static Message setupMessage(String name, long accountId, long mailboxId, 162833fe73b99e62ad9cf6e80c782717c7de1ff12e4Makoto Onuki boolean addBody, boolean saveIt, Context context, boolean starred, boolean read) { 16328448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler Message message = new Message(); 16428448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler 16528448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler message.mDisplayName = name; 1660d00889f83fc8c1d69039a2c849b630fb4dd28ddAndrew Stadler message.mTimeStamp = 100 + name.length(); 16728448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler message.mSubject = "subject " + name; 168833fe73b99e62ad9cf6e80c782717c7de1ff12e4Makoto Onuki message.mFlagRead = read; 16917d3a29c9d8f7a27c463239f190bdcc4e0804527Jerry Xie message.mFlagSeen = read; 1706c21942ec45f561d711b3d74ecca8e62afb735c4Andrew Stadler message.mFlagLoaded = Message.FLAG_LOADED_UNLOADED; 171833fe73b99e62ad9cf6e80c782717c7de1ff12e4Makoto Onuki message.mFlagFavorite = starred; 17228448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler message.mFlagAttachment = true; 173c41c47fa07a22f8a7612fb0191f152a36d95b7a5Andrew Stadler message.mFlags = 0; 17428448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler 17528448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler message.mServerId = "serverid " + name; 1760d00889f83fc8c1d69039a2c849b630fb4dd28ddAndrew Stadler message.mServerTimeStamp = 300 + name.length(); 17728448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler message.mMessageId = "messageid " + name; 17828448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler 17928448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler message.mMailboxKey = mailboxId; 18028448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler message.mAccountKey = accountId; 18128448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler 18228448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler message.mFrom = "from " + name; 18328448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler message.mTo = "to " + name; 18428448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler message.mCc = "cc " + name; 18528448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler message.mBcc = "bcc " + name; 18628448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler message.mReplyTo = "replyto " + name; 18728448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler 1884006e5fc224d097450fd66a321901b6636f7d9c4Marc Blank message.mMeetingInfo = "123" + accountId + mailboxId + name.length(); 1894006e5fc224d097450fd66a321901b6636f7d9c4Marc Blank 19028448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler if (addBody) { 19128448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler message.mText = "body text " + name; 19228448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler message.mHtml = "body html " + name; 1930d00889f83fc8c1d69039a2c849b630fb4dd28ddAndrew Stadler message.mSourceKey = 400 + name.length(); 19428448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler } 19528448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler 19628448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler if (saveIt) { 1979e2c6bd5f21f2d19eef7ebfe30e6fdf94ede0857Andrew Stadler message.save(context); 19828448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler } 19928448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler return message; 20028448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler } 20128448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler 20228448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler /** 203e7b9e4ab94093127002f4cddd3ffcc3deb1c0b41Marc Blank * Create a test body 204e7b9e4ab94093127002f4cddd3ffcc3deb1c0b41Marc Blank * 205e7b9e4ab94093127002f4cddd3ffcc3deb1c0b41Marc Blank * @param messageId the message this body belongs to 206e7b9e4ab94093127002f4cddd3ffcc3deb1c0b41Marc Blank * @param textContent the plain text for the body 207e7b9e4ab94093127002f4cddd3ffcc3deb1c0b41Marc Blank * @param htmlContent the html text for the body 208e7b9e4ab94093127002f4cddd3ffcc3deb1c0b41Marc Blank * @param saveIt if true, write the new attachment directly to the DB 209e7b9e4ab94093127002f4cddd3ffcc3deb1c0b41Marc Blank * @param context use this context 210e7b9e4ab94093127002f4cddd3ffcc3deb1c0b41Marc Blank */ 211e7b9e4ab94093127002f4cddd3ffcc3deb1c0b41Marc Blank public static Body setupBody(long messageId, String textContent, String htmlContent, 212e7b9e4ab94093127002f4cddd3ffcc3deb1c0b41Marc Blank boolean saveIt, Context context) { 213e7b9e4ab94093127002f4cddd3ffcc3deb1c0b41Marc Blank Body body = new Body(); 214e7b9e4ab94093127002f4cddd3ffcc3deb1c0b41Marc Blank body.mMessageKey = messageId; 215e7b9e4ab94093127002f4cddd3ffcc3deb1c0b41Marc Blank body.mHtmlContent = htmlContent; 21617d3a29c9d8f7a27c463239f190bdcc4e0804527Jerry Xie body.mTextContent = textContent; 217e7b9e4ab94093127002f4cddd3ffcc3deb1c0b41Marc Blank body.mSourceKey = messageId + 0x1000; 218e7b9e4ab94093127002f4cddd3ffcc3deb1c0b41Marc Blank if (saveIt) { 219e7b9e4ab94093127002f4cddd3ffcc3deb1c0b41Marc Blank body.save(context); 220e7b9e4ab94093127002f4cddd3ffcc3deb1c0b41Marc Blank } 221e7b9e4ab94093127002f4cddd3ffcc3deb1c0b41Marc Blank return body; 222e7b9e4ab94093127002f4cddd3ffcc3deb1c0b41Marc Blank } 223e7b9e4ab94093127002f4cddd3ffcc3deb1c0b41Marc Blank 224e7b9e4ab94093127002f4cddd3ffcc3deb1c0b41Marc Blank /** 2254119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler * Create a test attachment. A few fields are specified by params, and all other fields 2264119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler * are generated using pseudo-unique values. 227758a532fce2f672673d38b2daa5f67eb757b118bMarc Blank * 2284119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler * @param messageId the message to attach to 2294119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler * @param fileName the "file" to indicate in the attachment 2304119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler * @param length the "length" of the attachment 231f19f9cf4d3e5229715da77fe05a1a2bbd8da3f41Marc Blank * @param flags the flags to set in the attachment 2324119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler * @param saveIt if true, write the new attachment directly to the DB 2334119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler * @param context use this context 2344119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler */ 2354119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler public static Attachment setupAttachment(long messageId, String fileName, long length, 236f19f9cf4d3e5229715da77fe05a1a2bbd8da3f41Marc Blank int flags, boolean saveIt, Context context) { 2374119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler Attachment att = new Attachment(); 2384119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler att.mSize = length; 2394119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler att.mFileName = fileName; 2404119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler att.mContentId = "contentId " + fileName; 24117d3a29c9d8f7a27c463239f190bdcc4e0804527Jerry Xie att.setContentUri("contentUri " + fileName); 2424119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler att.mMessageKey = messageId; 2434119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler att.mMimeType = "mimeType " + fileName; 2444119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler att.mLocation = "location " + fileName; 2454119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler att.mEncoding = "encoding " + fileName; 2463aaba9eb87db34ea0861d70d5c08f84d7ca97ab0Andrew Stadler att.mContent = "content " + fileName; 247f19f9cf4d3e5229715da77fe05a1a2bbd8da3f41Marc Blank att.mFlags = flags; 24820225d57609d6a5e482c088fdad60c29212d31a0Makoto Onuki att.mContentBytes = Utility.toUtf8("content " + fileName); 24975a873be8420e50f0aeb5a77716358ee0ca66b01Marc Blank att.mAccountKey = messageId + 0x1000; 2504119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler if (saveIt) { 2519e2c6bd5f21f2d19eef7ebfe30e6fdf94ede0857Andrew Stadler att.save(context); 2524119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler } 2534119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler return att; 2544119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler } 2554119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler 256f19f9cf4d3e5229715da77fe05a1a2bbd8da3f41Marc Blank /** 257f19f9cf4d3e5229715da77fe05a1a2bbd8da3f41Marc Blank * Create a test attachment with flags = 0 (see above) 258f19f9cf4d3e5229715da77fe05a1a2bbd8da3f41Marc Blank * 259f19f9cf4d3e5229715da77fe05a1a2bbd8da3f41Marc Blank * @param messageId the message to attach to 260f19f9cf4d3e5229715da77fe05a1a2bbd8da3f41Marc Blank * @param fileName the "file" to indicate in the attachment 261f19f9cf4d3e5229715da77fe05a1a2bbd8da3f41Marc Blank * @param length the "length" of the attachment 262f19f9cf4d3e5229715da77fe05a1a2bbd8da3f41Marc Blank * @param saveIt if true, write the new attachment directly to the DB 263f19f9cf4d3e5229715da77fe05a1a2bbd8da3f41Marc Blank * @param context use this context 264f19f9cf4d3e5229715da77fe05a1a2bbd8da3f41Marc Blank */ 265f19f9cf4d3e5229715da77fe05a1a2bbd8da3f41Marc Blank public static Attachment setupAttachment(long messageId, String fileName, long length, 266f19f9cf4d3e5229715da77fe05a1a2bbd8da3f41Marc Blank boolean saveIt, Context context) { 267f19f9cf4d3e5229715da77fe05a1a2bbd8da3f41Marc Blank return setupAttachment(messageId, fileName, length, 0, saveIt, context); 268f19f9cf4d3e5229715da77fe05a1a2bbd8da3f41Marc Blank } 269f19f9cf4d3e5229715da77fe05a1a2bbd8da3f41Marc Blank 270758a532fce2f672673d38b2daa5f67eb757b118bMarc Blank private static void assertEmailContentEqual(String caller, EmailContent expect, 27153093871c492d03947c494f17e2463b27345e083Marc Blank EmailContent actual) { 27253093871c492d03947c494f17e2463b27345e083Marc Blank if (expect == actual) { 27353093871c492d03947c494f17e2463b27345e083Marc Blank return; 27453093871c492d03947c494f17e2463b27345e083Marc Blank } 27553093871c492d03947c494f17e2463b27345e083Marc Blank 27653093871c492d03947c494f17e2463b27345e083Marc Blank assertEquals(caller + " mId", expect.mId, actual.mId); 27753093871c492d03947c494f17e2463b27345e083Marc Blank assertEquals(caller + " mBaseUri", expect.mBaseUri, actual.mBaseUri); 27853093871c492d03947c494f17e2463b27345e083Marc Blank } 27953093871c492d03947c494f17e2463b27345e083Marc Blank 2804119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler /** 28128448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler * Compare two accounts for equality 282758a532fce2f672673d38b2daa5f67eb757b118bMarc Blank * 28328448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler * TODO: check host auth? 28428448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler */ 28528448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler public static void assertAccountEqual(String caller, Account expect, Account actual) { 28628448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler if (expect == actual) { 28728448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler return; 28828448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler } 28928448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler 29053093871c492d03947c494f17e2463b27345e083Marc Blank assertEmailContentEqual(caller, expect, actual); 29128448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler assertEquals(caller + " mDisplayName", expect.mDisplayName, actual.mDisplayName); 29228448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler assertEquals(caller + " mEmailAddress", expect.mEmailAddress, actual.mEmailAddress); 29328448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler assertEquals(caller + " mSyncKey", expect.mSyncKey, actual.mSyncKey); 29428448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler 29528448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler assertEquals(caller + " mSyncLookback", expect.mSyncLookback, actual.mSyncLookback); 2969e2c6bd5f21f2d19eef7ebfe30e6fdf94ede0857Andrew Stadler assertEquals(caller + " mSyncInterval", expect.mSyncInterval, actual.mSyncInterval); 29728448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler assertEquals(caller + " mHostAuthKeyRecv", expect.mHostAuthKeyRecv, 29828448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler actual.mHostAuthKeyRecv); 29928448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler assertEquals(caller + " mHostAuthKeySend", expect.mHostAuthKeySend, 30028448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler actual.mHostAuthKeySend); 30128448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler assertEquals(caller + " mFlags", expect.mFlags, actual.mFlags); 30228448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler assertEquals(caller + " mSenderName", expect.mSenderName, actual.mSenderName); 30353093871c492d03947c494f17e2463b27345e083Marc Blank assertEquals(caller + " mProtocolVersion", expect.mProtocolVersion, 30453093871c492d03947c494f17e2463b27345e083Marc Blank actual.mProtocolVersion); 305345fb8b737c1632fb2a7e69ac44b8612be6237edAndrew Stadler assertEquals(caller + " mSecuritySyncKey", expect.mSecuritySyncKey, 306345fb8b737c1632fb2a7e69ac44b8612be6237edAndrew Stadler actual.mSecuritySyncKey); 307345fb8b737c1632fb2a7e69ac44b8612be6237edAndrew Stadler assertEquals(caller + " mSignature", expect.mSignature, actual.mSignature); 30817d3a29c9d8f7a27c463239f190bdcc4e0804527Jerry Xie assertEquals(caller + " mPolicyKey", expect.mPolicyKey, actual.mPolicyKey); 30917d3a29c9d8f7a27c463239f190bdcc4e0804527Jerry Xie assertEquals(caller + " mPingDuration", expect.mPingDuration, actual.mPingDuration); 31028448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler } 31128448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler 31228448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler /** 313da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler * Compare two hostauth records for equality 314da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler */ 315da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler public static void assertHostAuthEqual(String caller, HostAuth expect, HostAuth actual) { 3160993190cafebc107bd27a26996b5d63d4a4ede10Marc Blank assertHostAuthEqual(caller, expect, actual, true); 3170993190cafebc107bd27a26996b5d63d4a4ede10Marc Blank } 3180993190cafebc107bd27a26996b5d63d4a4ede10Marc Blank 3190993190cafebc107bd27a26996b5d63d4a4ede10Marc Blank public static void assertHostAuthEqual(String caller, HostAuth expect, HostAuth actual, 3200993190cafebc107bd27a26996b5d63d4a4ede10Marc Blank boolean testEmailContent) { 321da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler if (expect == actual) { 322da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler return; 323da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler } 324da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler 3250993190cafebc107bd27a26996b5d63d4a4ede10Marc Blank if (testEmailContent) { 3260993190cafebc107bd27a26996b5d63d4a4ede10Marc Blank assertEmailContentEqual(caller, expect, actual); 3270993190cafebc107bd27a26996b5d63d4a4ede10Marc Blank } 328da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler assertEquals(caller + " mProtocol", expect.mProtocol, actual.mProtocol); 329da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler assertEquals(caller + " mAddress", expect.mAddress, actual.mAddress); 330da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler assertEquals(caller + " mPort", expect.mPort, actual.mPort); 331da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler assertEquals(caller + " mFlags", expect.mFlags, actual.mFlags); 332da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler assertEquals(caller + " mLogin", expect.mLogin, actual.mLogin); 333da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler assertEquals(caller + " mPassword", expect.mPassword, actual.mPassword); 334da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler assertEquals(caller + " mDomain", expect.mDomain, actual.mDomain); 335da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler // This field is dead and is not checked 336da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler// assertEquals(caller + " mAccountKey", expect.mAccountKey, actual.mAccountKey); 337da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler } 338da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler 339da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler /** 34028448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler * Compare two mailboxes for equality 34128448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler */ 34228448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler public static void assertMailboxEqual(String caller, Mailbox expect, Mailbox actual) { 34328448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler if (expect == actual) { 34428448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler return; 34528448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler } 34628448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler 34753093871c492d03947c494f17e2463b27345e083Marc Blank assertEmailContentEqual(caller, expect, actual); 34828448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler assertEquals(caller + " mDisplayName", expect.mDisplayName, actual.mDisplayName); 34928448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler assertEquals(caller + " mServerId", expect.mServerId, actual.mServerId); 35028448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler assertEquals(caller + " mParentServerId", expect.mParentServerId, actual.mParentServerId); 3513a58509b2ad7b6f946eb0a4a7b0f75ece6d6a46fAndy Stadler assertEquals(caller + " mParentKey", expect.mParentKey, actual.mParentKey); 35228448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler assertEquals(caller + " mAccountKey", expect.mAccountKey, actual.mAccountKey); 35328448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler assertEquals(caller + " mType", expect.mType, actual.mType); 35428448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler assertEquals(caller + " mDelimiter", expect.mDelimiter, actual.mDelimiter); 35528448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler assertEquals(caller + " mSyncKey", expect.mSyncKey, actual.mSyncKey); 35628448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler assertEquals(caller + " mSyncLookback", expect.mSyncLookback, actual.mSyncLookback); 3579e2c6bd5f21f2d19eef7ebfe30e6fdf94ede0857Andrew Stadler assertEquals(caller + " mSyncInterval", expect.mSyncInterval, actual.mSyncInterval); 35828448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler assertEquals(caller + " mSyncTime", expect.mSyncTime, actual.mSyncTime); 35928448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler assertEquals(caller + " mFlagVisible", expect.mFlagVisible, actual.mFlagVisible); 36017d3a29c9d8f7a27c463239f190bdcc4e0804527Jerry Xie assertEquals(caller + " mSyncStatus", expect.mSyncStatus, actual.mSyncStatus); 36117d3a29c9d8f7a27c463239f190bdcc4e0804527Jerry Xie assertEquals(caller + " mLastTouchedTime", expect.mLastTouchedTime, actual.mLastTouchedTime); 36217d3a29c9d8f7a27c463239f190bdcc4e0804527Jerry Xie assertEquals(caller + " mUiSyncStatus", expect.mUiSyncStatus, actual.mUiSyncStatus); 36317d3a29c9d8f7a27c463239f190bdcc4e0804527Jerry Xie assertEquals(caller + " mUiLastSyncResult", expect.mUiLastSyncResult, actual.mUiLastSyncResult); 36417d3a29c9d8f7a27c463239f190bdcc4e0804527Jerry Xie assertEquals(caller + " mTotalCount", expect.mTotalCount, actual.mTotalCount); 36517d3a29c9d8f7a27c463239f190bdcc4e0804527Jerry Xie assertEquals(caller + " mHierarchicalName", expect.mHierarchicalName, actual.mHierarchicalName); 36617d3a29c9d8f7a27c463239f190bdcc4e0804527Jerry Xie assertEquals(caller + " mLastFullSyncTime", expect.mLastFullSyncTime, actual.mLastFullSyncTime); 36728448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler } 36828448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler 36928448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler /** 37028448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler * Compare two messages for equality 371758a532fce2f672673d38b2daa5f67eb757b118bMarc Blank * 37228448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler * TODO: body? 37328448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler * TODO: attachments? 37428448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler */ 37528448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler public static void assertMessageEqual(String caller, Message expect, Message actual) { 37628448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler if (expect == actual) { 37728448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler return; 37828448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler } 37928448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler 38053093871c492d03947c494f17e2463b27345e083Marc Blank assertEmailContentEqual(caller, expect, actual); 38128448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler assertEquals(caller + " mDisplayName", expect.mDisplayName, actual.mDisplayName); 38228448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler assertEquals(caller + " mTimeStamp", expect.mTimeStamp, actual.mTimeStamp); 38328448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler assertEquals(caller + " mSubject", expect.mSubject, actual.mSubject); 38428448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler assertEquals(caller + " mFlagRead = false", expect.mFlagRead, actual.mFlagRead); 38517d3a29c9d8f7a27c463239f190bdcc4e0804527Jerry Xie assertEquals(caller + " mFlagRead = false", expect.mFlagSeen, actual.mFlagSeen); 38628448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler assertEquals(caller + " mFlagLoaded", expect.mFlagLoaded, actual.mFlagLoaded); 38728448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler assertEquals(caller + " mFlagFavorite", expect.mFlagFavorite, actual.mFlagFavorite); 38828448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler assertEquals(caller + " mFlagAttachment", expect.mFlagAttachment, actual.mFlagAttachment); 38928448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler assertEquals(caller + " mFlags", expect.mFlags, actual.mFlags); 39028448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler 39128448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler assertEquals(caller + " mServerId", expect.mServerId, actual.mServerId); 3920d00889f83fc8c1d69039a2c849b630fb4dd28ddAndrew Stadler assertEquals(caller + " mServerTimeStamp", expect.mServerTimeStamp,actual.mServerTimeStamp); 39317d3a29c9d8f7a27c463239f190bdcc4e0804527Jerry Xie assertEquals(caller + " mDraftInfo", expect.mDraftInfo,actual.mDraftInfo); 39428448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler assertEquals(caller + " mMessageId", expect.mMessageId, actual.mMessageId); 39528448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler 39628448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler assertEquals(caller + " mMailboxKey", expect.mMailboxKey, actual.mMailboxKey); 39728448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler assertEquals(caller + " mAccountKey", expect.mAccountKey, actual.mAccountKey); 39817d3a29c9d8f7a27c463239f190bdcc4e0804527Jerry Xie assertEquals(caller + " mMainMailboxKey", expect.mMainMailboxKey, actual.mMainMailboxKey); 39928448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler 40028448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler assertEquals(caller + " mFrom", expect.mFrom, actual.mFrom); 40128448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler assertEquals(caller + " mTo", expect.mTo, actual.mTo); 40228448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler assertEquals(caller + " mCc", expect.mCc, actual.mCc); 40328448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler assertEquals(caller + " mBcc", expect.mBcc, actual.mBcc); 40428448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler assertEquals(caller + " mReplyTo", expect.mReplyTo, actual.mReplyTo); 40528448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler 4064006e5fc224d097450fd66a321901b6636f7d9c4Marc Blank assertEquals(caller + " mMeetingInfo", expect.mMeetingInfo, actual.mMeetingInfo); 4074006e5fc224d097450fd66a321901b6636f7d9c4Marc Blank 408e7b9e4ab94093127002f4cddd3ffcc3deb1c0b41Marc Blank assertEquals(caller + " mSnippet", expect.mSnippet, actual.mSnippet); 409e7b9e4ab94093127002f4cddd3ffcc3deb1c0b41Marc Blank 41017d3a29c9d8f7a27c463239f190bdcc4e0804527Jerry Xie assertEquals(caller + " mProtocolSearchInfo", expect.mProtocolSearchInfo, actual.mProtocolSearchInfo); 41117d3a29c9d8f7a27c463239f190bdcc4e0804527Jerry Xie 41217d3a29c9d8f7a27c463239f190bdcc4e0804527Jerry Xie assertEquals(caller + " mThreadTopic", expect.mThreadTopic, actual.mThreadTopic); 41317d3a29c9d8f7a27c463239f190bdcc4e0804527Jerry Xie 41417d3a29c9d8f7a27c463239f190bdcc4e0804527Jerry Xie assertEquals(caller + " mSyncData", expect.mSyncData, actual.mSyncData); 41517d3a29c9d8f7a27c463239f190bdcc4e0804527Jerry Xie 41617d3a29c9d8f7a27c463239f190bdcc4e0804527Jerry Xie assertEquals(caller + " mSyncData", expect.mServerConversationId, actual.mServerConversationId); 41717d3a29c9d8f7a27c463239f190bdcc4e0804527Jerry Xie 41828448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler assertEquals(caller + " mText", expect.mText, actual.mText); 41928448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler assertEquals(caller + " mHtml", expect.mHtml, actual.mHtml); 420e25698319325d5e9619bc45ae85d861b0f1c5954Marc Blank assertEquals(caller + " mSourceKey", expect.mSourceKey, actual.mSourceKey); 42117d3a29c9d8f7a27c463239f190bdcc4e0804527Jerry Xie assertEquals(caller + " mQuotedTextStartPos", expect.mQuotedTextStartPos, actual.mQuotedTextStartPos); 42228448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler } 4234119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler 4244119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler /** 4254119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler * Compare to attachments for equality 426758a532fce2f672673d38b2daa5f67eb757b118bMarc Blank * 4274119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler * TODO: file / content URI mapping? Compare the actual files? 4284119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler */ 4294119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler public static void assertAttachmentEqual(String caller, Attachment expect, Attachment actual) { 4304119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler if (expect == actual) { 4314119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler return; 4324119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler } 4334119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler 43453093871c492d03947c494f17e2463b27345e083Marc Blank assertEmailContentEqual(caller, expect, actual); 4354119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler assertEquals(caller + " mFileName", expect.mFileName, actual.mFileName); 43617d3a29c9d8f7a27c463239f190bdcc4e0804527Jerry Xie assertEquals(caller + " mMimeType", expect.mMimeType, actual.mMimeType); 43717d3a29c9d8f7a27c463239f190bdcc4e0804527Jerry Xie assertEquals(caller + " mSize", expect.mSize, actual.mSize); 4384119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler assertEquals(caller + " mContentId", expect.mContentId, actual.mContentId); 43917d3a29c9d8f7a27c463239f190bdcc4e0804527Jerry Xie assertEquals(caller + " mContentUri", expect.getContentUri(), actual.getContentUri()); 44017d3a29c9d8f7a27c463239f190bdcc4e0804527Jerry Xie assertEquals(caller + " mCachedFileUri", expect.getCachedFileUri(), actual.getCachedFileUri()); 4414119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler assertEquals(caller + " mMessageKey", expect.mMessageKey, actual.mMessageKey); 4424119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler assertEquals(caller + " mLocation", expect.mLocation, actual.mLocation); 4434119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler assertEquals(caller + " mEncoding", expect.mEncoding, actual.mEncoding); 4443aaba9eb87db34ea0861d70d5c08f84d7ca97ab0Andrew Stadler assertEquals(caller + " mContent", expect.mContent, actual.mContent); 4453aaba9eb87db34ea0861d70d5c08f84d7ca97ab0Andrew Stadler assertEquals(caller + " mFlags", expect.mFlags, actual.mFlags); 44620225d57609d6a5e482c088fdad60c29212d31a0Makoto Onuki MoreAsserts.assertEquals(caller + " mContentBytes", 44720225d57609d6a5e482c088fdad60c29212d31a0Makoto Onuki expect.mContentBytes, actual.mContentBytes); 44875a873be8420e50f0aeb5a77716358ee0ca66b01Marc Blank assertEquals(caller + " mAccountKey", expect.mAccountKey, actual.mAccountKey); 4494119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler } 450206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki 451206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki /** 452206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki * Create a temporary EML file based on {@code msg} in the directory {@code directory}. 453206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki */ 454206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki public static Uri createTempEmlFile(Context context, Message msg, File directory) 455206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki throws Exception { 456206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki // Write out the message in rfc822 format 457206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki File outputFile = File.createTempFile("message", "tmp", directory); 458206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki assertNotNull(outputFile); 459206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki FileOutputStream outputStream = new FileOutputStream(outputFile); 46017d3a29c9d8f7a27c463239f190bdcc4e0804527Jerry Xie Rfc822Output.writeTo(context, msg, outputStream, true, false, null); 461206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki outputStream.close(); 462206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki 463206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki return Uri.fromFile(outputFile); 464206d4e842d287a7a4e6bedf4963fb7f0f58e113fMakoto Onuki } 46528448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler} 466