Make Mailbox parcelable
Also fix unit tests Change-Id: I5f64f53b278b7bc27053d831760b155532a14e33
This commit is contained in:
parent
53ea83ebf9
commit
e0bb7e7909
|
@ -27,11 +27,13 @@ import android.content.ContentValues;
|
|||
import android.content.Context;
|
||||
import android.database.Cursor;
|
||||
import android.net.Uri;
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import android.util.Log;
|
||||
|
||||
import java.security.InvalidParameterException;
|
||||
|
||||
public class Mailbox extends EmailContent implements SyncColumns, MailboxColumns {
|
||||
public class Mailbox extends EmailContent implements SyncColumns, MailboxColumns, Parcelable {
|
||||
public static final String TABLE_NAME = "Mailbox";
|
||||
@SuppressWarnings("hiding")
|
||||
public static final Uri CONTENT_URI = Uri.parse(EmailContent.CONTENT_URI + "/mailbox");
|
||||
|
@ -470,4 +472,66 @@ public class Mailbox extends EmailContent implements SyncColumns, MailboxColumns
|
|||
= mLastSeenMessageKey;
|
||||
return hash;
|
||||
}
|
||||
|
||||
// Parcelable
|
||||
@Override
|
||||
public int describeContents() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Parcelable
|
||||
@Override
|
||||
public void writeToParcel(Parcel dest, int flags) {
|
||||
dest.writeParcelable(mBaseUri, flags);
|
||||
dest.writeLong(mId);
|
||||
dest.writeString(mDisplayName);
|
||||
dest.writeString(mServerId);
|
||||
dest.writeString(mParentServerId);
|
||||
dest.writeLong(mParentKey);
|
||||
dest.writeLong(mAccountKey);
|
||||
dest.writeInt(mType);
|
||||
dest.writeInt(mDelimiter);
|
||||
dest.writeString(mSyncKey);
|
||||
dest.writeInt(mSyncLookback);
|
||||
dest.writeInt(mSyncInterval);
|
||||
dest.writeLong(mSyncTime);
|
||||
dest.writeInt(mFlagVisible ? 1 : 0);
|
||||
dest.writeInt(mFlags);
|
||||
dest.writeInt(mVisibleLimit);
|
||||
dest.writeString(mSyncStatus);
|
||||
dest.writeLong(mLastSeenMessageKey);
|
||||
}
|
||||
|
||||
public Mailbox(Parcel in) {
|
||||
mBaseUri = in.readParcelable(null);
|
||||
mId = in.readLong();
|
||||
mDisplayName = in.readString();
|
||||
mServerId = in.readString();
|
||||
mParentServerId = in.readString();
|
||||
mParentKey = in.readLong();
|
||||
mAccountKey = in.readLong();
|
||||
mType = in.readInt();
|
||||
mDelimiter = in.readInt();
|
||||
mSyncKey = in.readString();
|
||||
mSyncLookback = in.readInt();
|
||||
mSyncInterval = in.readInt();
|
||||
mSyncTime = in.readLong();
|
||||
mFlagVisible = in.readInt() == 1;
|
||||
mFlags = in.readInt();
|
||||
mVisibleLimit = in.readInt();
|
||||
mSyncStatus = in.readString();
|
||||
mLastSeenMessageKey = in.readLong();
|
||||
}
|
||||
|
||||
public static final Parcelable.Creator<Mailbox> CREATOR = new Parcelable.Creator<Mailbox>() {
|
||||
@Override
|
||||
public Mailbox createFromParcel(Parcel source) {
|
||||
return new Mailbox(source);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Mailbox[] newArray(int size) {
|
||||
return new Mailbox[size];
|
||||
}
|
||||
};
|
||||
}
|
|
@ -29,10 +29,13 @@ import android.content.ContentUris;
|
|||
import android.content.ContentValues;
|
||||
import android.content.Context;
|
||||
import android.net.Uri;
|
||||
import android.os.Parcel;
|
||||
import android.test.MoreAsserts;
|
||||
import android.test.ProviderTestCase2;
|
||||
import android.test.suitebuilder.annotation.SmallTest;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
* Unit tests for the Mailbox inner class.
|
||||
* These tests must be locally complete - no server(s) required.
|
||||
|
@ -495,14 +498,17 @@ public class MailboxTests extends ProviderTestCase2<EmailProvider> {
|
|||
assertEquals(start + 1, Mailbox.restoreMailboxWithId(c, b1.mId).mSyncInterval);
|
||||
}
|
||||
|
||||
public void testGetHashes() {
|
||||
final Context c = mMockContext;
|
||||
Mailbox testMailbox;
|
||||
private Mailbox buildTestMailbox(String serverId) {
|
||||
return buildTestMailbox(serverId, null);
|
||||
}
|
||||
|
||||
testMailbox = new Mailbox();
|
||||
testMailbox.mDisplayName = TEST_DISPLAY_NAME;
|
||||
private Mailbox buildTestMailbox(String serverId, String name) {
|
||||
name = (name == null) ? TEST_DISPLAY_NAME : name;
|
||||
|
||||
Mailbox testMailbox = new Mailbox();
|
||||
testMailbox.mServerId = serverId;
|
||||
testMailbox.mDisplayName = name;
|
||||
testMailbox.mParentServerId = TEST_PARENT_SERVER_ID;
|
||||
testMailbox.mServerId = TEST_SERVER_ID;
|
||||
testMailbox.mSyncKey = TEST_SYNC_KEY;
|
||||
testMailbox.mSyncStatus = TEST_SYNC_STATUS;
|
||||
testMailbox.mAccountKey = 1L;
|
||||
|
@ -515,6 +521,14 @@ public class MailboxTests extends ProviderTestCase2<EmailProvider> {
|
|||
testMailbox.mSyncTime = 6L;
|
||||
testMailbox.mType = 7;
|
||||
testMailbox.mVisibleLimit = 8;
|
||||
testMailbox.mLastSeenMessageKey = 9L;
|
||||
|
||||
return testMailbox;
|
||||
}
|
||||
|
||||
public void testGetHashes() {
|
||||
final Context c = mMockContext;
|
||||
Mailbox testMailbox = buildTestMailbox(TEST_SERVER_ID);
|
||||
testMailbox.save(c);
|
||||
|
||||
Object[] testHash;
|
||||
|
@ -523,7 +537,7 @@ public class MailboxTests extends ProviderTestCase2<EmailProvider> {
|
|||
TEST_PARENT_SERVER_ID, 1L /*mAccountKey*/, 7 /*mType */,
|
||||
(int)'/' /*mDelimiter */, TEST_SYNC_KEY, 5 /*mSyncLookback*/,
|
||||
4 /*mSyncInterval*/, 6L /*mSyncTime*/, true /*mFlagVisible*/, 2 /*mFlags*/,
|
||||
8 /*mVisibleLimit*/, TEST_SYNC_STATUS, 3L /*mParentKey*/
|
||||
8 /*mVisibleLimit*/, TEST_SYNC_STATUS, 3L /*mParentKey*/, 9L /*mLastSeen*/
|
||||
};
|
||||
MoreAsserts.assertEquals(testHash, testMailbox.getHashes());
|
||||
|
||||
|
@ -540,9 +554,43 @@ public class MailboxTests extends ProviderTestCase2<EmailProvider> {
|
|||
null /*mParentServerId*/, 1L /*mAccountKey*/, 7 /*mType */,
|
||||
(int)'/' /*mDelimiter */, null /*mSyncKey*/, 5 /*mSyncLookback*/,
|
||||
4 /*mSyncInterval*/, 6L /*mSyncTime*/, false /*mFlagVisible*/, 2 /*mFlags*/,
|
||||
8 /*mVisibleLimit*/, null /*mSyncStatus*/, 3L /*mParentKey*/
|
||||
8 /*mVisibleLimit*/, null /*mSyncStatus*/, 3L /*mParentKey*/, 9L /*mLastSeen*/
|
||||
};
|
||||
MoreAsserts.assertEquals(testHash, testMailbox.getHashes());
|
||||
}
|
||||
|
||||
public void testParcelling() {
|
||||
Mailbox original = buildTestMailbox("serverId", "display name for mailbox");
|
||||
|
||||
Parcel p = Parcel.obtain();
|
||||
original.writeToParcel(p, 0 /* flags */);
|
||||
|
||||
// Reset.
|
||||
p.setDataPosition(0);
|
||||
|
||||
Mailbox unparcelled = Mailbox.CREATOR.createFromParcel(p);
|
||||
MoreAsserts.assertEquals(original.getHashes(), unparcelled.getHashes());
|
||||
|
||||
Mailbox phony = buildTestMailbox("different ID", "display name for mailbox");
|
||||
assertFalse(Arrays.equals(phony.getHashes(), unparcelled.getHashes()));
|
||||
|
||||
p.recycle();
|
||||
}
|
||||
|
||||
public void testParcellingWithPartialMailbox() {
|
||||
Mailbox unpopulated = new Mailbox();
|
||||
unpopulated.mDisplayName = "the only thing filled in for some reason";
|
||||
|
||||
Parcel p = Parcel.obtain();
|
||||
unpopulated.writeToParcel(p, 0 /* flags */);
|
||||
|
||||
// Reset.
|
||||
p.setDataPosition(0);
|
||||
|
||||
Mailbox unparcelled = Mailbox.CREATOR.createFromParcel(p);
|
||||
MoreAsserts.assertEquals(unpopulated.getHashes(), unparcelled.getHashes());
|
||||
|
||||
p.recycle();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue