diff --git a/app/build.gradle b/app/build.gradle index c9ba8169f..e068acff2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -45,8 +45,8 @@ dependencies { compile 'com.google.android.exoplayer:exoplayer:r1.5.5' compile 'com.google.code.gson:gson:2.4' compile 'com.nononsenseapps:filepicker:3.0.0' + compile 'ch.acra:acra:4.9.0' testCompile 'junit:junit:4.12' testCompile 'org.mockito:mockito-core:1.10.19' - compile 'ch.acra:acra:4.9.0' - compile 'com.google.android.gms:play-services-appindexing:8.4.0' + testCompile 'org.json:json:20160810' } diff --git a/app/src/androidTest/java/org/schabi/newpipe/extractor/youtube/YoutubeStreamExtractorLiveStreamTest.java b/app/src/androidTest/java/org/schabi/newpipe/extractor/youtube/YoutubeStreamExtractorLiveStreamTest.java deleted file mode 100644 index 9150ba93f..000000000 --- a/app/src/androidTest/java/org/schabi/newpipe/extractor/youtube/YoutubeStreamExtractorLiveStreamTest.java +++ /dev/null @@ -1,52 +0,0 @@ -package org.schabi.newpipe.extractor.youtube; - -import android.test.AndroidTestCase; - - -import org.schabi.newpipe.extractor.exceptions.ExtractionException; -import org.schabi.newpipe.extractor.exceptions.ParsingException; -import org.schabi.newpipe.extractor.stream_info.StreamExtractor; - -import java.io.IOException; - -/** - * Created by Christian Schabesberger on 11.03.16. - * - * Copyright (C) Christian Schabesberger 2016 - * YoutubeStreamExtractorLiveStreamTest.java is part of NewPipe. - * - * NewPipe is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * NewPipe is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with NewPipe. If not, see . - */ - - -public class YoutubeStreamExtractorLiveStreamTest extends AndroidTestCase { - - private StreamExtractor extractor; - - public void setUp() throws IOException, ExtractionException { - //todo: make the extractor not throw over a livestream - /* - - NewPipe.init(Downloader.getInstance()); - extractor = NewPipe.getService("Youtube") - .getExtractorInstance("https://www.youtube.com/watch?v=J0s6NjqdjLE", Downloader.getInstance()); - */ - } - - public void testStreamType() throws ParsingException { - assertTrue(true); - // assertTrue(extractor.getStreamType() == AbstractVideoInfo.StreamType.LIVE_STREAM); - } -} - diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index af33d93f4..2b44f0b53 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -170,11 +170,7 @@ - - + \ No newline at end of file diff --git a/app/src/main/java/org/schabi/newpipe/extractor/search/SearchEngine.java b/app/src/main/java/org/schabi/newpipe/extractor/search/SearchEngine.java index 76221528e..9cef050eb 100644 --- a/app/src/main/java/org/schabi/newpipe/extractor/search/SearchEngine.java +++ b/app/src/main/java/org/schabi/newpipe/extractor/search/SearchEngine.java @@ -29,7 +29,7 @@ import java.util.EnumSet; public abstract class SearchEngine { public enum Filter { - VIDEO, CHANNEL, PLAY_LIST + STREAM, CHANNEL, PLAY_LIST } public static class NothingFoundException extends ExtractionException { diff --git a/app/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeSearchEngine.java b/app/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeSearchEngine.java index bedb5df79..d650535f7 100644 --- a/app/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeSearchEngine.java +++ b/app/src/main/java/org/schabi/newpipe/extractor/services/youtube/YoutubeSearchEngine.java @@ -58,9 +58,9 @@ public class YoutubeSearchEngine extends SearchEngine { String url = "https://www.youtube.com/results" + "?q=" + URLEncoder.encode(query, CHARSET_UTF_8) + "&page=" + Integer.toString(page + 1); - if(filter.contains(Filter.VIDEO) && !filter.contains(Filter.CHANNEL)) { + if(filter.contains(Filter.STREAM) && !filter.contains(Filter.CHANNEL)) { url += "&sp=EgIQAQ%253D%253D"; - } else if(!filter.contains(Filter.VIDEO) && filter.contains(Filter.CHANNEL)) { + } else if(!filter.contains(Filter.STREAM) && filter.contains(Filter.CHANNEL)) { url += "&sp=EgIQAg%253D%253D"; } diff --git a/app/src/main/java/org/schabi/newpipe/search_fragment/SearchInfoItemFragment.java b/app/src/main/java/org/schabi/newpipe/search_fragment/SearchInfoItemFragment.java index 461f7c981..ee20990d4 100644 --- a/app/src/main/java/org/schabi/newpipe/search_fragment/SearchInfoItemFragment.java +++ b/app/src/main/java/org/schabi/newpipe/search_fragment/SearchInfoItemFragment.java @@ -61,7 +61,7 @@ public class SearchInfoItemFragment extends Fragment { private static final String TAG = SearchInfoItemFragment.class.toString(); private EnumSet filter = - EnumSet.of(SearchEngine.Filter.CHANNEL, SearchEngine.Filter.VIDEO); + EnumSet.of(SearchEngine.Filter.CHANNEL, SearchEngine.Filter.STREAM); /** * Listener for search queries @@ -300,10 +300,10 @@ public class SearchInfoItemFragment extends Fragment { public boolean onOptionsItemSelected(MenuItem item) { switch(item.getItemId()) { case R.id.menu_filter_all: - changeFilter(item, EnumSet.of(SearchEngine.Filter.VIDEO, SearchEngine.Filter.CHANNEL)); + changeFilter(item, EnumSet.of(SearchEngine.Filter.STREAM, SearchEngine.Filter.CHANNEL)); return true; case R.id.menu_filter_video: - changeFilter(item, EnumSet.of(SearchEngine.Filter.VIDEO)); + changeFilter(item, EnumSet.of(SearchEngine.Filter.STREAM)); return true; case R.id.menu_filter_channel: changeFilter(item, EnumSet.of(SearchEngine.Filter.CHANNEL)); diff --git a/app/src/androidTest/java/org/schabi/newpipe/extractor/youtube/YoutubeChannelExtractorTest.java b/app/src/test/java/org/schabi/newpipe/extractor/services/youtube/youtube/YoutubeChannelExtractorTest.java similarity index 85% rename from app/src/androidTest/java/org/schabi/newpipe/extractor/youtube/YoutubeChannelExtractorTest.java rename to app/src/test/java/org/schabi/newpipe/extractor/services/youtube/youtube/YoutubeChannelExtractorTest.java index d4aaf51b9..c78f84170 100644 --- a/app/src/androidTest/java/org/schabi/newpipe/extractor/youtube/YoutubeChannelExtractorTest.java +++ b/app/src/test/java/org/schabi/newpipe/extractor/services/youtube/youtube/YoutubeChannelExtractorTest.java @@ -1,16 +1,21 @@ -package org.schabi.newpipe.extractor.youtube; +package org.schabi.newpipe.extractor.services.youtube.youtube; -import android.test.AndroidTestCase; +import org.junit.Before; +import org.junit.Test; import org.schabi.newpipe.Downloader; import org.schabi.newpipe.extractor.NewPipe; import org.schabi.newpipe.extractor.channel.ChannelExtractor; +import static junit.framework.Assert.assertEquals; +import static junit.framework.Assert.assertNotNull; +import static junit.framework.Assert.assertTrue; + /** * Created by Christian Schabesberger on 12.09.16. * * Copyright (C) Christian Schabesberger 2015 - * YoutubeSearchEngineTest.java is part of NewPipe. + * YoutubeSearchEngineStreamTest.java is part of NewPipe. * * NewPipe is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -26,56 +31,70 @@ import org.schabi.newpipe.extractor.channel.ChannelExtractor; * along with NewPipe. If not, see . */ -public class YoutubeChannelExtractorTest extends AndroidTestCase { +/** + * Test for {@link ChannelExtractor} + */ + +public class YoutubeChannelExtractorTest { ChannelExtractor extractor; - @Override + + @Before public void setUp() throws Exception { - super.setUp(); NewPipe.init(Downloader.getInstance()); extractor = NewPipe.getService("Youtube") .getChannelExtractorInstance("https://www.youtube.com/channel/UCYJ61XIK64sp6ZFFS8sctxw", 0); } + @Test public void testGetDownloader() throws Exception { assertNotNull(NewPipe.getDownloader()); } + @Test public void testGetChannelName() throws Exception { assertEquals(extractor.getChannelName(), "Gronkh"); } + @Test public void testGetAvatarUrl() throws Exception { assertTrue(extractor.getAvatarUrl(), extractor.getAvatarUrl().contains("yt3")); } + @Test public void testGetBannerurl() throws Exception { assertTrue(extractor.getBannerUrl(), extractor.getBannerUrl().contains("yt3")); } + @Test public void testGetFeedUrl() throws Exception { assertTrue(extractor.getFeedUrl(), extractor.getFeedUrl().contains("feed")); } + @Test public void testGetStreams() throws Exception { assertTrue("no streams are received", !extractor.getStreams().getItemList().isEmpty()); } + @Test public void testGetStreamsErrors() throws Exception { assertTrue("errors during stream list extraction", extractor.getStreams().getErrors().isEmpty()); } + @Test public void testHasNextPage() throws Exception { // this particular example (link) has a next page !!! assertTrue("no next page link found", extractor.hasNextPage()); } + @Test public void testGetNextPage() throws Exception { extractor = NewPipe.getService("Youtube") .getChannelExtractorInstance("https://www.youtube.com/channel/UCYJ61XIK64sp6ZFFS8sctxw", 1); assertTrue("next page didn't have content", !extractor.getStreams().getItemList().isEmpty()); } + @Test public void testGetNextNextPageUrl() throws Exception { extractor = NewPipe.getService("Youtube") .getChannelExtractorInstance("https://www.youtube.com/channel/UCYJ61XIK64sp6ZFFS8sctxw", 2); diff --git a/app/src/androidTest/java/org/schabi/newpipe/extractor/youtube/YoutubeSearchEngineTest.java b/app/src/test/java/org/schabi/newpipe/extractor/services/youtube/youtube/YoutubeSearchEngineStreamTest.java similarity index 68% rename from app/src/androidTest/java/org/schabi/newpipe/extractor/youtube/YoutubeSearchEngineTest.java rename to app/src/test/java/org/schabi/newpipe/extractor/services/youtube/youtube/YoutubeSearchEngineStreamTest.java index 9cd89446d..4ceb341cf 100644 --- a/app/src/androidTest/java/org/schabi/newpipe/extractor/youtube/YoutubeSearchEngineTest.java +++ b/app/src/test/java/org/schabi/newpipe/extractor/services/youtube/youtube/YoutubeSearchEngineStreamTest.java @@ -1,19 +1,26 @@ -package org.schabi.newpipe.extractor.youtube; +package org.schabi.newpipe.extractor.services.youtube.youtube; -import android.test.AndroidTestCase; +import org.junit.Before; +import org.junit.Test; import org.schabi.newpipe.Downloader; +import org.schabi.newpipe.extractor.InfoItem; import org.schabi.newpipe.extractor.NewPipe; import org.schabi.newpipe.extractor.search.SearchEngine; import org.schabi.newpipe.extractor.search.SearchResult; -import java.util.List; +import java.util.EnumSet; + +import static junit.framework.Assert.assertEquals; +import static junit.framework.Assert.assertFalse; +import static junit.framework.Assert.assertTrue; + /** * Created by Christian Schabesberger on 29.12.15. * * Copyright (C) Christian Schabesberger 2015 - * YoutubeSearchEngineTest.java is part of NewPipe. + * YoutubeSearchEngineStreamTest.java is part of NewPipe. * * NewPipe is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -29,26 +36,37 @@ import java.util.List; * along with NewPipe. If not, see . */ -public class YoutubeSearchEngineTest extends AndroidTestCase { +/** + * Test for {@link SearchEngine} + */ +public class YoutubeSearchEngineStreamTest { private SearchResult result; - @Override + @Before public void setUp() throws Exception { - super.setUp(); NewPipe.init(Downloader.getInstance()); SearchEngine engine = NewPipe.getService("Youtube").getSearchEngineInstance(); - result = engine.search("this is something boring", 0, "de").getSearchResult(); + result = engine.search("this is something boring", 0, "de", + EnumSet.of(SearchEngine.Filter.STREAM)).getSearchResult(); } + @Test public void testResultList() { assertFalse(result.resultList.isEmpty()); } + @Test + public void testChannelItemType() { + assertEquals(result.resultList.get(0).infoType(), InfoItem.InfoType.STREAM); + } + + @Test public void testResultErrors() { assertTrue(result.errors == null || result.errors.isEmpty()); } + @Test public void testSuggestion() { //todo write a real test assertTrue(result.suggestion != null); diff --git a/app/src/androidTest/java/org/schabi/newpipe/extractor/youtube/YoutubeSearchResultTest.java b/app/src/test/java/org/schabi/newpipe/extractor/services/youtube/youtube/YoutubeSearchResultTest.java similarity index 84% rename from app/src/androidTest/java/org/schabi/newpipe/extractor/youtube/YoutubeSearchResultTest.java rename to app/src/test/java/org/schabi/newpipe/extractor/services/youtube/youtube/YoutubeSearchResultTest.java index 106e16779..e816d9f37 100644 --- a/app/src/androidTest/java/org/schabi/newpipe/extractor/youtube/YoutubeSearchResultTest.java +++ b/app/src/test/java/org/schabi/newpipe/extractor/services/youtube/youtube/YoutubeSearchResultTest.java @@ -1,13 +1,13 @@ -package org.schabi.newpipe.extractor.youtube; - -import android.test.AndroidTestCase; +package org.schabi.newpipe.extractor.services.youtube.youtube; +import org.junit.Before; +import org.junit.Test; import org.schabi.newpipe.Downloader; import org.schabi.newpipe.extractor.NewPipe; import org.schabi.newpipe.extractor.SuggestionExtractor; import org.schabi.newpipe.extractor.services.youtube.YoutubeSuggestionExtractor; - import java.util.List; +import static junit.framework.Assert.assertFalse; /** * Created by Christian Schabesberger on 18.11.16. @@ -29,18 +29,21 @@ import java.util.List; * along with NewPipe. If not, see . */ -public class YoutubeSearchResultTest extends AndroidTestCase { +/** + * Test for {@link SuggestionExtractor} + */ +public class YoutubeSearchResultTest { List suggestionReply; - @Override + @Before public void setUp() throws Exception { - super.setUp(); NewPipe.init(Downloader.getInstance()); SuggestionExtractor engine = new YoutubeSuggestionExtractor(0); suggestionReply = engine.suggestionList("hello", "de"); } + @Test public void testIfSuggestions() { assertFalse(suggestionReply.isEmpty()); } diff --git a/app/src/androidTest/java/org/schabi/newpipe/extractor/youtube/YoutubeStreamExtractorDefaultTest.java b/app/src/test/java/org/schabi/newpipe/extractor/services/youtube/youtube/YoutubeStreamExtractorDefaultTest.java similarity index 91% rename from app/src/androidTest/java/org/schabi/newpipe/extractor/youtube/YoutubeStreamExtractorDefaultTest.java rename to app/src/test/java/org/schabi/newpipe/extractor/services/youtube/youtube/YoutubeStreamExtractorDefaultTest.java index 880f018e2..8bf083293 100644 --- a/app/src/androidTest/java/org/schabi/newpipe/extractor/youtube/YoutubeStreamExtractorDefaultTest.java +++ b/app/src/test/java/org/schabi/newpipe/extractor/services/youtube/youtube/YoutubeStreamExtractorDefaultTest.java @@ -1,7 +1,7 @@ -package org.schabi.newpipe.extractor.youtube; - -import android.test.AndroidTestCase; +package org.schabi.newpipe.extractor.services.youtube.youtube; +import org.junit.Before; +import org.junit.Test; import org.schabi.newpipe.Downloader; import org.schabi.newpipe.extractor.AbstractStreamInfo; import org.schabi.newpipe.extractor.NewPipe; @@ -12,6 +12,8 @@ import org.schabi.newpipe.extractor.stream_info.VideoStream; import java.io.IOException; +import static junit.framework.Assert.assertTrue; + /** * Created by Christian Schabesberger on 30.12.15. * @@ -32,22 +34,27 @@ import java.io.IOException; * along with NewPipe. If not, see . */ -public class YoutubeStreamExtractorDefaultTest extends AndroidTestCase { +/** + * Test for {@link StreamExtractor} + */ +public class YoutubeStreamExtractorDefaultTest { public static final String HTTPS = "https://"; private StreamExtractor extractor; + @Before public void setUp() throws Exception { - super.setUp(); NewPipe.init(Downloader.getInstance()); extractor = NewPipe.getService("Youtube") .getExtractorInstance("https://www.youtube.com/watch?v=YQHsXMglC9A"); } + @Test public void testGetInvalidTimeStamp() throws ParsingException { assertTrue(Integer.toString(extractor.getTimeStamp()), extractor.getTimeStamp() <= 0); } + @Test public void testGetValidTimeStamp() throws ExtractionException, IOException { StreamExtractor extractor = NewPipe.getService("Youtube") @@ -56,49 +63,60 @@ public class YoutubeStreamExtractorDefaultTest extends AndroidTestCase { extractor.getTimeStamp() == 174); } + @Test public void testGetTitle() throws ParsingException { assertTrue(!extractor.getTitle().isEmpty()); } + @Test public void testGetDescription() throws ParsingException { assertTrue(extractor.getDescription() != null); } + @Test public void testGetUploader() throws ParsingException { assertTrue(!extractor.getUploader().isEmpty()); } + @Test public void testGetLength() throws ParsingException { assertTrue(extractor.getLength() > 0); } + @Test public void testGetViewCount() throws ParsingException { assertTrue(Long.toString(extractor.getViewCount()), extractor.getViewCount() > /* specific to that video */ 1224000074); } + @Test public void testGetUploadDate() throws ParsingException { assertTrue(extractor.getUploadDate().length() > 0); } + @Test public void testGetChannelUrl() throws ParsingException { assertTrue(extractor.getChannelUrl().length() > 0); } + @Test public void testGetThumbnailUrl() throws ParsingException { assertTrue(extractor.getThumbnailUrl(), extractor.getThumbnailUrl().contains(HTTPS)); } + @Test public void testGetUploaderThumbnailUrl() throws ParsingException { assertTrue(extractor.getUploaderThumbnailUrl(), extractor.getUploaderThumbnailUrl().contains(HTTPS)); } + @Test public void testGetAudioStreams() throws ParsingException { assertTrue(!extractor.getAudioStreams().isEmpty()); } + @Test public void testGetVideoStreams() throws ParsingException { for(VideoStream s : extractor.getVideoStreams()) { assertTrue(s.url, @@ -109,10 +127,12 @@ public class YoutubeStreamExtractorDefaultTest extends AndroidTestCase { } } + @Test public void testStreamType() throws ParsingException { assertTrue(extractor.getStreamType() == AbstractStreamInfo.StreamType.VIDEO_STREAM); } + @Test public void testGetDashMpd() throws ParsingException { assertTrue(extractor.getDashMpdUrl(), extractor.getDashMpdUrl() != null || !extractor.getDashMpdUrl().isEmpty()); diff --git a/app/src/androidTest/java/org/schabi/newpipe/extractor/youtube/YoutubeStreamExtractorGemaTest.java b/app/src/test/java/org/schabi/newpipe/extractor/services/youtube/youtube/YoutubeStreamExtractorGemaTest.java similarity index 87% rename from app/src/androidTest/java/org/schabi/newpipe/extractor/youtube/YoutubeStreamExtractorGemaTest.java rename to app/src/test/java/org/schabi/newpipe/extractor/services/youtube/youtube/YoutubeStreamExtractorGemaTest.java index 6f1587c9a..f3c9711d7 100644 --- a/app/src/androidTest/java/org/schabi/newpipe/extractor/youtube/YoutubeStreamExtractorGemaTest.java +++ b/app/src/test/java/org/schabi/newpipe/extractor/services/youtube/youtube/YoutubeStreamExtractorGemaTest.java @@ -1,14 +1,14 @@ -package org.schabi.newpipe.extractor.youtube; - -import android.test.AndroidTestCase; +package org.schabi.newpipe.extractor.services.youtube.youtube; +import org.junit.Test; import org.schabi.newpipe.Downloader; import org.schabi.newpipe.extractor.NewPipe; import org.schabi.newpipe.extractor.exceptions.ExtractionException; import org.schabi.newpipe.extractor.services.youtube.YoutubeStreamExtractor; - import java.io.IOException; +import static junit.framework.Assert.assertTrue; + /** * Created by Christian Schabesberger on 30.12.15. * @@ -31,11 +31,15 @@ import java.io.IOException; // This class only works in Germany. -public class YoutubeStreamExtractorGemaTest extends AndroidTestCase { +/** + * Test for {@link YoutubeStreamExtractor} + */ +public class YoutubeStreamExtractorGemaTest { // Deaktivate this Test Case bevore uploading it githup, otherwise CI will fail. private static final boolean testActive = false; + @Test public void testGemaError() throws IOException, ExtractionException { if(testActive) { try { diff --git a/app/src/androidTest/java/org/schabi/newpipe/extractor/youtube/YoutubeStreamExtractorRestrictedTest.java b/app/src/test/java/org/schabi/newpipe/extractor/services/youtube/youtube/YoutubeStreamExtractorRestrictedTest.java similarity index 86% rename from app/src/androidTest/java/org/schabi/newpipe/extractor/youtube/YoutubeStreamExtractorRestrictedTest.java rename to app/src/test/java/org/schabi/newpipe/extractor/services/youtube/youtube/YoutubeStreamExtractorRestrictedTest.java index 1a7195f8c..4f7bb3f24 100644 --- a/app/src/androidTest/java/org/schabi/newpipe/extractor/youtube/YoutubeStreamExtractorRestrictedTest.java +++ b/app/src/test/java/org/schabi/newpipe/extractor/services/youtube/youtube/YoutubeStreamExtractorRestrictedTest.java @@ -1,32 +1,40 @@ -package org.schabi.newpipe.extractor.youtube; - -import android.test.AndroidTestCase; +package org.schabi.newpipe.extractor.services.youtube.youtube; +import org.junit.Before; +import org.junit.Test; import org.schabi.newpipe.Downloader; import org.schabi.newpipe.extractor.NewPipe; import org.schabi.newpipe.extractor.exceptions.ExtractionException; import org.schabi.newpipe.extractor.exceptions.ParsingException; +import org.schabi.newpipe.extractor.services.youtube.YoutubeStreamUrlIdHandler; import org.schabi.newpipe.extractor.stream_info.StreamExtractor; import org.schabi.newpipe.extractor.stream_info.VideoStream; import java.io.IOException; -public class YoutubeStreamExtractorRestrictedTest extends AndroidTestCase { +import static junit.framework.Assert.assertTrue; + +/** + * Test for {@link YoutubeStreamUrlIdHandler} + */ +public class YoutubeStreamExtractorRestrictedTest { public static final String HTTPS = "https://"; private StreamExtractor extractor; + @Before public void setUp() throws Exception { - super.setUp(); NewPipe.init(Downloader.getInstance()); extractor = NewPipe.getService("Youtube") .getExtractorInstance("https://www.youtube.com/watch?v=i6JTvzrpBy0"); } + @Test public void testGetInvalidTimeStamp() throws ParsingException { assertTrue(Integer.toString(extractor.getTimeStamp()), extractor.getTimeStamp() <= 0); } + @Test public void testGetValidTimeStamp() throws ExtractionException, IOException { StreamExtractor extractor= NewPipe.getService("Youtube") .getExtractorInstance("https://youtu.be/FmG385_uUys?t=174"); @@ -34,49 +42,60 @@ public class YoutubeStreamExtractorRestrictedTest extends AndroidTestCase { extractor.getTimeStamp() == 174); } + @Test public void testGetAgeLimit() throws ParsingException { assertTrue(extractor.getAgeLimit() == 18); } + @Test public void testGetTitle() throws ParsingException { assertTrue(!extractor.getTitle().isEmpty()); } + @Test public void testGetDescription() throws ParsingException { assertTrue(extractor.getDescription() != null); } + @Test public void testGetUploader() throws ParsingException { assertTrue(!extractor.getUploader().isEmpty()); } + @Test public void testGetLength() throws ParsingException { assertTrue(extractor.getLength() > 0); } + @Test public void testGetViews() throws ParsingException { assertTrue(extractor.getLength() > 0); } + @Test public void testGetUploadDate() throws ParsingException { assertTrue(extractor.getUploadDate().length() > 0); } + @Test public void testGetThumbnailUrl() throws ParsingException { assertTrue(extractor.getThumbnailUrl(), extractor.getThumbnailUrl().contains(HTTPS)); } + @Test public void testGetUploaderThumbnailUrl() throws ParsingException { assertTrue(extractor.getUploaderThumbnailUrl(), extractor.getUploaderThumbnailUrl().contains(HTTPS)); } + @Test public void testGetAudioStreams() throws ParsingException { // audiostream not always necessary //assertTrue(!extractor.getAudioStreams().isEmpty()); } + @Test public void testGetVideoStreams() throws ParsingException { for(VideoStream s : extractor.getVideoStreams()) { assertTrue(s.url,