1/*
2 * Copyright 2017 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package android.support.mediacompat.client;
17
18import static org.junit.Assert.assertEquals;
19import static org.junit.Assert.assertFalse;
20import static org.junit.Assert.assertTrue;
21
22import android.os.Parcel;
23import android.support.test.filters.SmallTest;
24import android.support.v4.media.MediaBrowserCompat.MediaItem;
25import android.support.v4.media.MediaDescriptionCompat;
26
27import org.junit.Test;
28
29/**
30 * Test {@link MediaItem}.
31 */
32public class MediaItemTest {
33    private static final String DESCRIPTION = "test_description";
34    private static final String MEDIA_ID = "test_media_id";
35    private static final String TITLE = "test_title";
36    private static final String SUBTITLE = "test_subtitle";
37
38    @Test
39    @SmallTest
40    public void testBrowsableMediaItem() {
41        MediaDescriptionCompat description =
42                new MediaDescriptionCompat.Builder()
43                        .setDescription(DESCRIPTION)
44                        .setMediaId(MEDIA_ID)
45                        .setTitle(TITLE)
46                        .setSubtitle(SUBTITLE)
47                        .build();
48        MediaItem mediaItem = new MediaItem(description, MediaItem.FLAG_BROWSABLE);
49
50        assertEquals(description.toString(), mediaItem.getDescription().toString());
51        assertEquals(MEDIA_ID, mediaItem.getMediaId());
52        assertEquals(MediaItem.FLAG_BROWSABLE, mediaItem.getFlags());
53        assertTrue(mediaItem.isBrowsable());
54        assertFalse(mediaItem.isPlayable());
55        assertEquals(0, mediaItem.describeContents());
56
57        // Test writeToParcel
58        Parcel p = Parcel.obtain();
59        mediaItem.writeToParcel(p, 0);
60        p.setDataPosition(0);
61        assertEquals(mediaItem.getFlags(), p.readInt());
62        assertEquals(
63                description.toString(),
64                MediaDescriptionCompat.CREATOR.createFromParcel(p).toString());
65        p.recycle();
66    }
67
68    @Test
69    @SmallTest
70    public void testPlayableMediaItem() {
71        MediaDescriptionCompat description = new MediaDescriptionCompat.Builder()
72                .setDescription(DESCRIPTION)
73                .setMediaId(MEDIA_ID)
74                .setTitle(TITLE)
75                .setSubtitle(SUBTITLE)
76                .build();
77        MediaItem mediaItem = new MediaItem(description, MediaItem.FLAG_PLAYABLE);
78
79        assertEquals(description.toString(), mediaItem.getDescription().toString());
80        assertEquals(MEDIA_ID, mediaItem.getMediaId());
81        assertEquals(MediaItem.FLAG_PLAYABLE, mediaItem.getFlags());
82        assertFalse(mediaItem.isBrowsable());
83        assertTrue(mediaItem.isPlayable());
84        assertEquals(0, mediaItem.describeContents());
85
86        // Test writeToParcel
87        Parcel p = Parcel.obtain();
88        mediaItem.writeToParcel(p, 0);
89        p.setDataPosition(0);
90        assertEquals(mediaItem.getFlags(), p.readInt());
91        assertEquals(
92                description.toString(),
93                MediaDescriptionCompat.CREATOR.createFromParcel(p).toString());
94        p.recycle();
95    }
96}
97