package net.rdrei.android.scdl2.test; import android.os.Parcel; import net.rdrei.android.scdl2.api.MediaDownloadType; import net.rdrei.android.scdl2.api.MediaState; import net.rdrei.android.scdl2.api.entity.TrackEntity; import net.rdrei.android.scdl2.api.entity.UserEntity; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; import static org.fest.assertions.api.Assertions.assertThat; @RunWith(RobolectricTestRunner.class) public class MediaStateTest { @Test public void testTrackType() { final TrackEntity track = new TrackEntity(); final MediaState mediaState = MediaState.fromEntity(track); assertThat(mediaState.getType()).isEqualTo(MediaDownloadType.TRACK); assertThat(mediaState.getTrackOption().isEmpty()).isFalse(); assertThat(mediaState.getPlaylistOption().isEmpty()).isTrue(); } @Test public void testTrackParcel() { final TrackEntity track = new TrackEntity(); track.setTitle("My track"); track.setUser(new UserEntity()); final MediaState entity = MediaState.fromEntity(track); final byte[] bytes; final Parcel parcel = Parcel.obtain(); try { parcel.writeValue(entity); bytes = parcel.marshall(); } finally { parcel.recycle(); } final MediaState newEntity; final Parcel parcel2 = Parcel.obtain(); try { parcel2.unmarshall(bytes, 0, bytes.length); parcel2.setDataPosition(0); newEntity = (MediaState) parcel2.readValue(MediaState.class.getClassLoader()); } finally { parcel2.recycle(); } assertThat(newEntity.getType()).isEqualTo(MediaDownloadType.TRACK); assertThat(newEntity.getTrackOption().get().getTitle()).isEqualTo("My track"); } }