@Test
public void testParcelable() {
long updatedAt = System.currentTimeMillis();
long createdAt = updatedAt + 10;
ParseObject.State state = new ParseObject.State.Builder("TestObject")
.objectId("fake")
.createdAt(new Date(createdAt))
.updatedAt(new Date(updatedAt))
.isComplete(true)
.put("foo", "bar")
.put("baz", "qux")
.availableKeys(Arrays.asList("safe", "keys"))
.build();
Parcel parcel = Parcel.obtain();
state.writeToParcel(parcel, ParseParcelEncoder.get());
parcel.setDataPosition(0);
ParseObject.State copy = ParseObject.State.createFromParcel(parcel, ParseParcelDecoder.get());
assertEquals(state.className(), copy.className());
assertEquals(state.objectId(), copy.objectId());
assertEquals(state.createdAt(), copy.createdAt());
assertEquals(state.updatedAt(), copy.updatedAt());
assertEquals(state.isComplete(), copy.isComplete());
assertEquals(state.keySet().size(), copy.keySet().size());
assertEquals(state.get("foo"), copy.get("foo"));
assertEquals(state.get("baz"), copy.get("baz"));
assertEquals(state.availableKeys().size(), copy.availableKeys().size());
assertTrue(state.availableKeys().containsAll(copy.availableKeys()));
assertTrue(copy.availableKeys().containsAll(state.availableKeys()));
}