From 6127826571a9041cc9d9d264ac97239249f2aff9 Mon Sep 17 00:00:00 2001 From: Stypox Date: Sat, 16 May 2020 20:07:12 +0200 Subject: [PATCH] [Test] Add stream metadata tests --- .../newpipe/extractor/ExtractorAsserts.java | 17 ++++++ .../services/BaseStreamExtractorTest.java | 7 +++ .../services/DefaultStreamExtractorTest.java | 54 ++++++++++++++++++- .../MediaCCCStreamExtractorTest.java | 2 + .../peertube/PeertubeStreamExtractorTest.java | 13 ++++- 5 files changed, 91 insertions(+), 2 deletions(-) diff --git a/extractor/src/test/java/org/schabi/newpipe/extractor/ExtractorAsserts.java b/extractor/src/test/java/org/schabi/newpipe/extractor/ExtractorAsserts.java index a0a887d7..69e10b0e 100644 --- a/extractor/src/test/java/org/schabi/newpipe/extractor/ExtractorAsserts.java +++ b/extractor/src/test/java/org/schabi/newpipe/extractor/ExtractorAsserts.java @@ -2,6 +2,8 @@ package org.schabi.newpipe.extractor; import java.net.MalformedURLException; import java.net.URL; +import java.util.Collections; +import java.util.Comparator; import java.util.List; import javax.annotation.Nonnull; @@ -10,6 +12,7 @@ import javax.annotation.Nullable; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; public class ExtractorAsserts { @@ -64,4 +67,18 @@ public class ExtractorAsserts { public static void assertAtLeast(long expected, long actual) { assertTrue(actual + " is not at least " + expected, actual >= expected); } + + // this assumes that sorting a and b in-place is not an issue, so it's only intended for tests + public static void assertEqualsOrderIndependent(List expected, List actual) { + if (expected == null) { + assertNull(actual); + return; + } else { + assertNotNull(actual); + } + + Collections.sort(expected); + Collections.sort(actual); + assertEquals(expected, actual); + } } diff --git a/extractor/src/test/java/org/schabi/newpipe/extractor/services/BaseStreamExtractorTest.java b/extractor/src/test/java/org/schabi/newpipe/extractor/services/BaseStreamExtractorTest.java index fb555a03..6f3dc813 100644 --- a/extractor/src/test/java/org/schabi/newpipe/extractor/services/BaseStreamExtractorTest.java +++ b/extractor/src/test/java/org/schabi/newpipe/extractor/services/BaseStreamExtractorTest.java @@ -21,4 +21,11 @@ public interface BaseStreamExtractorTest extends BaseExtractorTest { void testVideoStreams() throws Exception; void testSubtitles() throws Exception; void testFrames() throws Exception; + void testHost() throws Exception; + void testPrivacy() throws Exception; + void testCategory() throws Exception; + void testLicence() throws Exception; + void testLanguageInfo() throws Exception; + void testTags() throws Exception; + void testSupportInfo() throws Exception; } diff --git a/extractor/src/test/java/org/schabi/newpipe/extractor/services/DefaultStreamExtractorTest.java b/extractor/src/test/java/org/schabi/newpipe/extractor/services/DefaultStreamExtractorTest.java index fc2ebf43..29d9b15d 100644 --- a/extractor/src/test/java/org/schabi/newpipe/extractor/services/DefaultStreamExtractorTest.java +++ b/extractor/src/test/java/org/schabi/newpipe/extractor/services/DefaultStreamExtractorTest.java @@ -14,7 +14,9 @@ import org.schabi.newpipe.extractor.stream.VideoStream; import java.text.SimpleDateFormat; import java.util.Calendar; +import java.util.Collections; import java.util.List; +import java.util.Locale; import java.util.TimeZone; import javax.annotation.Nullable; @@ -27,6 +29,7 @@ import static org.junit.Assert.assertNull; import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; import static org.schabi.newpipe.extractor.ExtractorAsserts.assertAtLeast; +import static org.schabi.newpipe.extractor.ExtractorAsserts.assertEqualsOrderIndependent; import static org.schabi.newpipe.extractor.ExtractorAsserts.assertIsSecureUrl; import static org.schabi.newpipe.extractor.ExtractorAsserts.assertIsValidUrl; import static org.schabi.newpipe.extractor.services.DefaultTests.defaultTestListOfItems; @@ -42,7 +45,7 @@ public abstract class DefaultStreamExtractorTest extends DefaultExtractorTest expectedDescriptionContains(); // e.g. for full links public abstract long expectedLength(); - public long expectedTimestamp() { return 0; }; // default: there is no timestamp + public long expectedTimestamp() { return 0; } // default: there is no timestamp public abstract long expectedViewCountAtLeast(); @Nullable public abstract String expectedUploadDate(); // format: "yyyy-MM-dd HH:mm:ss.SSS" @Nullable public abstract String expectedTextualUploadDate(); @@ -55,6 +58,13 @@ public abstract class DefaultStreamExtractorTest extends DefaultExtractorTest expectedTags() { return Collections.emptyList(); } // default: no tags + public String expectedSupportInfo() { return ""; } // default: no support info available @Test @Override @@ -283,4 +293,46 @@ public abstract class DefaultStreamExtractorTest extends DefaultExtractorTest expectedTags() { return Arrays.asList("gpn18", "105"); } @Override @Test @@ -118,6 +119,7 @@ public class MediaCCCStreamExtractorTest { @Override public boolean expectedHasRelatedStreams() { return false; } @Override public boolean expectedHasSubtitles() { return false; } @Override public boolean expectedHasFrames() { return false; } + @Override public List expectedTags() { return Arrays.asList("36c3", "10565", "2019", "Security", "Main"); } @Override @Test diff --git a/extractor/src/test/java/org/schabi/newpipe/extractor/services/peertube/PeertubeStreamExtractorTest.java b/extractor/src/test/java/org/schabi/newpipe/extractor/services/peertube/PeertubeStreamExtractorTest.java index f78b96e1..40b19871 100644 --- a/extractor/src/test/java/org/schabi/newpipe/extractor/services/peertube/PeertubeStreamExtractorTest.java +++ b/extractor/src/test/java/org/schabi/newpipe/extractor/services/peertube/PeertubeStreamExtractorTest.java @@ -84,7 +84,12 @@ public class PeertubeStreamExtractorTest { @Override public long expectedDislikeCountAtLeast() { return 0; } @Override public boolean expectedHasAudioStreams() { return false; } @Override public boolean expectedHasFrames() { return false; } - + @Override public String expectedHost() { return "framatube.org"; } + @Override public String expectedPrivacy() { return "Public"; } + @Override public String expectedCategory() { return "Science & Technology"; } + @Override public String expectedLicence() { return "Attribution - Share Alike"; } + @Override public Locale expectedLanguageInfo() { return Locale.forLanguageTag("en"); } + @Override public List expectedTags() { return Arrays.asList("framasoft", "peertube"); } } public static class AgeRestricted extends DefaultStreamExtractorTest { @@ -136,6 +141,12 @@ public class PeertubeStreamExtractorTest { @Override public boolean expectedHasAudioStreams() { return false; } @Override public boolean expectedHasSubtitles() { return false; } @Override public boolean expectedHasFrames() { return false; } + @Override public String expectedHost() { return "peertube.iriseden.eu"; } + @Override public String expectedPrivacy() { return "Public"; } + @Override public String expectedCategory() { return "News & Politics"; } + @Override public String expectedLicence() { return "Attribution - Share Alike"; } + @Override public Locale expectedLanguageInfo() { return Locale.forLanguageTag("ru"); } + @Override public List expectedTags() { return Arrays.asList("ДНР", "ЛНР", "Кремль", "Новороссия", "ФСБ"); } }