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.content.Context;
|
||||||
import android.database.Cursor;
|
import android.database.Cursor;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
|
import android.os.Parcel;
|
||||||
|
import android.os.Parcelable;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import java.security.InvalidParameterException;
|
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";
|
public static final String TABLE_NAME = "Mailbox";
|
||||||
@SuppressWarnings("hiding")
|
@SuppressWarnings("hiding")
|
||||||
public static final Uri CONTENT_URI = Uri.parse(EmailContent.CONTENT_URI + "/mailbox");
|
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;
|
= mLastSeenMessageKey;
|
||||||
return hash;
|
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.ContentValues;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
|
import android.os.Parcel;
|
||||||
import android.test.MoreAsserts;
|
import android.test.MoreAsserts;
|
||||||
import android.test.ProviderTestCase2;
|
import android.test.ProviderTestCase2;
|
||||||
import android.test.suitebuilder.annotation.SmallTest;
|
import android.test.suitebuilder.annotation.SmallTest;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Unit tests for the Mailbox inner class.
|
* Unit tests for the Mailbox inner class.
|
||||||
* These tests must be locally complete - no server(s) required.
|
* 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);
|
assertEquals(start + 1, Mailbox.restoreMailboxWithId(c, b1.mId).mSyncInterval);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testGetHashes() {
|
private Mailbox buildTestMailbox(String serverId) {
|
||||||
final Context c = mMockContext;
|
return buildTestMailbox(serverId, null);
|
||||||
Mailbox testMailbox;
|
}
|
||||||
|
|
||||||
testMailbox = new Mailbox();
|
private Mailbox buildTestMailbox(String serverId, String name) {
|
||||||
testMailbox.mDisplayName = TEST_DISPLAY_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.mParentServerId = TEST_PARENT_SERVER_ID;
|
||||||
testMailbox.mServerId = TEST_SERVER_ID;
|
|
||||||
testMailbox.mSyncKey = TEST_SYNC_KEY;
|
testMailbox.mSyncKey = TEST_SYNC_KEY;
|
||||||
testMailbox.mSyncStatus = TEST_SYNC_STATUS;
|
testMailbox.mSyncStatus = TEST_SYNC_STATUS;
|
||||||
testMailbox.mAccountKey = 1L;
|
testMailbox.mAccountKey = 1L;
|
||||||
|
@ -515,6 +521,14 @@ public class MailboxTests extends ProviderTestCase2<EmailProvider> {
|
||||||
testMailbox.mSyncTime = 6L;
|
testMailbox.mSyncTime = 6L;
|
||||||
testMailbox.mType = 7;
|
testMailbox.mType = 7;
|
||||||
testMailbox.mVisibleLimit = 8;
|
testMailbox.mVisibleLimit = 8;
|
||||||
|
testMailbox.mLastSeenMessageKey = 9L;
|
||||||
|
|
||||||
|
return testMailbox;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testGetHashes() {
|
||||||
|
final Context c = mMockContext;
|
||||||
|
Mailbox testMailbox = buildTestMailbox(TEST_SERVER_ID);
|
||||||
testMailbox.save(c);
|
testMailbox.save(c);
|
||||||
|
|
||||||
Object[] testHash;
|
Object[] testHash;
|
||||||
|
@ -523,7 +537,7 @@ public class MailboxTests extends ProviderTestCase2<EmailProvider> {
|
||||||
TEST_PARENT_SERVER_ID, 1L /*mAccountKey*/, 7 /*mType */,
|
TEST_PARENT_SERVER_ID, 1L /*mAccountKey*/, 7 /*mType */,
|
||||||
(int)'/' /*mDelimiter */, TEST_SYNC_KEY, 5 /*mSyncLookback*/,
|
(int)'/' /*mDelimiter */, TEST_SYNC_KEY, 5 /*mSyncLookback*/,
|
||||||
4 /*mSyncInterval*/, 6L /*mSyncTime*/, true /*mFlagVisible*/, 2 /*mFlags*/,
|
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());
|
MoreAsserts.assertEquals(testHash, testMailbox.getHashes());
|
||||||
|
|
||||||
|
@ -540,9 +554,43 @@ public class MailboxTests extends ProviderTestCase2<EmailProvider> {
|
||||||
null /*mParentServerId*/, 1L /*mAccountKey*/, 7 /*mType */,
|
null /*mParentServerId*/, 1L /*mAccountKey*/, 7 /*mType */,
|
||||||
(int)'/' /*mDelimiter */, null /*mSyncKey*/, 5 /*mSyncLookback*/,
|
(int)'/' /*mDelimiter */, null /*mSyncKey*/, 5 /*mSyncLookback*/,
|
||||||
4 /*mSyncInterval*/, 6L /*mSyncTime*/, false /*mFlagVisible*/, 2 /*mFlags*/,
|
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());
|
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