ProviderTestUtils.java revision 4006e5fc224d097450fd66a321901b6636f7d9c4
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
1928448e782b825d1978c0923003a2cf91efe733dcAndrew Stadlerimport com.android.email.provider.EmailContent.Account;
204119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadlerimport com.android.email.provider.EmailContent.Attachment;
21da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadlerimport com.android.email.provider.EmailContent.HostAuth;
2228448e782b825d1978c0923003a2cf91efe733dcAndrew Stadlerimport com.android.email.provider.EmailContent.Mailbox;
2328448e782b825d1978c0923003a2cf91efe733dcAndrew Stadlerimport com.android.email.provider.EmailContent.Message;
2428448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler
2528448e782b825d1978c0923003a2cf91efe733dcAndrew Stadlerimport android.content.Context;
2628448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler
2728448e782b825d1978c0923003a2cf91efe733dcAndrew Stadlerimport junit.framework.Assert;
2828448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler
2928448e782b825d1978c0923003a2cf91efe733dcAndrew Stadlerpublic class ProviderTestUtils extends Assert {
3028448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler
3128448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler    /**
3228448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler     * No constructor - statics only
3328448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler     */
3428448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler    private ProviderTestUtils() {
3528448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler    }
3628448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler
3728448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler    /**
3828448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler     * Create an account for test purposes
3928448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler     */
4028448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler    public static Account setupAccount(String name, boolean saveIt, Context context) {
4128448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        Account account = new Account();
4228448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler
4328448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        account.mDisplayName = name;
4428448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        account.mEmailAddress = name + "@android.com";
4528448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        account.mSyncKey = "sync-key-" + name;
4628448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        account.mSyncLookback = 1;
479e2c6bd5f21f2d19eef7ebfe30e6fdf94ede0857Andrew Stadler        account.mSyncInterval = EmailContent.Account.CHECK_INTERVAL_NEVER;
48da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler        account.mHostAuthKeyRecv = 0;
49da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler        account.mHostAuthKeySend = 0;
5028448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        account.mFlags = 4;
5128448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        account.mIsDefault = true;
5228448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        account.mCompatibilityUuid = "test-uid-" + name;
5328448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        account.mSenderName = name;
5428448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        account.mRingtoneUri = "content://ringtone-" + name;
5553093871c492d03947c494f17e2463b27345e083Marc Blank        account.mProtocolVersion = "2.5" + name;
564a8c70c09be3914ded18031b4cca5a6d867de0d3Andrew Stadler        account.mNewMessageCount = 5 + name.length();
57345fb8b737c1632fb2a7e69ac44b8612be6237edAndrew Stadler        account.mSecurityFlags = 7;
58345fb8b737c1632fb2a7e69ac44b8612be6237edAndrew Stadler        account.mSecuritySyncKey = "sec-sync-key-" + name;
59345fb8b737c1632fb2a7e69ac44b8612be6237edAndrew Stadler        account.mSignature = "signature-" + name;
6028448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        if (saveIt) {
619e2c6bd5f21f2d19eef7ebfe30e6fdf94ede0857Andrew Stadler            account.save(context);
6228448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        }
6328448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        return account;
6428448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler    }
6528448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler
6628448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler    /**
67da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler     * Create a hostauth record for test purposes
68da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler     */
69da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler    public static HostAuth setupHostAuth(String name, long accountId, boolean saveIt,
70da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler            Context context) {
71da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler        HostAuth hostAuth = new HostAuth();
72da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler
73da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler        hostAuth.mProtocol = "protocol-" + name;
74da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler        hostAuth.mAddress = "address-" + name;
75da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler        hostAuth.mPort = 100;
76da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler        hostAuth.mFlags = 200;
77da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler        hostAuth.mLogin = "login-" + name;
78da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler        hostAuth.mPassword = "password-" + name;
79da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler        hostAuth.mDomain = "domain-" + name;
80da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler        hostAuth.mAccountKey = accountId;
81da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler
82da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler        if (saveIt) {
83da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler            hostAuth.save(context);
84da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler        }
85da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler        return hostAuth;
86da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler    }
87da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler
88da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler    /**
8928448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler     * Create a mailbox for test purposes
9028448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler     */
9128448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler    public static Mailbox setupMailbox(String name, long accountId, boolean saveIt,
9228448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler            Context context) {
93694257cb7e7a191b3314cb209b6c38a8a07583efMarc Blank        return setupMailbox(name, accountId, saveIt, context, Mailbox.TYPE_MAIL);
94694257cb7e7a191b3314cb209b6c38a8a07583efMarc Blank    }
95694257cb7e7a191b3314cb209b6c38a8a07583efMarc Blank
96694257cb7e7a191b3314cb209b6c38a8a07583efMarc Blank    public static Mailbox setupMailbox(String name, long accountId, boolean saveIt,
97694257cb7e7a191b3314cb209b6c38a8a07583efMarc Blank            Context context, int type) {
9828448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        Mailbox box = new Mailbox();
9928448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler
10028448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        box.mDisplayName = name;
10128448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        box.mServerId = "serverid-" + name;
10228448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        box.mParentServerId = "parent-serverid-" + name;
10328448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        box.mAccountKey = accountId;
104694257cb7e7a191b3314cb209b6c38a8a07583efMarc Blank        box.mType = type;
10528448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        box.mDelimiter = 1;
10628448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        box.mSyncKey = "sync-key-" + name;
10728448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        box.mSyncLookback = 2;
1089e2c6bd5f21f2d19eef7ebfe30e6fdf94ede0857Andrew Stadler        box.mSyncInterval = EmailContent.Account.CHECK_INTERVAL_NEVER;
10928448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        box.mSyncTime = 3;
110758a532fce2f672673d38b2daa5f67eb757b118bMarc Blank        // Should always be saved as zero
111758a532fce2f672673d38b2daa5f67eb757b118bMarc Blank        box.mUnreadCount = 0;
11228448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        box.mFlagVisible = true;
11328448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        box.mFlags = 5;
11428448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        box.mVisibleLimit = 6;
11528448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler
11628448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        if (saveIt) {
1179e2c6bd5f21f2d19eef7ebfe30e6fdf94ede0857Andrew Stadler            box.save(context);
11828448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        }
11928448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        return box;
12028448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler    }
12128448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler
12228448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler    /**
12328448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler     * Create a message for test purposes
124758a532fce2f672673d38b2daa5f67eb757b118bMarc Blank     *
12528448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler     * TODO: body
12628448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler     * TODO: attachments
12728448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler     */
12828448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler    public static Message setupMessage(String name, long accountId, long mailboxId,
12928448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler            boolean addBody, boolean saveIt, Context context) {
13028448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        Message message = new Message();
13128448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler
13228448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        message.mDisplayName = name;
1330d00889f83fc8c1d69039a2c849b630fb4dd28ddAndrew Stadler        message.mTimeStamp = 100 + name.length();
13428448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        message.mSubject = "subject " + name;
13528448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        message.mFlagRead = true;
1366c21942ec45f561d711b3d74ecca8e62afb735c4Andrew Stadler        message.mFlagLoaded = Message.FLAG_LOADED_UNLOADED;
13728448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        message.mFlagFavorite = true;
13828448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        message.mFlagAttachment = true;
139c41c47fa07a22f8a7612fb0191f152a36d95b7a5Andrew Stadler        message.mFlags = 0;
14028448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler
14128448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        message.mServerId = "serverid " + name;
1420d00889f83fc8c1d69039a2c849b630fb4dd28ddAndrew Stadler        message.mServerTimeStamp = 300 + name.length();
14328448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        message.mClientId = "clientid " + name;
14428448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        message.mMessageId = "messageid " + name;
14528448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler
14628448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        message.mMailboxKey = mailboxId;
14728448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        message.mAccountKey = accountId;
14828448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler
14928448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        message.mFrom = "from " + name;
15028448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        message.mTo = "to " + name;
15128448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        message.mCc = "cc " + name;
15228448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        message.mBcc = "bcc " + name;
15328448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        message.mReplyTo = "replyto " + name;
15428448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler
1554006e5fc224d097450fd66a321901b6636f7d9c4Marc Blank        message.mMeetingInfo = "123" + accountId + mailboxId + name.length();
1564006e5fc224d097450fd66a321901b6636f7d9c4Marc Blank
15728448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        if (addBody) {
15828448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler            message.mText = "body text " + name;
15928448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler            message.mHtml = "body html " + name;
160936babc145e2e6eb2e222f2ce5e3da8f9e4fb9f2Andrew Stadler            message.mTextReply = "reply text " + name;
161936babc145e2e6eb2e222f2ce5e3da8f9e4fb9f2Andrew Stadler            message.mHtmlReply = "reply html " + name;
1620d00889f83fc8c1d69039a2c849b630fb4dd28ddAndrew Stadler            message.mSourceKey = 400 + name.length();
1635fc57eccefeba517fe5e6f093786f37c6c4d50e6Marc Blank            message.mIntroText = "intro text " + name;
16428448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        }
16528448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler
16628448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        if (saveIt) {
1679e2c6bd5f21f2d19eef7ebfe30e6fdf94ede0857Andrew Stadler            message.save(context);
16828448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        }
16928448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        return message;
17028448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler    }
17128448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler
17228448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler    /**
1734119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler     * Create a test attachment.  A few fields are specified by params, and all other fields
1744119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler     * are generated using pseudo-unique values.
175758a532fce2f672673d38b2daa5f67eb757b118bMarc Blank     *
1764119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler     * @param messageId the message to attach to
1774119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler     * @param fileName the "file" to indicate in the attachment
1784119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler     * @param length the "length" of the attachment
1794119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler     * @param saveIt if true, write the new attachment directly to the DB
1804119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler     * @param context use this context
1814119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler     */
1824119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler    public static Attachment setupAttachment(long messageId, String fileName, long length,
1834119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler            boolean saveIt, Context context) {
1844119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler        Attachment att = new Attachment();
1854119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler        att.mSize = length;
1864119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler        att.mFileName = fileName;
1874119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler        att.mContentId = "contentId " + fileName;
1884119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler        att.mContentUri = "contentUri " + fileName;
1894119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler        att.mMessageKey = messageId;
1904119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler        att.mMimeType = "mimeType " + fileName;
1914119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler        att.mLocation = "location " + fileName;
1924119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler        att.mEncoding = "encoding " + fileName;
1934119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler        if (saveIt) {
1949e2c6bd5f21f2d19eef7ebfe30e6fdf94ede0857Andrew Stadler            att.save(context);
1954119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler        }
1964119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler        return att;
1974119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler    }
1984119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler
199758a532fce2f672673d38b2daa5f67eb757b118bMarc Blank    private static void assertEmailContentEqual(String caller, EmailContent expect,
20053093871c492d03947c494f17e2463b27345e083Marc Blank            EmailContent actual) {
20153093871c492d03947c494f17e2463b27345e083Marc Blank        if (expect == actual) {
20253093871c492d03947c494f17e2463b27345e083Marc Blank            return;
20353093871c492d03947c494f17e2463b27345e083Marc Blank        }
20453093871c492d03947c494f17e2463b27345e083Marc Blank
20553093871c492d03947c494f17e2463b27345e083Marc Blank        assertEquals(caller + " mId", expect.mId, actual.mId);
20653093871c492d03947c494f17e2463b27345e083Marc Blank        assertEquals(caller + " mBaseUri", expect.mBaseUri, actual.mBaseUri);
20753093871c492d03947c494f17e2463b27345e083Marc Blank    }
20853093871c492d03947c494f17e2463b27345e083Marc Blank
2094119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler    /**
21028448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler     * Compare two accounts for equality
211758a532fce2f672673d38b2daa5f67eb757b118bMarc Blank     *
21228448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler     * TODO: check host auth?
21328448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler     */
21428448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler    public static void assertAccountEqual(String caller, Account expect, Account actual) {
21528448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        if (expect == actual) {
21628448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler            return;
21728448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        }
21828448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler
21953093871c492d03947c494f17e2463b27345e083Marc Blank        assertEmailContentEqual(caller, expect, actual);
22028448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        assertEquals(caller + " mDisplayName", expect.mDisplayName, actual.mDisplayName);
22128448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        assertEquals(caller + " mEmailAddress", expect.mEmailAddress, actual.mEmailAddress);
22228448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        assertEquals(caller + " mSyncKey", expect.mSyncKey, actual.mSyncKey);
22328448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler
22428448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        assertEquals(caller + " mSyncLookback", expect.mSyncLookback, actual.mSyncLookback);
2259e2c6bd5f21f2d19eef7ebfe30e6fdf94ede0857Andrew Stadler        assertEquals(caller + " mSyncInterval", expect.mSyncInterval, actual.mSyncInterval);
22628448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        assertEquals(caller + " mHostAuthKeyRecv", expect.mHostAuthKeyRecv,
22728448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler                actual.mHostAuthKeyRecv);
22828448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        assertEquals(caller + " mHostAuthKeySend", expect.mHostAuthKeySend,
22928448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler                actual.mHostAuthKeySend);
23028448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        assertEquals(caller + " mFlags", expect.mFlags, actual.mFlags);
23128448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        assertEquals(caller + " mIsDefault", expect.mIsDefault, actual.mIsDefault);
23228448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        assertEquals(caller + " mCompatibilityUuid", expect.mCompatibilityUuid,
23328448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler                actual.mCompatibilityUuid);
23428448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        assertEquals(caller + " mSenderName", expect.mSenderName, actual.mSenderName);
23528448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        assertEquals(caller + " mRingtoneUri", expect.mRingtoneUri, actual.mRingtoneUri);
23653093871c492d03947c494f17e2463b27345e083Marc Blank        assertEquals(caller + " mProtocolVersion", expect.mProtocolVersion,
23753093871c492d03947c494f17e2463b27345e083Marc Blank                actual.mProtocolVersion);
2384a8c70c09be3914ded18031b4cca5a6d867de0d3Andrew Stadler        assertEquals(caller + " mNewMessageCount", expect.mNewMessageCount,
2394a8c70c09be3914ded18031b4cca5a6d867de0d3Andrew Stadler                actual.mNewMessageCount);
240fc8d943a828cd79ff71c703ced37001bd5482173Andrew Stadler        assertEquals(caller + " mSecurityFlags", expect.mSecurityFlags, actual.mSecurityFlags);
241345fb8b737c1632fb2a7e69ac44b8612be6237edAndrew Stadler        assertEquals(caller + " mSecuritySyncKey", expect.mSecuritySyncKey,
242345fb8b737c1632fb2a7e69ac44b8612be6237edAndrew Stadler                actual.mSecuritySyncKey);
243345fb8b737c1632fb2a7e69ac44b8612be6237edAndrew Stadler        assertEquals(caller + " mSignature", expect.mSignature, actual.mSignature);
24428448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler    }
24528448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler
24628448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler    /**
247da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler     * Compare two hostauth records for equality
248da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler     */
249da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler    public static void assertHostAuthEqual(String caller, HostAuth expect, HostAuth actual) {
250da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler        if (expect == actual) {
251da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler            return;
252da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler        }
253da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler
254da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler        assertEmailContentEqual(caller, expect, actual);
255da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler        assertEquals(caller + " mProtocol", expect.mProtocol, actual.mProtocol);
256da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler        assertEquals(caller + " mAddress", expect.mAddress, actual.mAddress);
257da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler        assertEquals(caller + " mPort", expect.mPort, actual.mPort);
258da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler        assertEquals(caller + " mFlags", expect.mFlags, actual.mFlags);
259da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler        assertEquals(caller + " mLogin", expect.mLogin, actual.mLogin);
260da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler        assertEquals(caller + " mPassword", expect.mPassword, actual.mPassword);
261da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler        assertEquals(caller + " mDomain", expect.mDomain, actual.mDomain);
262da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler        // This field is dead and is not checked
263da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler//      assertEquals(caller + " mAccountKey", expect.mAccountKey, actual.mAccountKey);
264da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler    }
265da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler
266da8836a76cd8a6eaa7e3693eeacc6393870b2066Andrew Stadler    /**
26728448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler     * Compare two mailboxes for equality
26828448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler     */
26928448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler    public static void assertMailboxEqual(String caller, Mailbox expect, Mailbox actual) {
27028448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        if (expect == actual) {
27128448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler            return;
27228448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        }
27328448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler
27453093871c492d03947c494f17e2463b27345e083Marc Blank        assertEmailContentEqual(caller, expect, actual);
27528448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        assertEquals(caller + " mDisplayName", expect.mDisplayName, actual.mDisplayName);
27628448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        assertEquals(caller + " mServerId", expect.mServerId, actual.mServerId);
27728448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        assertEquals(caller + " mParentServerId", expect.mParentServerId, actual.mParentServerId);
27828448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        assertEquals(caller + " mAccountKey", expect.mAccountKey, actual.mAccountKey);
27928448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        assertEquals(caller + " mType", expect.mType, actual.mType);
28028448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        assertEquals(caller + " mDelimiter", expect.mDelimiter, actual.mDelimiter);
28128448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        assertEquals(caller + " mSyncKey", expect.mSyncKey, actual.mSyncKey);
28228448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        assertEquals(caller + " mSyncLookback", expect.mSyncLookback, actual.mSyncLookback);
2839e2c6bd5f21f2d19eef7ebfe30e6fdf94ede0857Andrew Stadler        assertEquals(caller + " mSyncInterval", expect.mSyncInterval, actual.mSyncInterval);
28428448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        assertEquals(caller + " mSyncTime", expect.mSyncTime, actual.mSyncTime);
28528448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        assertEquals(caller + " mUnreadCount", expect.mUnreadCount, actual.mUnreadCount);
28628448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        assertEquals(caller + " mFlagVisible", expect.mFlagVisible, actual.mFlagVisible);
28728448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        assertEquals(caller + " mFlags", expect.mFlags, actual.mFlags);
28828448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        assertEquals(caller + " mVisibleLimit", expect.mVisibleLimit, actual.mVisibleLimit);
28928448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler    }
29028448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler
29128448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler    /**
29228448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler     * Compare two messages for equality
293758a532fce2f672673d38b2daa5f67eb757b118bMarc Blank     *
29428448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler     * TODO: body?
29528448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler     * TODO: attachments?
29628448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler     */
29728448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler    public static void assertMessageEqual(String caller, Message expect, Message actual) {
29828448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        if (expect == actual) {
29928448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler            return;
30028448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        }
30128448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler
30253093871c492d03947c494f17e2463b27345e083Marc Blank        assertEmailContentEqual(caller, expect, actual);
30328448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        assertEquals(caller + " mDisplayName", expect.mDisplayName, actual.mDisplayName);
30428448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        assertEquals(caller + " mTimeStamp", expect.mTimeStamp, actual.mTimeStamp);
30528448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        assertEquals(caller + " mSubject", expect.mSubject, actual.mSubject);
30628448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        assertEquals(caller + " mFlagRead = false", expect.mFlagRead, actual.mFlagRead);
30728448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        assertEquals(caller + " mFlagLoaded", expect.mFlagLoaded, actual.mFlagLoaded);
30828448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        assertEquals(caller + " mFlagFavorite", expect.mFlagFavorite, actual.mFlagFavorite);
30928448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        assertEquals(caller + " mFlagAttachment", expect.mFlagAttachment, actual.mFlagAttachment);
31028448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        assertEquals(caller + " mFlags", expect.mFlags, actual.mFlags);
31128448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler
31228448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        assertEquals(caller + " mServerId", expect.mServerId, actual.mServerId);
3130d00889f83fc8c1d69039a2c849b630fb4dd28ddAndrew Stadler        assertEquals(caller + " mServerTimeStamp", expect.mServerTimeStamp,actual.mServerTimeStamp);
31428448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        assertEquals(caller + " mClientId", expect.mClientId, actual.mClientId);
31528448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        assertEquals(caller + " mMessageId", expect.mMessageId, actual.mMessageId);
31628448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler
31728448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        assertEquals(caller + " mMailboxKey", expect.mMailboxKey, actual.mMailboxKey);
31828448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        assertEquals(caller + " mAccountKey", expect.mAccountKey, actual.mAccountKey);
31928448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler
32028448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        assertEquals(caller + " mFrom", expect.mFrom, actual.mFrom);
32128448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        assertEquals(caller + " mTo", expect.mTo, actual.mTo);
32228448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        assertEquals(caller + " mCc", expect.mCc, actual.mCc);
32328448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        assertEquals(caller + " mBcc", expect.mBcc, actual.mBcc);
32428448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        assertEquals(caller + " mReplyTo", expect.mReplyTo, actual.mReplyTo);
32528448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler
3264006e5fc224d097450fd66a321901b6636f7d9c4Marc Blank        assertEquals(caller + " mMeetingInfo", expect.mMeetingInfo, actual.mMeetingInfo);
3274006e5fc224d097450fd66a321901b6636f7d9c4Marc Blank
32828448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        assertEquals(caller + " mText", expect.mText, actual.mText);
32928448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler        assertEquals(caller + " mHtml", expect.mHtml, actual.mHtml);
330936babc145e2e6eb2e222f2ce5e3da8f9e4fb9f2Andrew Stadler        assertEquals(caller + " mTextReply", expect.mTextReply, actual.mTextReply);
331936babc145e2e6eb2e222f2ce5e3da8f9e4fb9f2Andrew Stadler        assertEquals(caller + " mHtmlReply", expect.mHtmlReply, actual.mHtmlReply);
332e25698319325d5e9619bc45ae85d861b0f1c5954Marc Blank        assertEquals(caller + " mSourceKey", expect.mSourceKey, actual.mSourceKey);
3335fc57eccefeba517fe5e6f093786f37c6c4d50e6Marc Blank        assertEquals(caller + " mIntroText", expect.mIntroText, actual.mIntroText);
33428448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler    }
3354119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler
3364119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler    /**
3374119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler     * Compare to attachments for equality
338758a532fce2f672673d38b2daa5f67eb757b118bMarc Blank     *
3394119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler     * TODO: file / content URI mapping?  Compare the actual files?
3404119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler     */
3414119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler    public static void assertAttachmentEqual(String caller, Attachment expect, Attachment actual) {
3424119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler        if (expect == actual) {
3434119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler            return;
3444119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler        }
3454119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler
34653093871c492d03947c494f17e2463b27345e083Marc Blank        assertEmailContentEqual(caller, expect, actual);
3474119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler        assertEquals(caller + " mSize", expect.mSize, actual.mSize);
3484119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler        assertEquals(caller + " mFileName", expect.mFileName, actual.mFileName);
3494119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler        assertEquals(caller + " mContentId", expect.mContentId, actual.mContentId);
3504119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler        assertEquals(caller + " mContentUri", expect.mContentUri, actual.mContentUri);
3514119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler        assertEquals(caller + " mMessageKey", expect.mMessageKey, actual.mMessageKey);
3524119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler        assertEquals(caller + " mMimeType", expect.mMimeType, actual.mMimeType);
3534119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler        assertEquals(caller + " mLocation", expect.mLocation, actual.mLocation);
3544119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler        assertEquals(caller + " mEncoding", expect.mEncoding, actual.mEncoding);
3554119218e2fd64341ac946fb8f2cbdb796a444cb8Andrew Stadler    }
35628448e782b825d1978c0923003a2cf91efe733dcAndrew Stadler}
357