3333import org .schabi .newpipe .extractor .services .youtube .extractors .YoutubeStreamExtractor ;
3434import org .schabi .newpipe .extractor .streamdata .delivery .DASHManifestDeliveryData ;
3535import org .schabi .newpipe .extractor .streamdata .delivery .dashmanifestcreator .DashManifestCreator ;
36+ import org .schabi .newpipe .extractor .streamdata .stream .AudioStream ;
3637import org .schabi .newpipe .extractor .streamdata .stream .BaseAudioStream ;
3738import org .schabi .newpipe .extractor .streamdata .stream .Stream ;
39+ import org .schabi .newpipe .extractor .streamdata .stream .VideoAudioStream ;
3840import org .schabi .newpipe .extractor .streamdata .stream .VideoStream ;
41+ import org .schabi .newpipe .extractor .streamdata .stream .quality .VideoQualityData ;
3942import org .w3c .dom .Document ;
4043import org .w3c .dom .Element ;
4144import org .w3c .dom .NodeList ;
4548import java .util .ArrayList ;
4649import java .util .Arrays ;
4750import java .util .Collection ;
51+ import java .util .LinkedHashMap ;
4852import java .util .List ;
53+ import java .util .Map ;
54+ import java .util .stream .Collectors ;
4955import java .util .stream .IntStream ;
5056
5157import javax .annotation .Nonnull ;
8490 */
8591class YoutubeDashManifestCreatorsTest {
8692 // Setting a higher number may let Google video servers return 403s
87- private static final int MAX_STREAMS_TO_TEST_PER_METHOD = 3 ;
88- private static final String url = "https://www.youtube.com/watch?v=DJ8GQUNUXGM" ;
93+ private static final int MAX_STREAMS_TO_TEST_PER_METHOD = 5 ;
94+ private static final String URL = "https://www.youtube.com/watch?v=DJ8GQUNUXGM" ;
8995
9096 private static final String RESOURCE_PATH =
9197 DownloaderFactory .RESOURCE_PATH + "services/youtube/extractor/dashmanifest/" ;
@@ -97,28 +103,38 @@ public static void setUp() throws Exception {
97103 YoutubeTestsUtils .ensureStateless ();
98104 NewPipe .init (DownloaderFactory .getDownloader (RESOURCE_PATH ));
99105
100- extractor = (YoutubeStreamExtractor ) YouTube .getStreamExtractor (url );
106+ extractor = (YoutubeStreamExtractor ) YouTube .getStreamExtractor (URL );
101107 extractor .fetchPage ();
102108 }
103109
104110 @ Test
105111 void testVideoOnlyStreams () throws ExtractionException {
106- checkStreams (extractor .getVideoOnlyStreams ());
112+ final List <VideoStream > videoStreams = getDashStreams (extractor .getVideoOnlyStreams ());
113+ assertTrue (videoStreams .size () > 0 );
114+ checkDashStreams (videoStreams );
107115 }
108116
109117 @ Test
110118 void testVideoStreams () throws ExtractionException {
111- checkStreams (extractor .getVideoStreams ());
119+ List <VideoAudioStream > videoAudioStreams = getDashStreams (extractor .getVideoStreams ());
120+ assertEquals (0 , videoAudioStreams .size (), "There should be no dash streams for video-audio streams" );
112121 }
113122
114123 @ Test
115124 void testAudioStreams () throws ExtractionException {
116- checkStreams (extractor .getAudioStreams ());
125+ final List <AudioStream > audioStreams = getDashStreams (extractor .getAudioStreams ());
126+ assertTrue (audioStreams .size () > 0 );
127+ checkDashStreams (audioStreams );
117128 }
118129
119- private <S extends Stream <?>> void checkStreams (final Collection <S > streams ) {
120- assertAll ( streams .stream ()
130+ private <S extends Stream <?>> List < S > getDashStreams (final List <S > streams ) {
131+ return streams .stream ()
121132 .filter (s -> s .deliveryData () instanceof DASHManifestDeliveryData )
133+ .collect (Collectors .toList ());
134+ }
135+
136+ private <S extends Stream <?>> void checkDashStreams (final Collection <S > streams ) {
137+ assertAll (streams .stream ()
122138 .limit (MAX_STREAMS_TO_TEST_PER_METHOD )
123139 .map (s ->
124140 () -> checkManifest (s ,
0 commit comments