@@ -15,7 +15,6 @@ import androidx.test.ext.junit.runners.AndroidJUnit4
1515import org.junit.runner.RunWith
1616import kotlin.test.Test
1717import kotlin.test.assertEquals
18- import kotlin.test.assertTrue
1918
2019@RunWith(AndroidJUnit4 ::class )
2120class TracksTest {
@@ -25,7 +24,13 @@ class TracksTest {
2524 createFormatTrackFormat(" t2" , mimeType = TEXT_MIME_TYPE , selectionFlags = C .SELECTION_FLAG_AUTOSELECT or C .SELECTION_FLAG_DEFAULT ),
2625 ),
2726 createTrackGroup(
28- createFormatTrackFormat(" t1-sdh" , mimeType = TEXT_MIME_TYPE , roleFlags = C .ROLE_FLAG_DESCRIBES_MUSIC_AND_SOUND ),
27+ formats = listOf (
28+ createFormatTrackFormat(" t1-sdh" , mimeType = TEXT_MIME_TYPE , roleFlags = C .ROLE_FLAG_DESCRIBES_MUSIC_AND_SOUND ),
29+ createFormatTrackFormat(" t3" , mimeType = TEXT_MIME_TYPE ),
30+ ),
31+ trackSupport = intArrayOf(
32+ C .FORMAT_HANDLED , C .FORMAT_EXCEEDS_CAPABILITIES ,
33+ ),
2934 ),
3035 )
3136 private val forcedSubtitleTracks = listOf (
@@ -38,22 +43,34 @@ class TracksTest {
3843 createFormatTrackFormat(" a1" , mimeType = AUDIO_MIME_TYPE ),
3944 ),
4045 createTrackGroup(
41- createFormatTrackFormat(" a1-ad" , mimeType = AUDIO_MIME_TYPE , roleFlags = C .ROLE_FLAG_DESCRIBES_VIDEO ),
46+ formats = listOf (
47+ createFormatTrackFormat(" a1-ad" , mimeType = AUDIO_MIME_TYPE , roleFlags = C .ROLE_FLAG_DESCRIBES_VIDEO ),
48+ createFormatTrackFormat(" a2" , mimeType = AUDIO_MIME_TYPE ),
49+ ),
50+ trackSupport = intArrayOf(
51+ C .FORMAT_HANDLED , C .FORMAT_EXCEEDS_CAPABILITIES
52+ ),
4253 ),
4354 )
4455 private val videoTracks = listOf (
4556 createTrackGroup(
46- createFormatTrackFormat(" v1" , mimeType = VIDEO_MIME_TYPE ),
47- createFormatTrackFormat(" v2" , mimeType = VIDEO_MIME_TYPE ),
48- createFormatTrackFormat(" v3" , mimeType = VIDEO_MIME_TYPE ),
57+ formats = listOf (
58+ createFormatTrackFormat(" v1" , mimeType = VIDEO_MIME_TYPE ),
59+ createFormatTrackFormat(" v2" , mimeType = VIDEO_MIME_TYPE ),
60+ createFormatTrackFormat(" v3" , mimeType = VIDEO_MIME_TYPE ),
61+ createFormatTrackFormat(" v4" , mimeType = VIDEO_MIME_TYPE ),
62+ ),
63+ trackSupport = intArrayOf(
64+ C .FORMAT_HANDLED , C .FORMAT_HANDLED , C .FORMAT_EXCEEDS_CAPABILITIES , C .FORMAT_HANDLED ,
65+ ),
4966 ),
5067 )
5168 private val tracks = Tracks (audioTracks + textTracks + videoTracks + forcedSubtitleTracks)
5269
5370 @Test
5471 fun `text with text tracks` () {
5572 val textTracks = tracks.text
56- assertEquals(this .textTracks, textTracks)
73+ assertEquals(this .textTracks + forcedSubtitleTracks , textTracks)
5774 }
5875
5976 @Test
@@ -86,85 +103,6 @@ class TracksTest {
86103 assertEquals(emptyList(), videoTracks)
87104 }
88105
89- @Test
90- fun `filterUnsupported one supported track` () {
91- val format = createFormatTrackFormat(" Unsupported" , mimeType = AUDIO_MIME_TYPE )
92- val trackGroup = TrackGroup (format)
93- val selected = booleanArrayOf(false )
94- val trackSupport = intArrayOf(C .FORMAT_HANDLED )
95- val tracks = Tracks (listOf (Tracks .Group (trackGroup, false , trackSupport, selected)))
96- val expectedTracksGroups = listOf (
97- Tracks .Group (
98- trackGroup,
99- false ,
100- trackSupport,
101- selected,
102- )
103- )
104- assertEquals(expectedTracksGroups, tracks.groups.mapNotNull { it.filterUnsupported() })
105- }
106-
107- @Test
108- fun `filterUnsupported only supported track` () {
109- val format1 = createFormatTrackFormat(" F1" , mimeType = AUDIO_MIME_TYPE )
110- val format2 = createFormatTrackFormat(" F2" , mimeType = AUDIO_MIME_TYPE )
111- val trackGroup = TrackGroup (format1, format2)
112- val selected = booleanArrayOf(false , false )
113- val trackSupport = intArrayOf(C .FORMAT_HANDLED , C .FORMAT_HANDLED )
114- val tracks = Tracks (listOf (Tracks .Group (trackGroup, false , trackSupport, selected)))
115- val expectedTracksGroups = listOf (
116- Tracks .Group (
117- trackGroup,
118- false ,
119- trackSupport,
120- selected,
121- )
122- )
123- assertEquals(expectedTracksGroups, tracks.groups.mapNotNull { it.filterUnsupported() })
124- }
125-
126- @Test
127- fun `filterUnsupported multiple tracks, one unsupported` () {
128- val format1 = createFormatTrackFormat(" F1" , mimeType = AUDIO_MIME_TYPE )
129- val format2 = createFormatTrackFormat(" F2" , mimeType = AUDIO_MIME_TYPE )
130- val formatUnsupportedTrack = createFormatTrackFormat(" Unsupported" , mimeType = AUDIO_MIME_TYPE )
131- val trackGroup = TrackGroup (format1, format2, formatUnsupportedTrack)
132- val selected = booleanArrayOf(false , false , false )
133- val trackSupport = intArrayOf(C .FORMAT_HANDLED , C .FORMAT_HANDLED , C .FORMAT_UNSUPPORTED_SUBTYPE )
134- val tracks = Tracks (listOf (Tracks .Group (trackGroup, false , trackSupport, selected)))
135- val expectedTracksGroups = listOf (
136- Tracks .Group (
137- TrackGroup (format1, format2),
138- false ,
139- intArrayOf(C .FORMAT_HANDLED , C .FORMAT_HANDLED ),
140- booleanArrayOf(false , false ),
141- )
142- )
143- assertEquals(expectedTracksGroups, tracks.groups.mapNotNull { it.filterUnsupported() })
144- }
145-
146- @Test
147- fun `filterUnsupported multiple unsupported tracks` () {
148- val format1 = createFormatTrackFormat(" F1" , mimeType = AUDIO_MIME_TYPE )
149- val format2 = createFormatTrackFormat(" F2" , mimeType = AUDIO_MIME_TYPE )
150- val formatUnsupportedTrack = createFormatTrackFormat(" Unsupported" , mimeType = AUDIO_MIME_TYPE )
151- val trackGroup = TrackGroup (format1, format2, formatUnsupportedTrack)
152- val selected = booleanArrayOf(false , false , false )
153- val trackSupport = intArrayOf(C .FORMAT_UNSUPPORTED_SUBTYPE , C .FORMAT_UNSUPPORTED_SUBTYPE , C .FORMAT_UNSUPPORTED_SUBTYPE )
154- val tracks = Tracks (listOf (Tracks .Group (trackGroup, false , trackSupport, selected)))
155- assertTrue(tracks.groups.mapNotNull { it.filterUnsupported() }.isEmpty())
156- }
157-
158- @Test
159- fun `filterUnsupported one unsupported track` () {
160- val formatUnsupportedTrack = createFormatTrackFormat(" Unsupported" , mimeType = AUDIO_MIME_TYPE )
161- val trackGroup = TrackGroup (formatUnsupportedTrack)
162- val selected = booleanArrayOf(false )
163- val trackSupport = intArrayOf(C .FORMAT_UNSUPPORTED_SUBTYPE )
164- val tracks = Tracks (listOf (Tracks .Group (trackGroup, false , trackSupport, selected)))
165- assertTrue(tracks.groups.mapNotNull { it.filterUnsupported() }.isEmpty())
166- }
167-
168106 private companion object {
169107 private const val TEXT_MIME_TYPE = MimeTypes .APPLICATION_TTML
170108 private const val VIDEO_MIME_TYPE = MimeTypes .VIDEO_H265
@@ -187,10 +125,17 @@ class TracksTest {
187125 }
188126
189127 private fun createTrackGroup (vararg formats : Format ): Tracks .Group {
190- val trackGroup = TrackGroup (* formats)
191128 val trackSupport = IntArray (formats.size) {
192129 C .FORMAT_HANDLED
193130 }
131+ return createTrackGroup(formats.toList(), trackSupport)
132+ }
133+
134+ private fun createTrackGroup (
135+ formats : List <Format >,
136+ trackSupport : IntArray ,
137+ ): Tracks .Group {
138+ val trackGroup = TrackGroup (* formats.toTypedArray())
194139 val selected = BooleanArray (formats.size)
195140 return Tracks .Group (trackGroup, false , trackSupport, selected)
196141 }
0 commit comments