Started fixing tests...

This commit is contained in:
litetex 2022-06-14 22:24:50 +02:00
parent 736366920b
commit 9da8dd8bd4
13 changed files with 89 additions and 91 deletions

View File

@ -22,7 +22,8 @@ public interface BaseStreamExtractorTest extends BaseExtractorTest {
void testAgeLimit() throws Exception;
void testErrorMessage() throws Exception;
void testAudioStreams() throws Exception;
void testVideoStreams() throws Exception;
void testVideoOnlyStreams() throws Exception;
void testVideoAudioStreams() throws Exception;
void testSubtitles() throws Exception;
void testGetDashMpdUrl() throws Exception;
void testFrames() throws Exception;

View File

@ -15,15 +15,20 @@ import static org.schabi.newpipe.extractor.stream.StreamExtractor.UNKNOWN_SUBSCR
import org.junit.jupiter.api.Test;
import org.schabi.newpipe.extractor.ExtractorAsserts;
import org.schabi.newpipe.extractor.InfoItemsCollector;
import org.schabi.newpipe.extractor.MediaFormat;
import org.schabi.newpipe.extractor.MetaInfo;
import org.schabi.newpipe.extractor.localization.DateWrapper;
import org.schabi.newpipe.extractor.stream.AudioStream;
import org.schabi.newpipe.extractor.stream.Description;
import org.schabi.newpipe.extractor.stream.Frameset;
import org.schabi.newpipe.extractor.stream.Privacy;
import org.schabi.newpipe.extractor.stream.StreamExtractor;
import org.schabi.newpipe.extractor.stream.StreamType;
import org.schabi.newpipe.extractor.streamdata.delivery.DASHManifestDeliveryData;
import org.schabi.newpipe.extractor.streamdata.delivery.DeliveryData;
import org.schabi.newpipe.extractor.streamdata.delivery.UrlBasedDeliveryData;
import org.schabi.newpipe.extractor.streamdata.stream.AudioStream;
import org.schabi.newpipe.extractor.streamdata.stream.SubtitleStream;
import org.schabi.newpipe.extractor.streamdata.stream.VideoAudioStream;
import org.schabi.newpipe.extractor.streamdata.stream.VideoStream;
import java.net.MalformedURLException;
import java.net.URL;
@ -42,7 +47,8 @@ import javax.annotation.Nullable;
public abstract class DefaultStreamExtractorTest extends DefaultExtractorTest<StreamExtractor>
implements BaseStreamExtractorTest {
public abstract StreamType expectedStreamType();
public boolean expectedIsLive() { return false; }
public boolean expectedIsAudioOnly() { return false; }
public abstract String expectedUploaderName();
public abstract String expectedUploaderUrl();
public boolean expectedUploaderVerified() { return false; }
@ -61,8 +67,9 @@ public abstract class DefaultStreamExtractorTest extends DefaultExtractorTest<St
public boolean expectedHasRelatedItems() { return true; } // default: there are related videos
public int expectedAgeLimit() { return StreamExtractor.NO_AGE_LIMIT; } // default: no limit
@Nullable public String expectedErrorMessage() { return null; } // default: no error message
public boolean expectedHasVideoStreams() { return true; } // default: there are video streams
public boolean expectedHasAudioStreams() { return true; } // default: there are audio streams
public boolean expectedHasVideoOnlyStreams() { return true; }
public boolean expectedHasVideoAndAudioStreams() { return true; }
public boolean expectedHasAudioStreams() { return true; }
public boolean expectedHasSubtitles() { return true; } // default: there are subtitles streams
@Nullable public String expectedDashMpdUrlContains() { return null; } // default: no dash mpd
public boolean expectedHasFrames() { return true; } // default: there are frames
@ -254,34 +261,39 @@ public abstract class DefaultStreamExtractorTest extends DefaultExtractorTest<St
@Test
@Override
public void testVideoStreams() throws Exception {
final List<VideoStream> videoStreams = extractor().getVideoStreams();
public void testVideoOnlyStreams() throws Exception {
final List<VideoStream> videoOnlyStreams = extractor().getVideoOnlyStreams();
assertNotNull(videoStreams);
assertNotNull(videoOnlyStreams);
videoStreams.addAll(videoOnlyStreams);
if (expectedHasVideoStreams()) {
assertFalse(videoStreams.isEmpty());
if (expectedHasVideoOnlyStreams()) {
assertFalse(videoOnlyStreams.isEmpty());
for (final VideoStream stream : videoStreams) {
if (stream.isUrl()) {
assertIsSecureUrl(stream.getContent());
}
final StreamType streamType = extractor().getStreamType();
// On some video streams, the resolution can be empty and the format be unknown,
// especially on livestreams (like streams with HLS master playlists)
if (streamType != StreamType.LIVE_STREAM
&& streamType != StreamType.AUDIO_LIVE_STREAM) {
assertFalse(stream.getResolution().isEmpty());
final int formatId = stream.getFormatId();
// see MediaFormat: video stream formats range from 0 to 0x100
assertTrue(0 <= formatId && formatId < 0x100,
"Format id does not fit a video stream: " + formatId);
}
for (final VideoStream stream : videoOnlyStreams) {
assertNotNull(stream.mediaFormat());
assertNotNull(stream.videoQualityData());
checkDeliveryData(stream.deliveryData());
}
} else {
assertTrue(videoStreams.isEmpty());
assertTrue(videoOnlyStreams.isEmpty());
}
}
@Test
@Override
public void testVideoAudioStreams() throws Exception {
final List<VideoAudioStream> videoAudioStreams = extractor().getVideoStreams();
assertNotNull(videoAudioStreams);
if (expectedHasVideoAndAudioStreams()) {
assertFalse(videoAudioStreams.isEmpty());
for (final VideoAudioStream stream : videoAudioStreams) {
assertNotNull(stream.mediaFormat());
assertNotNull(stream.videoQualityData());
checkDeliveryData(stream.deliveryData());
}
} else {
assertTrue(videoAudioStreams.isEmpty());
}
}
@ -295,17 +307,8 @@ public abstract class DefaultStreamExtractorTest extends DefaultExtractorTest<St
assertFalse(audioStreams.isEmpty());
for (final AudioStream stream : audioStreams) {
if (stream.isUrl()) {
assertIsSecureUrl(stream.getContent());
}
// The media format can be unknown on some audio streams
if (stream.getFormat() != null) {
final int formatId = stream.getFormat().id;
// see MediaFormat: audio stream formats range from 0x100 to 0x1000
assertTrue(0x100 <= formatId && formatId < 0x1000,
"Format id does not fit an audio stream: " + formatId);
}
assertNotNull(stream.mediaFormat());
checkDeliveryData(stream.deliveryData());
}
} else {
assertTrue(audioStreams.isEmpty());
@ -315,32 +318,29 @@ public abstract class DefaultStreamExtractorTest extends DefaultExtractorTest<St
@Test
@Override
public void testSubtitles() throws Exception {
final List<SubtitlesStream> subtitles = extractor().getSubtitlesDefault();
final List<SubtitleStream> subtitles = extractor().getSubtitles();
assertNotNull(subtitles);
if (expectedHasSubtitles()) {
assertFalse(subtitles.isEmpty());
for (final SubtitlesStream stream : subtitles) {
if (stream.isUrl()) {
assertIsSecureUrl(stream.getContent());
}
final int formatId = stream.getFormatId();
// see MediaFormat: video stream formats range from 0x1000 to 0x10000
assertTrue(0x1000 <= formatId && formatId < 0x10000,
"Format id does not fit a subtitles stream: " + formatId);
for (final SubtitleStream stream : subtitles) {
assertNotNull(stream.languageCode());
assertNotNull(stream.mediaFormat());
checkDeliveryData(stream.deliveryData());
}
} else {
assertTrue(subtitles.isEmpty());
}
}
final MediaFormat[] formats = {MediaFormat.VTT, MediaFormat.TTML, MediaFormat.SRT,
MediaFormat.TRANSCRIPT1, MediaFormat.TRANSCRIPT2, MediaFormat.TRANSCRIPT3};
for (final MediaFormat format : formats) {
final List<SubtitlesStream> formatSubtitles = extractor().getSubtitles(format);
assertNotNull(formatSubtitles);
assertTrue(formatSubtitles.isEmpty());
}
private void checkDeliveryData(final DeliveryData deliveryData) {
if (deliveryData instanceof UrlBasedDeliveryData) {
assertIsSecureUrl(((UrlBasedDeliveryData) deliveryData).url());
} else if (deliveryData instanceof DASHManifestDeliveryData) {
final DASHManifestDeliveryData dashManifestDD =
(DASHManifestDeliveryData) deliveryData;
assertNotNull(dashManifestDD.getDashManifestCreator());
}
}
@ -455,6 +455,15 @@ public abstract class DefaultStreamExtractorTest extends DefaultExtractorTest<St
assertTrue(urls.contains(expectedUrl));
}
}
}
@Test
public void testIsLive() throws Exception {
assertEquals(expectedIsLive(), extractor().isLive());
}
@Test
public void testIsAudioOnly() throws Exception {
assertEquals(expectedIsAudioOnly(), extractor().isAudioOnly());
}
}

View File

@ -1,5 +1,11 @@
package org.schabi.newpipe.extractor.services.bandcamp;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.schabi.newpipe.extractor.ServiceList.Bandcamp;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.schabi.newpipe.downloader.DownloaderTestImpl;
@ -11,7 +17,6 @@ import org.schabi.newpipe.extractor.exceptions.ParsingException;
import org.schabi.newpipe.extractor.services.DefaultStreamExtractorTest;
import org.schabi.newpipe.extractor.services.bandcamp.extractors.BandcampRadioStreamExtractor;
import org.schabi.newpipe.extractor.stream.StreamExtractor;
import org.schabi.newpipe.extractor.stream.StreamType;
import java.io.IOException;
import java.util.Calendar;
@ -19,9 +24,6 @@ import java.util.Collections;
import java.util.List;
import java.util.TimeZone;
import static org.junit.jupiter.api.Assertions.*;
import static org.schabi.newpipe.extractor.ServiceList.Bandcamp;
public class BandcampRadioStreamExtractorTest extends DefaultStreamExtractorTest {
private static StreamExtractor extractor;
@ -47,11 +49,11 @@ public class BandcampRadioStreamExtractorTest extends DefaultStreamExtractorTest
@Override public String expectedId() throws Exception { return "230"; }
@Override public String expectedUrlContains() throws Exception { return URL; }
@Override public String expectedOriginalUrlContains() throws Exception { return URL; }
@Override public boolean expectedHasVideoStreams() { return false; }
@Override public boolean expectedHasVideoAndAudioStreams() { return false; }
@Override public boolean expectedHasSubtitles() { return false; }
@Override public boolean expectedHasFrames() { return false; }
@Override public boolean expectedHasRelatedItems() { return false; }
@Override public StreamType expectedStreamType() { return StreamType.AUDIO_STREAM; }
@Override public boolean expectedIsAudioOnly() { return true; }
@Override public StreamingService expectedService() { return Bandcamp; }
@Override public String expectedUploaderName() { return "Andrew Jervis"; }
@Override public int expectedStreamSegmentsCount() { return 30; }
@ -80,6 +82,7 @@ public class BandcampRadioStreamExtractorTest extends DefaultStreamExtractorTest
@Override public String expectedUploadDate() { return "16 May 2017 00:00:00 GMT"; }
@Override public String expectedTextualUploadDate() { return "16 May 2017 00:00:00 GMT"; }
@Override
@Test
public void testUploadDate() throws ParsingException {
final Calendar expectedCalendar = Calendar.getInstance();

View File

@ -70,8 +70,8 @@ public class BandcampStreamExtractorTest extends DefaultStreamExtractorTest {
}
@Override
public StreamType expectedStreamType() {
return StreamType.AUDIO_STREAM;
public boolean expectedIsAudioOnly() {
return true;
}
@Override
@ -120,7 +120,7 @@ public class BandcampStreamExtractorTest extends DefaultStreamExtractorTest {
}
@Override
public boolean expectedHasVideoStreams() {
public boolean expectedHasVideoAndAudioStreams() {
return false;
}

View File

@ -43,7 +43,6 @@ public class MediaCCCStreamExtractorTest {
@Override public String expectedId() { return ID; }
@Override public String expectedUrlContains() { return URL; }
@Override public String expectedOriginalUrlContains() { return URL; }
@Override public StreamType expectedStreamType() { return StreamType.VIDEO_STREAM; }
@Override public String expectedUploaderName() { return "gpn18"; }
@Override public String expectedUploaderUrl() { return "https://media.ccc.de/c/gpn18"; }
@Override public List<String> expectedDescriptionContains() { return Arrays.asList("SSH-Sessions", "\"Terminal Multiplexer\""); }
@ -76,8 +75,8 @@ public class MediaCCCStreamExtractorTest {
@Override
@Test
public void testVideoStreams() throws Exception {
super.testVideoStreams();
public void testVideoOnlyStreams() throws Exception {
super.testVideoOnlyStreams();
assertEquals(4, extractor.getVideoStreams().size());
}
@ -115,7 +114,6 @@ public class MediaCCCStreamExtractorTest {
}
@Override public String expectedUrlContains() { return URL; }
@Override public String expectedOriginalUrlContains() { return URL; }
@Override public StreamType expectedStreamType() { return StreamType.VIDEO_STREAM; }
@Override public String expectedUploaderName() { return "36c3"; }
@Override public String expectedUploaderUrl() { return "https://media.ccc.de/c/36c3"; }
@Override public List<String> expectedDescriptionContains() { return Arrays.asList("WhatsApp", "Signal"); }
@ -146,8 +144,8 @@ public class MediaCCCStreamExtractorTest {
@Override
@Test
public void testVideoStreams() throws Exception {
super.testVideoStreams();
public void testVideoOnlyStreams() throws Exception {
super.testVideoOnlyStreams();
assertEquals(8, extractor.getVideoStreams().size());
}

View File

@ -57,7 +57,6 @@ public abstract class PeertubeStreamExtractorTest extends DefaultStreamExtractor
@Override public String expectedUrlContains() { return INSTANCE + BASE_URL + ID; }
@Override public String expectedOriginalUrlContains() { return URL; }
@Override public StreamType expectedStreamType() { return StreamType.VIDEO_STREAM; }
@Override public String expectedUploaderName() { return "Framasoft"; }
@Override public String expectedUploaderUrl() { return "https://framatube.org/accounts/framasoft@framatube.org"; }
@Override public String expectedSubChannelName() { return "A propos de PeerTube"; }
@ -118,7 +117,6 @@ public abstract class PeertubeStreamExtractorTest extends DefaultStreamExtractor
@Override public String expectedUrlContains() { return INSTANCE + BASE_URL + ID; }
@Override public String expectedOriginalUrlContains() { return URL; }
@Override public StreamType expectedStreamType() { return StreamType.VIDEO_STREAM; }
@Override public String expectedUploaderName() { return "Marinauts"; }
@Override public String expectedUploaderUrl() { return "https://tilvids.com/accounts/marinauts@tilvids.com"; }
@Override public String expectedSubChannelName() { return "Main marinauts channel"; }
@ -163,7 +161,6 @@ public abstract class PeertubeStreamExtractorTest extends DefaultStreamExtractor
@Override public String expectedUrlContains() { return INSTANCE + BASE_URL + ID; }
@Override public String expectedOriginalUrlContains() { return URL; }
@Override public StreamType expectedStreamType() { return StreamType.VIDEO_STREAM; }
@Override public String expectedUploaderName() { return "Résilience humaine"; }
@Override public String expectedUploaderUrl() { return "https://nocensoring.net/accounts/gmt@nocensoring.net"; }
@Override public String expectedSubChannelName() { return "SYSTEM FAILURE Quel à-venir ?"; }

View File

@ -53,7 +53,7 @@ public class SoundcloudStreamExtractorTest {
@Override public String expectedUrlContains() { return UPLOADER + "/" + ID; }
@Override public String expectedOriginalUrlContains() { return URL; }
@Override public StreamType expectedStreamType() { return StreamType.AUDIO_STREAM; }
@Override public boolean expectedIsAudioOnly() { return true; }
@Override public String expectedUploaderName() { return "Jess Glynne"; }
@Override public String expectedUploaderUrl() { return UPLOADER; }
@Override public boolean expectedUploaderVerified() { return true; }
@ -67,7 +67,7 @@ public class SoundcloudStreamExtractorTest {
@Override public long expectedLikeCountAtLeast() { return -1; }
@Override public long expectedDislikeCountAtLeast() { return -1; }
@Override public boolean expectedHasAudioStreams() { return false; }
@Override public boolean expectedHasVideoStreams() { return false; }
@Override public boolean expectedHasVideoAndAudioStreams() { return false; }
@Override public boolean expectedHasSubtitles() { return false; }
@Override public boolean expectedHasFrames() { return false; }
@Override public int expectedStreamSegmentsCount() { return 0; }
@ -116,7 +116,7 @@ public class SoundcloudStreamExtractorTest {
@Override public String expectedUrlContains() { return UPLOADER + "/" + ID; }
@Override public String expectedOriginalUrlContains() { return URL; }
@Override public StreamType expectedStreamType() { return StreamType.AUDIO_STREAM; }
@Override public boolean expectedIsAudioOnly() { return true; }
@Override public String expectedUploaderName() { return "martinsolveig"; }
@Override public String expectedUploaderUrl() { return UPLOADER; }
@Override public boolean expectedUploaderVerified() { return true; }
@ -130,7 +130,7 @@ public class SoundcloudStreamExtractorTest {
@Override public long expectedLikeCountAtLeast() { return -1; }
@Override public long expectedDislikeCountAtLeast() { return -1; }
@Override public boolean expectedHasAudioStreams() { return false; }
@Override public boolean expectedHasVideoStreams() { return false; }
@Override public boolean expectedHasVideoAndAudioStreams() { return false; }
@Override public boolean expectedHasRelatedItems() { return true; }
@Override public boolean expectedHasSubtitles() { return false; }
@Override public boolean expectedHasFrames() { return false; }
@ -160,7 +160,7 @@ public class SoundcloudStreamExtractorTest {
@Override public String expectedUrlContains() { return UPLOADER + "/" + ID; }
@Override public String expectedOriginalUrlContains() { return URL; }
@Override public StreamType expectedStreamType() { return StreamType.AUDIO_STREAM; }
@Override public boolean expectedIsAudioOnly() { return true; }
@Override public String expectedUploaderName() { return "Creative Commons"; }
@Override public String expectedUploaderUrl() { return UPLOADER; }
@Override public List<String> expectedDescriptionContains() { return Arrays.asList("Stigmergy is a mechanism of indirect coordination",
@ -172,7 +172,7 @@ public class SoundcloudStreamExtractorTest {
@Nullable @Override public String expectedTextualUploadDate() { return "2019-03-28 13:36:18"; }
@Override public long expectedLikeCountAtLeast() { return -1; }
@Override public long expectedDislikeCountAtLeast() { return -1; }
@Override public boolean expectedHasVideoStreams() { return false; }
@Override public boolean expectedHasVideoAndAudioStreams() { return false; }
@Override public boolean expectedHasSubtitles() { return false; }
@Override public boolean expectedHasFrames() { return false; }
@Override public int expectedStreamSegmentsCount() { return 0; }

View File

@ -38,7 +38,6 @@ public class YoutubeStreamExtractorAgeRestrictedTest extends DefaultStreamExtrac
@Override public String expectedUrlContains() { return YoutubeStreamExtractorDefaultTest.BASE_URL + ID; }
@Override public String expectedOriginalUrlContains() { return URL; }
@Override public StreamType expectedStreamType() { return StreamType.VIDEO_STREAM; }
@Override public String expectedUploaderName() { return "DAN TV"; }
@Override public String expectedUploaderUrl() { return "https://www.youtube.com/channel/UCcQHIVL83g5BEQe2IJFb-6w"; }
@Override public long expectedUploaderSubscriberCountAtLeast() { return 50; }

View File

@ -42,7 +42,6 @@ public class YoutubeStreamExtractorControversialTest extends DefaultStreamExtrac
@Override public String expectedUrlContains() { return URL; }
@Override public String expectedOriginalUrlContains() { return URL; }
@Override public StreamType expectedStreamType() { return StreamType.VIDEO_STREAM; }
@Override public String expectedUploaderName() { return "Amazing Atheist"; }
@Override public String expectedUploaderUrl() { return "https://www.youtube.com/channel/UCjNxszyFPasDdRoD9J6X-sw"; }
@Override public long expectedUploaderSubscriberCountAtLeast() { return 900_000; }

View File

@ -134,7 +134,6 @@ public class YoutubeStreamExtractorDefaultTest {
@Override public String expectedUrlContains() { return BASE_URL + ID; }
@Override public String expectedOriginalUrlContains() { return URL; }
@Override public StreamType expectedStreamType() { return StreamType.VIDEO_STREAM; }
@Override public String expectedUploaderName() { return "PewDiePie"; }
@Override public String expectedUploaderUrl() { return "https://www.youtube.com/channel/UC-lHJZR3Gqxm24_Vd_AJ5Yw"; }
@Override public long expectedUploaderSubscriberCountAtLeast() { return 110_000_000; }
@ -177,7 +176,6 @@ public class YoutubeStreamExtractorDefaultTest {
@Override public String expectedUrlContains() { return URL; }
@Override public String expectedOriginalUrlContains() { return URL; }
@Override public StreamType expectedStreamType() { return StreamType.VIDEO_STREAM; }
@Override public String expectedUploaderName() { return "Unbox Therapy"; }
@Override public String expectedUploaderUrl() { return "https://www.youtube.com/channel/UCsTcErHg8oDvUnTzoqsYeNw"; }
@Override public long expectedUploaderSubscriberCountAtLeast() { return 18_000_000; }
@ -230,7 +228,6 @@ public class YoutubeStreamExtractorDefaultTest {
@Override public String expectedUrlContains() { return BASE_URL + ID; }
@Override public String expectedOriginalUrlContains() { return URL; }
@Override public StreamType expectedStreamType() { return StreamType.VIDEO_STREAM; }
@Override public String expectedUploaderName() { return "YouTuber PrinceOfFALLEN"; }
@Override public String expectedUploaderUrl() { return "https://www.youtube.com/channel/UCQT2yul0lr6Ie9qNQNmw-sg"; }
@Override public List<String> expectedDescriptionContains() { return Arrays.asList("dislikes", "Alpha", "wrong"); }
@ -266,7 +263,6 @@ public class YoutubeStreamExtractorDefaultTest {
@Override public String expectedUrlContains() { return BASE_URL + ID; }
@Override public String expectedOriginalUrlContains() { return URL; }
@Override public StreamType expectedStreamType() { return StreamType.VIDEO_STREAM; }
@Override public String expectedUploaderName() { return "tagesschau"; }
@Override public String expectedUploaderUrl() { return "https://www.youtube.com/channel/UC5NOEUbkLheQcaaRldYW5GA"; }
@Override public long expectedUploaderSubscriberCountAtLeast() { return 1_000_000; }
@ -327,7 +323,6 @@ public class YoutubeStreamExtractorDefaultTest {
@Override public String expectedUrlContains() { return BASE_URL + ID; }
@Override public String expectedOriginalUrlContains() { return URL; }
@Override public StreamType expectedStreamType() { return StreamType.VIDEO_STREAM; }
@Override public String expectedUploaderName() { return "maiLab"; }
@Override public String expectedUploaderUrl() { return "https://www.youtube.com/channel/UCyHDQ5C6z1NDmJ4g6SerW8g"; }
@Override public long expectedUploaderSubscriberCountAtLeast() { return 1_400_000; }
@ -395,7 +390,6 @@ public class YoutubeStreamExtractorDefaultTest {
@Override public String expectedUrlContains() { return BASE_URL + ID; }
@Override public String expectedOriginalUrlContains() { return URL; }
@Override public StreamType expectedStreamType() { return StreamType.VIDEO_STREAM; }
@Override public String expectedUploaderName() { return "Dinge Erklärt Kurzgesagt"; }
@Override public String expectedUploaderUrl() { return "https://www.youtube.com/channel/UCwRH985XgMYXQ6NxXDo8npw"; }
@Override public long expectedUploaderSubscriberCountAtLeast() { return 1_500_000; }

View File

@ -45,7 +45,7 @@ public class YoutubeStreamExtractorLivestreamTest extends DefaultStreamExtractor
@Override public String expectedUrlContains() { return YoutubeStreamExtractorDefaultTest.BASE_URL + ID; }
@Override public String expectedOriginalUrlContains() { return URL; }
@Override public StreamType expectedStreamType() { return StreamType.LIVE_STREAM; }
@Override public boolean expectedIsLive() { return true; }
@Override public String expectedUploaderName() { return "Lofi Girl"; }
@Override public String expectedUploaderUrl() { return "https://www.youtube.com/channel/UCSJ4gkVC6NrvII8umztf0Ow"; }
@Override public long expectedUploaderSubscriberCountAtLeast() { return 9_800_000; }

View File

@ -52,7 +52,6 @@ public class YoutubeStreamExtractorRelatedMixTest extends DefaultStreamExtractor
@Override public String expectedUrlContains() { return URL; }
@Override public String expectedOriginalUrlContains() { return URL; }
@Override public StreamType expectedStreamType() { return StreamType.VIDEO_STREAM; }
@Override public String expectedUploaderName() { return "NoCopyrightSounds"; }
@Override public String expectedUploaderUrl() { return "https://www.youtube.com/channel/UC_aEa8K-EOJ3D6gOs7HcyNg"; }
@Override public List<String> expectedDescriptionContains() {

View File

@ -39,7 +39,6 @@ public class YoutubeStreamExtractorUnlistedTest extends DefaultStreamExtractorTe
@Override public String expectedUrlContains() { return URL; }
@Override public String expectedOriginalUrlContains() { return URL; }
@Override public StreamType expectedStreamType() { return StreamType.VIDEO_STREAM; }
@Override public String expectedUploaderName() { return "Hooked"; }
@Override public String expectedUploaderUrl() { return "https://www.youtube.com/channel/UCPysfiuOv4VKBeXFFPhKXyw"; }
@Override public long expectedUploaderSubscriberCountAtLeast() { return 24_300; }