diff --git a/app/src/androidTest/java/org/schabi/newpipe/services/youtube/YoutubeSearchEngineTest.java b/app/src/androidTest/java/org/schabi/newpipe/services/youtube/YoutubeSearchEngineTest.java index bfefb4463..c01474416 100644 --- a/app/src/androidTest/java/org/schabi/newpipe/services/youtube/YoutubeSearchEngineTest.java +++ b/app/src/androidTest/java/org/schabi/newpipe/services/youtube/YoutubeSearchEngineTest.java @@ -2,8 +2,11 @@ package org.schabi.newpipe.services.youtube; import android.test.AndroidTestCase; +import org.schabi.newpipe.VideoPreviewInfo; import org.schabi.newpipe.services.SearchEngine; +import java.util.ArrayList; + /** * Created by the-scrabi on 29.12.15. * @@ -25,18 +28,18 @@ import org.schabi.newpipe.services.SearchEngine; */ public class YoutubeSearchEngineTest extends AndroidTestCase { - - SearchEngine engine; - SearchEngine.Result result; + private SearchEngine.Result result; + private ArrayList suggestionReply; @Override public void setUp() throws Exception{ super.setUp(); - engine = new YoutubeSearchEngine(); + SearchEngine engine = new YoutubeSearchEngine(); result = engine.search("https://www.youtube.com/results?search_query=bla", 0, "de"); + suggestionReply = engine.suggestionList("hello"); } - public void testIfNoErrorOccure() { + public void testIfNoErrorOccur() { assertEquals(result.errorMessage, ""); } @@ -44,24 +47,43 @@ public class YoutubeSearchEngineTest extends AndroidTestCase { assertEquals(result.resultList.size() > 0, true); } - public void testItemHasTitle() { - assertEquals(result.resultList.get(0).title.isEmpty(), false); + public void testItemsHaveTitle() { + for(VideoPreviewInfo i : result.resultList) { + assertEquals(i.title.isEmpty(), false); + } } - public void testItemHasUploader() { - assertEquals(result.resultList.get(0).uploader.isEmpty(), false); + public void testItemsHaveUploader() { + for(VideoPreviewInfo i : result.resultList) { + assertEquals(i.uploader.isEmpty(), false); + } } - public void testItemHasRightDuration() { - assertTrue(result.resultList.get(0).webpage_url, - result.resultList.get(0).webpage_url.contains(":")); } + public void testItemsHaveRightDuration() { + for(VideoPreviewInfo i : result.resultList) { + assertTrue(i.duration, i.duration.contains(":")); + } + } - public void testItemHasRightThumbnail() { - assertTrue(result.resultList.get(0).webpage_url, - result.resultList.get(0).webpage_url.contains("https://")); } + public void testItemsHaveRightThumbnail() { + for (VideoPreviewInfo i : result.resultList) { + assertTrue(i.thumbnail_url, i.thumbnail_url.contains("https://")); + } + } - public void testItemHasRightVideoUrl() { - assertTrue(result.resultList.get(0).webpage_url, - result.resultList.get(0).webpage_url.contains("https://")); + public void testItemsHaveRightVideoUrl() { + for (VideoPreviewInfo i : result.resultList) { + assertTrue(i.webpage_url, i.webpage_url.contains("https://")); + } + } + + public void testIfSuggestionsAreReplied() { + assertEquals(suggestionReply.size() > 0, true); + } + + public void testIfSuggestionsAreValid() { + for(String s : suggestionReply) { + assertTrue(s, !s.isEmpty()); + } } } diff --git a/app/src/androidTest/java/org/schabi/newpipe/services/youtube/YoutubeVideoExtractorDefaultTest.java b/app/src/androidTest/java/org/schabi/newpipe/services/youtube/YoutubeVideoExtractorDefaultTest.java new file mode 100644 index 000000000..6f6ecaaad --- /dev/null +++ b/app/src/androidTest/java/org/schabi/newpipe/services/youtube/YoutubeVideoExtractorDefaultTest.java @@ -0,0 +1,100 @@ +package org.schabi.newpipe.services.youtube; + +import android.test.AndroidTestCase; +import android.util.Log; + +import org.schabi.newpipe.services.VideoInfo; + +/** + * Created by the-scrabi on 30.12.15. + * + * Copyright (C) Christian Schabesberger 2015 + * YoutubeVideoExtractorDefault.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 YoutubeVideoExtractorDefaultTest extends AndroidTestCase { + private YoutubeVideoExtractor extractor; + + public void setUp() { + extractor = new YoutubeVideoExtractor("https://www.youtube.com/watch?v=FmG385_uUys"); + } + + public void testGetErrorCode() { + assertEquals(extractor.getErrorCode(), VideoInfo.NO_ERROR); + } + + public void testGetErrorMessage() { + assertEquals(extractor.getErrorMessage(), ""); + } + + public void testGetTimeStamp() { + assertTrue(Integer.toString(extractor.getTimeStamp()), + extractor.getTimeStamp() >= 0); + } + + public void testGetTitle() { + assertTrue(!extractor.getTitle().isEmpty()); + } + + public void testGetDescription() { + assertTrue(extractor.getDescription() != null); + } + + public void testGetUploader() { + assertTrue(!extractor.getUploader().isEmpty()); + } + + public void testGetLength() { + assertTrue(extractor.getLength() > 0); + } + + public void testGetViews() { + assertTrue(extractor.getLength() > 0); + } + + public void testGetUploadDate() { + assertTrue(extractor.getUploadDate().length() > 0); + } + + public void testGetThumbnailUrl() { + assertTrue(extractor.getThumbnailUrl(), + extractor.getThumbnailUrl().contains("https://")); + } + + public void testGetUploaderThumbnailUrl() { + assertTrue(extractor.getUploaderThumbnailUrl(), + extractor.getUploaderThumbnailUrl().contains("https://")); + } + + public void testGetAudioStreams() { + for(VideoInfo.AudioStream s : extractor.getAudioStreams()) { + assertTrue(s.url, + s.url.contains("https://")); + assertTrue(s.bandwidth > 0); + assertTrue(s.samplingRate > 0); + } + } + + public void testGetVideoStreams() { + for(VideoInfo.VideoStream s : extractor.getVideoStreams()) { + assertTrue(s.url, + s.url.contains("https://")); + assertTrue(s.resolution.length() > 0); + assertTrue(Integer.toString(s.format), + 0 <= s.format && s.format <= 4); + } + } +} diff --git a/app/src/androidTest/java/org/schabi/newpipe/services/youtube/YoutubeVideoExtractorGemaTest.java b/app/src/androidTest/java/org/schabi/newpipe/services/youtube/YoutubeVideoExtractorGemaTest.java new file mode 100644 index 000000000..619412956 --- /dev/null +++ b/app/src/androidTest/java/org/schabi/newpipe/services/youtube/YoutubeVideoExtractorGemaTest.java @@ -0,0 +1,43 @@ +package org.schabi.newpipe.services.youtube; + +import android.test.AndroidTestCase; + +import org.schabi.newpipe.services.VideoInfo; + +/** + * Created by the-scrabi on 30.12.15. + * + * Copyright (C) Christian Schabesberger 2015 + * YoutubeVideoExtractorGema.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 YoutubeVideoExtractorGemaTest extends AndroidTestCase { + + private YoutubeVideoExtractor extractor; + + public void setUp() { + extractor = new YoutubeVideoExtractor("https://www.youtube.com/watch?v=3O1_3zBUKM8"); + } + + public void testGetErrorCode() { + assertEquals(extractor.getErrorCode(), VideoInfo.ERROR_BLOCKED_BY_GEMA); + } + + public void testGetErrorMessage() { + assertTrue(extractor.getErrorMessage(), + extractor.getErrorMessage().contains("GEMA")); + } +} diff --git a/app/src/main/java/org/schabi/newpipe/ActionBarHandler.java b/app/src/main/java/org/schabi/newpipe/ActionBarHandler.java index b1967fd0b..c8b4061f7 100644 --- a/app/src/main/java/org/schabi/newpipe/ActionBarHandler.java +++ b/app/src/main/java/org/schabi/newpipe/ActionBarHandler.java @@ -16,6 +16,7 @@ import android.view.MenuInflater; import android.view.MenuItem; import android.widget.ArrayAdapter; +import org.schabi.newpipe.services.MediaFormat; import org.schabi.newpipe.services.VideoInfo; /** diff --git a/app/src/main/java/org/schabi/newpipe/MediaFormat.java b/app/src/main/java/org/schabi/newpipe/services/MediaFormat.java similarity index 98% rename from app/src/main/java/org/schabi/newpipe/MediaFormat.java rename to app/src/main/java/org/schabi/newpipe/services/MediaFormat.java index f3f6348f0..867dc3035 100644 --- a/app/src/main/java/org/schabi/newpipe/MediaFormat.java +++ b/app/src/main/java/org/schabi/newpipe/services/MediaFormat.java @@ -1,4 +1,4 @@ -package org.schabi.newpipe; +package org.schabi.newpipe.services; /** * Created by Adam Howard on 08/11/15. diff --git a/app/src/main/java/org/schabi/newpipe/services/VideoExtractor.java b/app/src/main/java/org/schabi/newpipe/services/VideoExtractor.java index 9da25fc92..7fd8a58cc 100644 --- a/app/src/main/java/org/schabi/newpipe/services/VideoExtractor.java +++ b/app/src/main/java/org/schabi/newpipe/services/VideoExtractor.java @@ -107,19 +107,22 @@ public abstract class VideoExtractor { } - protected abstract int getErrorCode(); - protected abstract String getErrorMessage(); - protected abstract String getVideoUrl(String videoId); - protected abstract String getVideoId(String siteUrl); - protected abstract int getTimeStamp(); - protected abstract String getTitle(); - protected abstract String getDescription(); - protected abstract String getUploader(); - protected abstract int getLength(); - protected abstract long getViews(); - protected abstract String getUploadDate(); - protected abstract String getThumbnailUrl(); - protected abstract String getUploaderThumbnailUrl(); - protected abstract VideoInfo.AudioStream[] getAudioStreams(); - protected abstract VideoInfo.VideoStream[] getVideoStreams(); + public abstract int getErrorCode(); + public abstract String getErrorMessage(); + + //todo: remove these functions, or make them static, otherwise its useles, to have them here + public abstract String getVideoUrl(String videoId); + public abstract String getVideoId(String siteUrl); + /////////////////////////////////////////////////////////////////////////////////////////// + public abstract int getTimeStamp(); + public abstract String getTitle(); + public abstract String getDescription(); + public abstract String getUploader(); + public abstract int getLength(); + public abstract long getViews(); + public abstract String getUploadDate(); + public abstract String getThumbnailUrl(); + public abstract String getUploaderThumbnailUrl(); + public abstract VideoInfo.AudioStream[] getAudioStreams(); + public abstract VideoInfo.VideoStream[] getVideoStreams(); } diff --git a/app/src/main/java/org/schabi/newpipe/services/youtube/YoutubeVideoExtractor.java b/app/src/main/java/org/schabi/newpipe/services/youtube/YoutubeVideoExtractor.java index 659b0b7e4..84548539a 100644 --- a/app/src/main/java/org/schabi/newpipe/services/youtube/YoutubeVideoExtractor.java +++ b/app/src/main/java/org/schabi/newpipe/services/youtube/YoutubeVideoExtractor.java @@ -14,7 +14,7 @@ import org.mozilla.javascript.Function; import org.mozilla.javascript.ScriptableObject; import org.schabi.newpipe.Downloader; import org.schabi.newpipe.services.VideoExtractor; -import org.schabi.newpipe.MediaFormat; +import org.schabi.newpipe.services.MediaFormat; import org.schabi.newpipe.services.VideoInfo; import org.schabi.newpipe.VideoPreviewInfo; import org.xmlpull.v1.XmlPullParser;