diff --git a/src/test/java/org/schabi/newpipe/extractor/services/soundcloud/SoundcloudPlaylistExtractorTest.java b/src/test/java/org/schabi/newpipe/extractor/services/soundcloud/SoundcloudPlaylistExtractorTest.java new file mode 100644 index 000000000..36675ea1e --- /dev/null +++ b/src/test/java/org/schabi/newpipe/extractor/services/soundcloud/SoundcloudPlaylistExtractorTest.java @@ -0,0 +1,84 @@ +package org.schabi.newpipe.extractor.services.soundcloud; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; +import static org.schabi.newpipe.extractor.ServiceList.SoundCloud; + +import org.junit.Before; +import org.junit.Test; +import org.schabi.newpipe.Downloader; +import org.schabi.newpipe.extractor.NewPipe; +import org.schabi.newpipe.extractor.playlist.PlaylistExtractor; + +/** + * Test for {@link PlaylistExtractor} + */ + +public class SoundcloudPlaylistExtractorTest { + private PlaylistExtractor extractor; + + @Before + public void setUp() throws Exception { + NewPipe.init(Downloader.getInstance()); + extractor = SoundCloud.getService() + .getPlaylistExtractor("https://soundcloud.com/liluzivert/sets/the-perfect-luv-tape-r"); + } + + @Test + public void testGetDownloader() throws Exception { + assertNotNull(NewPipe.getDownloader()); + } + + @Test + public void testGetId() throws Exception { + assertEquals(extractor.getPlaylistId(), "246349810"); + } + + @Test + public void testGetName() throws Exception { + assertEquals(extractor.getPlaylistName(), "THE PERFECT LUV TAPE®️"); + } + + @Test + public void testGetAvatarUrl() throws Exception { + assertEquals(extractor.getAvatarUrl(), "https://i1.sndcdn.com/artworks-000174203688-bweu12-large.jpg"); + } + + @Test + public void testGetUploaderUrl() throws Exception { + assertEquals(extractor.getUploaderUrl(), "http://soundcloud.com/liluzivert"); + } + + @Test + public void testGetUploaderName() throws Exception { + assertEquals(extractor.getUploaderName(), "LIL UZI VERT"); + } + + @Test + public void testGetUploaderAvatarUrl() throws Exception { + assertEquals(extractor.getUploaderAvatarUrl(), "https://a1.sndcdn.com/images/default_avatar_large.png"); + } + + @Test + public void testGetStreamsCount() throws Exception { + assertEquals(extractor.getStreamCount(), 10); + } + + @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 testHasMoreStreams() throws Exception { + // Setup the streams + extractor.getStreams(); + assertTrue("extractor didn't have more streams", !extractor.hasMoreStreams()); + } +} diff --git a/src/test/java/org/schabi/newpipe/extractor/services/soundcloud/SoundcloudSearchEngineAllTest.java b/src/test/java/org/schabi/newpipe/extractor/services/soundcloud/SoundcloudSearchEngineAllTest.java new file mode 100644 index 000000000..30cdfaa5e --- /dev/null +++ b/src/test/java/org/schabi/newpipe/extractor/services/soundcloud/SoundcloudSearchEngineAllTest.java @@ -0,0 +1,50 @@ +package org.schabi.newpipe.extractor.services.soundcloud; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.schabi.newpipe.extractor.ServiceList.SoundCloud; + +import java.util.EnumSet; + +import org.junit.Before; +import org.junit.Test; +import org.schabi.newpipe.Downloader; +import org.schabi.newpipe.extractor.NewPipe; +import org.schabi.newpipe.extractor.search.SearchEngine; +import org.schabi.newpipe.extractor.search.SearchResult; + +/** + * Test for {@link SearchEngine} + */ +public class SoundcloudSearchEngineAllTest { + private SearchResult result; + + @Before + public void setUp() throws Exception { + NewPipe.init(Downloader.getInstance()); + SearchEngine engine = SoundCloud.getService().getSearchEngine(); + + // SoundCloud will suggest "lil uzi vert" instead of "lill uzi vert" + // keep in mind that the suggestions can NOT change by country (the parameter "de") + result = engine.search("lill uzi vert", 0, "de", + EnumSet.of(SearchEngine.Filter.USER, + SearchEngine.Filter.STREAM)).getSearchResult(); + } + + @Test + public void testResultList() { + assertFalse(result.resultList.isEmpty()); + } + + @Test + public void testResultErrors() { + if (!result.errors.isEmpty()) for (Throwable error : result.errors) error.printStackTrace(); + assertTrue(result.errors == null || result.errors.isEmpty()); + } + + @Test + public void testSuggestion() { + //todo write a real test + assertTrue(result.suggestion != null); + } +} diff --git a/src/test/java/org/schabi/newpipe/extractor/services/soundcloud/SoundcloudSearchEngineStreamTest.java b/src/test/java/org/schabi/newpipe/extractor/services/soundcloud/SoundcloudSearchEngineStreamTest.java new file mode 100644 index 000000000..7db782b21 --- /dev/null +++ b/src/test/java/org/schabi/newpipe/extractor/services/soundcloud/SoundcloudSearchEngineStreamTest.java @@ -0,0 +1,58 @@ +package org.schabi.newpipe.extractor.services.soundcloud; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.schabi.newpipe.extractor.ServiceList.SoundCloud; + +import java.util.EnumSet; + +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; + +/** + * Test for {@link SearchEngine} + */ +public class SoundcloudSearchEngineStreamTest { + private SearchResult result; + + @Before + public void setUp() throws Exception { + NewPipe.init(Downloader.getInstance()); + SearchEngine engine = SoundCloud.getService().getSearchEngine(); + + // SoundCloud will suggest "lil uzi vert" instead of "lil uzi vert", + // keep in mind that the suggestions can NOT change by country (the parameter "de") + result = engine.search("lill uzi vert", 0, "de", + EnumSet.of(SearchEngine.Filter.STREAM)).getSearchResult(); + } + + @Test + public void testResultList() { + assertFalse(result.resultList.isEmpty()); + } + + @Test + public void testStreamItemType() { + for (InfoItem infoItem : result.resultList) { + assertEquals(InfoItem.InfoType.STREAM, infoItem.info_type); + } + } + + @Test + public void testResultErrors() { + if (!result.errors.isEmpty()) for (Throwable error : result.errors) error.printStackTrace(); + assertTrue(result.errors == null || result.errors.isEmpty()); + } + + @Test + public void testSuggestion() { + //todo write a real test + assertTrue(result.suggestion != null); + } +} diff --git a/src/test/java/org/schabi/newpipe/extractor/services/soundcloud/SoundcloudSearchEngineUserTest.java b/src/test/java/org/schabi/newpipe/extractor/services/soundcloud/SoundcloudSearchEngineUserTest.java new file mode 100644 index 000000000..997f96d7e --- /dev/null +++ b/src/test/java/org/schabi/newpipe/extractor/services/soundcloud/SoundcloudSearchEngineUserTest.java @@ -0,0 +1,58 @@ +package org.schabi.newpipe.extractor.services.soundcloud; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.schabi.newpipe.extractor.ServiceList.SoundCloud; + +import java.util.EnumSet; + +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; + +/** + * Test for {@link SearchEngine} + */ +public class SoundcloudSearchEngineUserTest { + private SearchResult result; + + @Before + public void setUp() throws Exception { + NewPipe.init(Downloader.getInstance()); + SearchEngine engine = SoundCloud.getService().getSearchEngine(); + + // SoundCloud will suggest "lil uzi vert" instead of "lill uzi vert" + // keep in mind that the suggestions can NOT change by country (the parameter "de") + result = engine.search("lill uzi vert", 0, "de", + EnumSet.of(SearchEngine.Filter.USER)).getSearchResult(); + } + + @Test + public void testResultList() { + assertFalse(result.resultList.isEmpty()); + } + + @Test + public void testUserItemType() { + for (InfoItem infoItem : result.resultList) { + assertEquals(InfoItem.InfoType.USER, infoItem.info_type); + } + } + + @Test + public void testResultErrors() { + if (!result.errors.isEmpty()) for (Throwable error : result.errors) error.printStackTrace(); + assertTrue(result.errors == null || result.errors.isEmpty()); + } + + @Test + public void testSuggestion() { + //todo write a real test + assertTrue(result.suggestion != null); + } +} diff --git a/src/test/java/org/schabi/newpipe/extractor/services/soundcloud/SoundcloudStreamExtractorDefaultTest.java b/src/test/java/org/schabi/newpipe/extractor/services/soundcloud/SoundcloudStreamExtractorDefaultTest.java new file mode 100644 index 000000000..d7c28a61d --- /dev/null +++ b/src/test/java/org/schabi/newpipe/extractor/services/soundcloud/SoundcloudStreamExtractorDefaultTest.java @@ -0,0 +1,106 @@ +package org.schabi.newpipe.extractor.services.soundcloud; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.schabi.newpipe.extractor.ServiceList.SoundCloud; + +import java.io.IOException; + +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.stream.StreamExtractor; +import org.schabi.newpipe.extractor.stream.StreamInfoItemCollector; +import org.schabi.newpipe.extractor.stream.StreamType; + +/** + * Test for {@link StreamExtractor} + */ +public class SoundcloudStreamExtractorDefaultTest { + private StreamExtractor extractor; + + @Before + public void setUp() throws Exception { + NewPipe.init(Downloader.getInstance()); + extractor = SoundCloud.getService().getStreamExtractor("https://soundcloud.com/liluzivert/do-what-i-want-produced-by-maaly-raw-don-cannon"); + } + + @Test + public void testGetInvalidTimeStamp() throws ParsingException { + assertTrue(Integer.toString(extractor.getTimeStamp()), + extractor.getTimeStamp() <= 0); + } + + @Test + public void testGetValidTimeStamp() throws IOException, ExtractionException { + StreamExtractor extractor = SoundCloud.getService().getStreamExtractor("https://soundcloud.com/liluzivert/do-what-i-want-produced-by-maaly-raw-don-cannon#t=69"); + assertEquals(Integer.toString(extractor.getTimeStamp()), "69"); + } + + @Test + public void testGetTitle() throws ParsingException { + assertEquals(extractor.getTitle(), "Do What I Want [Produced By Maaly Raw + Don Cannon]"); + } + + @Test + public void testGetDescription() throws ParsingException { + assertEquals(extractor.getDescription(), "The Perfect LUV Tape®️"); + } + + @Test + public void testGetUploader() throws ParsingException { + assertEquals(extractor.getUploader(), "LIL UZI VERT"); + } + + @Test + public void testGetLength() throws ParsingException { + assertEquals(extractor.getLength(), 175); + } + + @Test + public void testGetViewCount() throws ParsingException { + assertTrue(Long.toString(extractor.getViewCount()), + extractor.getViewCount() > 44227978); + } + + @Test + public void testGetUploadDate() throws ParsingException { + assertEquals(extractor.getUploadDate(), "2016-07-31"); + } + + @Test + public void testGetUserUrl() throws ParsingException { + assertEquals(extractor.getUserUrl(), "http://soundcloud.com/liluzivert"); + } + + @Test + public void testGetThumbnailUrl() throws ParsingException { + assertEquals(extractor.getThumbnailUrl(), "https://i1.sndcdn.com/artworks-000174195399-iw6seg-large.jpg"); + } + + @Test + public void testGetUploaderThumbnailUrl() throws ParsingException { + assertEquals(extractor.getUploaderThumbnailUrl(), "https://a1.sndcdn.com/images/default_avatar_large.png"); + } + + @Test + public void testGetAudioStreams() throws IOException, ExtractionException { + assertTrue(!extractor.getAudioStreams().isEmpty()); + } + + @Test + public void testStreamType() throws ParsingException { + assertTrue(extractor.getStreamType() == StreamType.AUDIO_STREAM); + } + + @Test + public void testGetRelatedVideos() throws ExtractionException, IOException { + StreamInfoItemCollector relatedVideos = extractor.getRelatedVideos(); + assertFalse(relatedVideos.getItemList().isEmpty()); + assertTrue(relatedVideos.getErrors().isEmpty()); + } +} diff --git a/src/test/java/org/schabi/newpipe/extractor/services/soundcloud/SoundcloudStreamUrlIdHandlerTest.java b/src/test/java/org/schabi/newpipe/extractor/services/soundcloud/SoundcloudStreamUrlIdHandlerTest.java new file mode 100644 index 000000000..771c82971 --- /dev/null +++ b/src/test/java/org/schabi/newpipe/extractor/services/soundcloud/SoundcloudStreamUrlIdHandlerTest.java @@ -0,0 +1,79 @@ +package org.schabi.newpipe.extractor.services.soundcloud; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + +import java.util.ArrayList; +import java.util.List; + +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.ParsingException; + +/** + * Test for {@link SoundcloudStreamUrlIdHandler} + */ +public class SoundcloudStreamUrlIdHandlerTest { + private SoundcloudStreamUrlIdHandler urlIdHandler; + + @Before + public void setUp() throws Exception { + urlIdHandler = SoundcloudStreamUrlIdHandler.getInstance(); + NewPipe.init(Downloader.getInstance()); + } + + @Test(expected = NullPointerException.class) + public void getIdWithNullAsUrl() throws ParsingException { + urlIdHandler.getId(null); + } + + @Test + public void getIdForInvalidUrls() { + List invalidUrls = new ArrayList<>(50); + invalidUrls.add("https://soundcloud.com/liluzivert/t.e.s.t"); + invalidUrls.add("https://soundcloud.com/liluzivert/tracks"); + invalidUrls.add("https://soundcloud.com/"); + for(String invalidUrl: invalidUrls) { + Throwable exception = null; + try { + urlIdHandler.getId(invalidUrl); + } catch (ParsingException e) { + exception = e; + } + if(exception == null) { + fail("Expected ParsingException for url: " + invalidUrl); + } + } + } + @Test + public void getId() throws Exception { + assertEquals("309689103", urlIdHandler.getId("https://soundcloud.com/liluzivert/15-ysl")); + assertEquals("309689082", urlIdHandler.getId("https://www.soundcloud.com/liluzivert/15-luv-scars-ko")); + assertEquals("309689035", urlIdHandler.getId("http://soundcloud.com/liluzivert/15-boring-shit")); + assertEquals("294488599", urlIdHandler.getId("http://www.soundcloud.com/liluzivert/secure-the-bag-produced-by-glohan-beats")); + assertEquals("294488438", urlIdHandler.getId("HtTpS://sOuNdClOuD.cOm/LiLuZiVeRt/In-O4-pRoDuCeD-bY-dP-bEaTz")); + assertEquals("294488147", urlIdHandler.getId("https://soundcloud.com/liluzivert/fresh-produced-by-zaytoven#t=69")); + assertEquals("294487876", urlIdHandler.getId("https://soundcloud.com/liluzivert/threesome-produced-by-zaytoven#t=1:09")); + assertEquals("294487684", urlIdHandler.getId("https://soundcloud.com/liluzivert/blonde-brigitte-produced-manny-fresh#t=1:9")); + assertEquals("294487428", urlIdHandler.getId("https://soundcloud.com/liluzivert/today-produced-by-c-note#t=1m9s")); + assertEquals("294487157", urlIdHandler.getId("https://soundcloud.com/liluzivert/changed-my-phone-produced-by-c-note#t=1m09s")); + } + + + @Test + public void testAcceptUrl() { + assertTrue(urlIdHandler.acceptUrl("https://soundcloud.com/liluzivert/15-ysl")); + assertTrue(urlIdHandler.acceptUrl("https://www.soundcloud.com/liluzivert/15-luv-scars-ko")); + assertTrue(urlIdHandler.acceptUrl("http://soundcloud.com/liluzivert/15-boring-shit")); + assertTrue(urlIdHandler.acceptUrl("http://www.soundcloud.com/liluzivert/secure-the-bag-produced-by-glohan-beats")); + assertTrue(urlIdHandler.acceptUrl("HtTpS://sOuNdClOuD.cOm/LiLuZiVeRt/In-O4-pRoDuCeD-bY-dP-bEaTz")); + assertTrue(urlIdHandler.acceptUrl("https://soundcloud.com/liluzivert/fresh-produced-by-zaytoven#t=69")); + assertTrue(urlIdHandler.acceptUrl("https://soundcloud.com/liluzivert/threesome-produced-by-zaytoven#t=1:09")); + assertTrue(urlIdHandler.acceptUrl("https://soundcloud.com/liluzivert/blonde-brigitte-produced-manny-fresh#t=1:9")); + assertTrue(urlIdHandler.acceptUrl("https://soundcloud.com/liluzivert/today-produced-by-c-note#t=1m9s")); + assertTrue(urlIdHandler.acceptUrl("https://soundcloud.com/liluzivert/changed-my-phone-produced-by-c-note#t=1m09s")); + } +} \ No newline at end of file diff --git a/src/test/java/org/schabi/newpipe/extractor/services/soundcloud/SoundcloudSuggestionExtractorTest.java b/src/test/java/org/schabi/newpipe/extractor/services/soundcloud/SoundcloudSuggestionExtractorTest.java new file mode 100644 index 000000000..6b2641edc --- /dev/null +++ b/src/test/java/org/schabi/newpipe/extractor/services/soundcloud/SoundcloudSuggestionExtractorTest.java @@ -0,0 +1,31 @@ +package org.schabi.newpipe.extractor.services.soundcloud; + +import static org.junit.Assert.assertFalse; +import static org.schabi.newpipe.extractor.ServiceList.SoundCloud; + +import java.io.IOException; + +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.exceptions.ExtractionException; + +/** + * Test for {@link SuggestionExtractor} + */ +public class SoundcloudSuggestionExtractorTest { + private SuggestionExtractor suggestionExtractor; + + @Before + public void setUp() throws Exception { + NewPipe.init(Downloader.getInstance()); + suggestionExtractor = SoundCloud.getService().getSuggestionExtractor(); + } + + @Test + public void testIfSuggestions() throws IOException, ExtractionException { + assertFalse(suggestionExtractor.suggestionList("lil uzi vert", "de").isEmpty()); + } +} diff --git a/src/test/java/org/schabi/newpipe/extractor/services/soundcloud/SoundcloudUserExtractorTest.java b/src/test/java/org/schabi/newpipe/extractor/services/soundcloud/SoundcloudUserExtractorTest.java new file mode 100644 index 000000000..b05e80356 --- /dev/null +++ b/src/test/java/org/schabi/newpipe/extractor/services/soundcloud/SoundcloudUserExtractorTest.java @@ -0,0 +1,79 @@ +package org.schabi.newpipe.extractor.services.soundcloud; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; +import static org.schabi.newpipe.extractor.ServiceList.SoundCloud; + +import org.junit.Before; +import org.junit.Test; +import org.schabi.newpipe.Downloader; +import org.schabi.newpipe.extractor.NewPipe; +import org.schabi.newpipe.extractor.user.UserExtractor; + +/** + * Test for {@link UserExtractor} + */ + +public class SoundcloudUserExtractorTest { + + UserExtractor extractor; + + @Before + public void setUp() throws Exception { + NewPipe.init(Downloader.getInstance()); + extractor = SoundCloud.getService() + .getUserExtractor("https://soundcloud.com/liluzivert"); + } + + @Test + public void testGetDownloader() throws Exception { + assertNotNull(NewPipe.getDownloader()); + } + + @Test + public void testGetUserName() throws Exception { + assertEquals(extractor.getUserName(), "LIL UZI VERT"); + } + + @Test + public void testGetDescription() throws Exception { + assertEquals(extractor.getDescription(), ""); + } + + @Test + public void testGetAvatarUrl() throws Exception { + assertEquals(extractor.getAvatarUrl(), "https://a1.sndcdn.com/images/default_avatar_large.png"); + } + + @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 testHasMoreStreams() throws Exception { + // Setup the streams + extractor.getStreams(); + assertTrue("don't have more streams", extractor.hasMoreStreams()); + } + + @Test + public void testGetSubscriberCount() throws Exception { + assertTrue("wrong subscriber count", extractor.getSubscriberCount() >= 1224324); + } + + @Test + public void testGetNextStreams() throws Exception { + // Setup the streams + extractor.getStreams(); + assertTrue("extractor didn't have next streams", !extractor.getNextStreams().nextItemsList.isEmpty()); + assertTrue("extractor didn't have more streams after getNextStreams", extractor.hasMoreStreams()); + } + +}