diff options
Diffstat (limited to 'core')
-rw-r--r-- | core/src/main/java/de/danoeh/antennapod/core/util/FeedItemPermutors.java | 10 | ||||
-rw-r--r-- | core/src/test/java/de/danoeh/antennapod/core/util/FeedItemPermutorsTest.java | 26 |
2 files changed, 33 insertions, 3 deletions
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/FeedItemPermutors.java b/core/src/main/java/de/danoeh/antennapod/core/util/FeedItemPermutors.java index 12377791e..ec9c9e55e 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/FeedItemPermutors.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/FeedItemPermutors.java @@ -72,6 +72,12 @@ public class FeedItemPermutors { case SMART_SHUFFLE_NEW_OLD: permutor = (queue) -> smartShuffle(queue, false); break; + case SIZE_SMALL_LARGE: + comparator = (f1, f2) -> Long.compare(size(f1), size(f2)); + break; + case SIZE_LARGE_SMALL: + comparator = (f1, f2) -> Long.compare(size(f2), size(f1)); + break; } if (comparator != null) { @@ -97,6 +103,10 @@ public class FeedItemPermutors { return (item != null && item.getMedia() != null) ? item.getMedia().getDuration() : 0; } + private static long size(@Nullable FeedItem item) { + return (item != null && item.getMedia() != null) ? item.getMedia().getSize() : 0; + } + @NonNull private static String itemLink(@Nullable FeedItem item) { return (item != null && item.getLink() != null) diff --git a/core/src/test/java/de/danoeh/antennapod/core/util/FeedItemPermutorsTest.java b/core/src/test/java/de/danoeh/antennapod/core/util/FeedItemPermutorsTest.java index 9c48f8df7..be4012cb6 100644 --- a/core/src/test/java/de/danoeh/antennapod/core/util/FeedItemPermutorsTest.java +++ b/core/src/test/java/de/danoeh/antennapod/core/util/FeedItemPermutorsTest.java @@ -113,6 +113,26 @@ public class FeedItemPermutorsTest { } @Test + public void testPermutorForRule_size_asc() { + Permutor<FeedItem> permutor = FeedItemPermutors.getPermutor(SortOrder.SIZE_SMALL_LARGE); + + List<FeedItem> itemList = getTestList(); + assertTrue(checkIdOrder(itemList, 1, 3, 2)); // before sorting + permutor.reorder(itemList); + assertTrue(checkIdOrder(itemList, 1, 2, 3)); // after sorting + } + + @Test + public void testPermutorForRule_size_desc() { + Permutor<FeedItem> permutor = FeedItemPermutors.getPermutor(SortOrder.SIZE_LARGE_SMALL); + + List<FeedItem> itemList = getTestList(); + assertTrue(checkIdOrder(itemList, 1, 3, 2)); // before sorting + permutor.reorder(itemList); + assertTrue(checkIdOrder(itemList, 3, 2, 1)); // after sorting + } + + @Test public void testPermutorForRule_DURATION_DESC_NullMedia() { Permutor<FeedItem> permutor = FeedItemPermutors.getPermutor(SortOrder.DURATION_LONG_SHORT); @@ -166,21 +186,21 @@ public class FeedItemPermutorsTest { calendar.set(2019, 0, 1); // January 1st Feed feed1 = new Feed(null, null, "Feed title 1"); FeedItem feedItem1 = new FeedItem(1, "Title 1", null, null, calendar.getTime(), 0, feed1); - FeedMedia feedMedia1 = new FeedMedia(0, feedItem1, 1000, 0, 0, null, null, null, true, null, 0, 0); + FeedMedia feedMedia1 = new FeedMedia(0, feedItem1, 1000, 0, 100, null, null, null, true, null, 0, 0); feedItem1.setMedia(feedMedia1); itemList.add(feedItem1); calendar.set(2019, 2, 1); // March 1st Feed feed2 = new Feed(null, null, "Feed title 3"); FeedItem feedItem2 = new FeedItem(3, "Title 3", null, null, calendar.getTime(), 0, feed2); - FeedMedia feedMedia2 = new FeedMedia(0, feedItem2, 3000, 0, 0, null, null, null, true, null, 0, 0); + FeedMedia feedMedia2 = new FeedMedia(0, feedItem2, 3000, 0, 300, null, null, null, true, null, 0, 0); feedItem2.setMedia(feedMedia2); itemList.add(feedItem2); calendar.set(2019, 1, 1); // February 1st Feed feed3 = new Feed(null, null, "Feed title 2"); FeedItem feedItem3 = new FeedItem(2, "Title 2", null, null, calendar.getTime(), 0, feed3); - FeedMedia feedMedia3 = new FeedMedia(0, feedItem3, 2000, 0, 0, null, null, null, true, null, 0, 0); + FeedMedia feedMedia3 = new FeedMedia(0, feedItem3, 2000, 0, 200, null, null, null, true, null, 0, 0); feedItem3.setMedia(feedMedia3); itemList.add(feedItem3); |