Skip to content

Commit 9a7a224

Browse files
committed
Add tests for stream segments
1 parent d3eea4f commit 9a7a224

5 files changed

Lines changed: 104 additions & 1 deletion

File tree

extractor/src/test/java/org/schabi/newpipe/extractor/services/DefaultStreamExtractorTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ public abstract class DefaultStreamExtractorTest extends DefaultExtractorTest<St
6666
public Locale expectedLanguageInfo() { return null; } // default: no language info available
6767
public List<String> expectedTags() { return Collections.emptyList(); } // default: no tags
6868
public String expectedSupportInfo() { return ""; } // default: no support info available
69+
public int expectedStreamSegmentsCount() { return -1; } // return 0 or greater to test (default is -1 to ignore)
6970

7071
@Test
7172
@Override
@@ -379,4 +380,11 @@ public void testTags() throws Exception {
379380
public void testSupportInfo() throws Exception {
380381
assertEquals(expectedSupportInfo(), extractor().getSupportInfo());
381382
}
383+
384+
@Test
385+
public void testStreamSegmentsCount() throws Exception {
386+
if (expectedStreamSegmentsCount() >= 0) {
387+
assertEquals(expectedStreamSegmentsCount(), extractor().getStreamSegments().size());
388+
}
389+
}
382390
}

