package net.rdrei.android.scdl2.test; import static org.hamcrest.core.IsEqual.equalTo; import static org.junit.Assert.assertThat; import net.rdrei.android.scdl2.api.entity.TrackEntity; import net.rdrei.android.scdl2.api.entity.UserEntity; import android.os.Parcel; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; @RunWith(RobolectricTestRunner.class) public class TrackEntityParcelTest { @Test public void testNestedTrackMarshallUnmarshall() { final UserEntity user = new UserEntity(); user.setId(23l); user.setUsername("passy"); final TrackEntity entity = new TrackEntity(); entity.setId(200l); entity.setTitle("Hello, World."); entity.setUser(user); final byte[] bytes; final Parcel parcel = Parcel.obtain(); try { parcel.writeValue(entity); bytes = parcel.marshall(); } finally { parcel.recycle(); } final TrackEntity newEntity; final Parcel parcel2 = Parcel.obtain(); try { parcel2.unmarshall(bytes, 0, bytes.length); parcel2.setDataPosition(0); newEntity = (TrackEntity) parcel2.readValue(TrackEntity.class.getClassLoader()); } finally { parcel2.recycle(); } assertThat(newEntity.getId(), equalTo(200l)); assertThat(newEntity.getTitle(), equalTo("Hello, World.")); assertThat(newEntity.getUser().getUsername(), equalTo("passy")); assertThat(newEntity.getUser().getId(), equalTo(23l)); } }