extractor/src/test/java/org/schabi/newpipe/extractor/services/media_ccc/MediaCCCStreamExtractorTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ public static void setUp() throws Exception {
5757
@Override public boolean expectedHasSubtitles() { return false; }
5858
@Override public boolean expectedHasFrames() { return false; }
5959
@Override public List<String> expectedTags() { return Arrays.asList("gpn18", "105"); }
60+
@Override public int expectedStreamSegmentsCount() { return 0; }
6061

6162
@Override
6263
@Test

extractor/src/test/java/org/schabi/newpipe/extractor/services/peertube/PeertubeStreamExtractorTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ public void testGetLanguageInformation() throws ParsingException {
9292
@Override public String expectedLicence() { return "Attribution - Share Alike"; }
9393
@Override public Locale expectedLanguageInfo() { return Locale.forLanguageTag("en"); }
9494
@Override public List<String> expectedTags() { return Arrays.asList("framasoft", "peertube"); }
95+
@Override public int expectedStreamSegmentsCount() { return 0; }
9596
}
9697

9798
public static class AgeRestricted extends DefaultStreamExtractorTest {

extractor/src/test/java/org/schabi/newpipe/extractor/services/soundcloud/SoundcloudStreamExtractorTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ public static void setUp() throws Exception {
5555
@Override public boolean expectedHasVideoStreams() { return false; }
5656
@Override public boolean expectedHasSubtitles() { return false; }
5757
@Override public boolean expectedHasFrames() { return false; }
58+
@Override public int expectedStreamSegmentsCount() { return 0; }
5859
}
5960

6061
}

extractor/src/test/java/org/schabi/newpipe/extractor/services/youtube/stream/YoutubeStreamExtractorDefaultTest.java

Lines changed: 93 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,15 @@
99
import org.schabi.newpipe.extractor.exceptions.ParsingException;
1010
import org.schabi.newpipe.extractor.services.DefaultStreamExtractorTest;
1111
import org.schabi.newpipe.extractor.stream.StreamExtractor;
12+
import org.schabi.newpipe.extractor.stream.StreamSegment;
1213
import org.schabi.newpipe.extractor.stream.StreamType;
1314

1415
import java.util.Arrays;
1516
import java.util.List;
1617

1718
import javax.annotation.Nullable;
1819

19-
import static org.junit.Assert.fail;
20+
import static org.junit.Assert.*;
2021
import static org.schabi.newpipe.extractor.ServiceList.YouTube;
2122

2223
/*
@@ -96,6 +97,7 @@ public static void setUp() throws Exception {
9697
@Nullable @Override public String expectedTextualUploadDate() { return "2019-08-24"; }
9798
@Override public long expectedLikeCountAtLeast() { return 5212900; }
9899
@Override public long expectedDislikeCountAtLeast() { return 30600; }
100+
@Override public int expectedStreamSegmentsCount() { return 0; }
99101
}
100102

101103
public static class DescriptionTestUnboxing extends DefaultStreamExtractorTest {
@@ -166,4 +168,94 @@ public static void setUp() throws Exception {
166168
@Override public long expectedLikeCountAtLeast() { return -1; }
167169
@Override public long expectedDislikeCountAtLeast() { return -1; }
168170
}
171+
172+
public static class StreamSegmentsTestOstCollection extends DefaultStreamExtractorTest {
173+
// StreamSegment example with single macro-makers panel
174+
private static final String ID = "2RYrHwnLHw0";
175+
private static final String URL = BASE_URL + ID;
176+
private static StreamExtractor extractor;
177+
178+
@BeforeClass
179+
public static void setUp() throws Exception {
180+
NewPipe.init(DownloaderTestImpl.getInstance());
181+
extractor = YouTube.getStreamExtractor(URL);
182+
extractor.fetchPage();
183+
}
184+
185+
@Override public StreamExtractor extractor() { return extractor; }
186+
@Override public StreamingService expectedService() { return YouTube; }
187+
@Override public String expectedName() { return "1 Hour - Most Epic Anime Mix - Battle Anime OST"; }
188+
@Override public String expectedId() { return ID; }
189+
@Override public String expectedUrlContains() { return BASE_URL + ID; }
190+
@Override public String expectedOriginalUrlContains() { return URL; }
191+
192+
@Override public StreamType expectedStreamType() { return StreamType.VIDEO_STREAM; }
193+
@Override public String expectedUploaderName() { return "MathCaires"; }
194+
@Override public String expectedUploaderUrl() { return "https://www.youtube.com/channel/UChFoHg6IT18SCqiwCp_KY7Q"; }
195+
@Override public List<String> expectedDescriptionContains() {
196+
return Arrays.asList("soundtracks", "9:49", "YouSeeBIGGIRLTT");
197+
}
198+
@Override public long expectedLength() { return 3889; }
199+
@Override public long expectedViewCountAtLeast() { return 2463261; }
200+
@Nullable @Override public String expectedUploadDate() { return "2019-06-26 00:00:00.000"; }
201+
@Nullable @Override public String expectedTextualUploadDate() { return "2019-06-26"; }
202+
@Override public long expectedLikeCountAtLeast() { return 32100; }
203+
@Override public long expectedDislikeCountAtLeast() { return 750; }
204+
@Override public boolean expectedHasSubtitles() { return false; }
205+
206+
@Override public int expectedStreamSegmentsCount() { return 17; }
207+
@Test
208+
public void testStreamSegment() throws Exception {
209+
final StreamSegment segment = extractor.getStreamSegments().get(3);
210+
assertEquals(589, segment.getStartTimeSeconds());
211+
assertEquals("Attack on Titan S2 - YouSeeBIGGIRLTT", segment.getTitle());
212+
assertEquals(BASE_URL + ID + "?t=589", segment.getUrl());
213+
assertNotNull(segment.getPreviewUrl());
214+
}
215+
}
216+
217+
public static class StreamSegmentsTestMaiLab extends DefaultStreamExtractorTest {
218+
// StreamSegment example with macro-makers panel and transcription panel
219+
private static final String ID = "ud9d5cMDP_0";
220+
private static final String URL = BASE_URL + ID;
221+
private static StreamExtractor extractor;
222+
223+
@BeforeClass
224+
public static void setUp() throws Exception {
225+
NewPipe.init(DownloaderTestImpl.getInstance());
226+
extractor = YouTube.getStreamExtractor(URL);
227+
extractor.fetchPage();
228+
}
229+
230+
@Override public StreamExtractor extractor() { return extractor; }
231+
@Override public StreamingService expectedService() { return YouTube; }
232+
@Override public String expectedName() { return "Vitamin D wissenschaftlich gepr\u00fcft"; }
233+
@Override public String expectedId() { return ID; }
234+
@Override public String expectedUrlContains() { return BASE_URL + ID; }
235+
@Override public String expectedOriginalUrlContains() { return URL; }
236+
237+
@Override public StreamType expectedStreamType() { return StreamType.VIDEO_STREAM; }
238+
@Override public String expectedUploaderName() { return "maiLab"; }
239+
@Override public String expectedUploaderUrl() { return "https://www.youtube.com/channel/UCyHDQ5C6z1NDmJ4g6SerW8g"; }
240+
@Override public List<String> expectedDescriptionContains() {
241+
return Arrays.asList("Vitamin", "2:44", "Was ist Vitamin D?");
242+
}
243+
@Override public long expectedLength() { return 1010; }
244+
@Override public long expectedViewCountAtLeast() { return 815500; }
245+
@Nullable @Override public String expectedUploadDate() { return "2020-11-18 00:00:00.000"; }
246+
@Nullable @Override public String expectedTextualUploadDate() { return "2020-11-18"; }
247+
@Override public long expectedLikeCountAtLeast() { return 48500; }
248+
@Override public long expectedDislikeCountAtLeast() { return 20000; }
249+
@Override public boolean expectedHasSubtitles() { return true; }
250+
251+
@Override public int expectedStreamSegmentsCount() { return 7; }
252+
@Test
253+
public void testStreamSegment() throws Exception {
254+
final StreamSegment segment = extractor.getStreamSegments().get(1);
255+
assertEquals(164, segment.getStartTimeSeconds());
256+
assertEquals("Was ist Vitamin D?", segment.getTitle());
257+
assertEquals(BASE_URL + ID + "?t=164", segment.getUrl());
258+
assertNotNull(segment.getPreviewUrl());
259+
}
260+
}
169261
}

0 commit comments

Comments
 (0)