summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authororionlee <orionlee@yahoo.com>2018-05-23 14:22:13 -0700
committerorionlee <orionlee@yahoo.com>2019-11-05 10:54:21 -0800
commit0973efa9436455288acdae870d43ee7bd177f56b (patch)
treede2cecd368b58cb5354f51abb0b29e08560044d7
parent17e61335db73dd36473693dfe941587039302180 (diff)
downloadAntennaPod-0973efa9436455288acdae870d43ee7bd177f56b.zip
refactor test - break ItemEnqueuePositionCalculatorTest to be more modular
to prepare for testing more complex enqueue options.
-rw-r--r--core/src/test/java/de/danoeh/antennapod/core/storage/DBWriterTest.java148
1 files changed, 86 insertions, 62 deletions
diff --git a/core/src/test/java/de/danoeh/antennapod/core/storage/DBWriterTest.java b/core/src/test/java/de/danoeh/antennapod/core/storage/DBWriterTest.java
index c1983ec4f..6d4dc98fd 100644
--- a/core/src/test/java/de/danoeh/antennapod/core/storage/DBWriterTest.java
+++ b/core/src/test/java/de/danoeh/antennapod/core/storage/DBWriterTest.java
@@ -7,6 +7,7 @@ import org.junit.runners.Parameterized.Parameter;
import org.junit.runners.Parameterized.Parameters;
import java.util.Arrays;
+import java.util.Collections;
import java.util.Date;
import java.util.List;
@@ -20,86 +21,108 @@ import static org.junit.Assert.assertEquals;
public class DBWriterTest {
- @RunWith(Parameterized.class)
public static class ItemEnqueuePositionCalculatorTest {
- @Parameters(name = "{index}: case<{0}>, expected:{1}")
- public static Iterable<Object[]> data() {
- Options optDefault = new Options();
- Options optEnqAtFront = new Options().setEnqueueAtFront(true);
- Options optKeepInProgressAtFront =
- new Options().setEnqueueAtFront(true).setKeepInProgressAtFront(true);
- // edge case: keep in progress without enabling enqueue at front is meaningless
- Options optKeepInProgressAtFrontWithNoEnqueueAtFront =
- new Options().setKeepInProgressAtFront(true);
-
-
- return Arrays.asList(new Object[][] {
- {"case default, i.e., add to the end",
- QUEUE_DEFAULT.size(), optDefault , 0, QUEUE_DEFAULT},
- {"case default (2nd item)",
- QUEUE_DEFAULT.size(), optDefault , 1, QUEUE_DEFAULT},
- {"case option enqueue at front",
- 0, optEnqAtFront , 0, QUEUE_DEFAULT},
- {"case option enqueue at front (2nd item)",
- 1, optEnqAtFront , 1, QUEUE_DEFAULT},
- {"case option keep in progress at front",
- 1, optKeepInProgressAtFront , 0, QUEUE_FRONT_IN_PROGRESS},
- {"case option keep in progress at front (2nd item)",
- 2, optKeepInProgressAtFront , 1, QUEUE_FRONT_IN_PROGRESS},
- {"case option keep in progress at front, front item not in progress",
- 0, optKeepInProgressAtFront , 0, QUEUE_DEFAULT},
- {"case option keep in progress at front, front item no media at all",
- 0, optKeepInProgressAtFront , 0, QUEUE_FRONT_NO_MEDIA}, // No media should not cause any exception
- {"case option keep in progress at front, but enqueue at front is disabled",
- QUEUE_FRONT_IN_PROGRESS.size(), optKeepInProgressAtFrontWithNoEnqueueAtFront , 0, QUEUE_FRONT_IN_PROGRESS},
- {"case empty queue, option default",
- 0, optDefault, 0, QUEUE_EMPTY},
- {"case empty queue, option enqueue at front",
- 0, optEnqAtFront, 0, QUEUE_EMPTY},
- {"case empty queue, option keep in progress at front",
- 0, optKeepInProgressAtFront, 0, QUEUE_EMPTY},
-
- });
- }
+ @RunWith(Parameterized.class)
+ public static class IEPCBasicTest {
+ @Parameters(name = "{index}: case<{0}>, expected:{1}")
+ public static Iterable<Object[]> data() {
+ Options optDefault = new Options();
+ Options optEnqAtFront = new Options().setEnqueueAtFront(true);
+
+ return Arrays.asList(new Object[][] {
+ {"case default, i.e., add to the end",
+ QUEUE_DEFAULT.size(), optDefault , 0, QUEUE_DEFAULT},
+ {"case default (2nd item)",
+ QUEUE_DEFAULT.size(), optDefault , 1, QUEUE_DEFAULT},
+ {"case option enqueue at front",
+ 0, optEnqAtFront , 0, QUEUE_DEFAULT},
+ {"case option enqueue at front (2nd item)",
+ 1, optEnqAtFront , 1, QUEUE_DEFAULT},
+ {"case empty queue, option default",
+ 0, optDefault, 0, QUEUE_EMPTY},
+ {"case empty queue, option enqueue at front",
+ 0, optEnqAtFront, 0, QUEUE_EMPTY},
+ });
+ }
+
+ @Parameter
+ public String message;
- private static final List<FeedItem> QUEUE_EMPTY = Arrays.asList();
+ @Parameter(1)
+ public int posExpected;
- private static final List<FeedItem> QUEUE_DEFAULT = Arrays.asList(tFI(11), tFI(12), tFI(13), tFI(14));
+ @Parameter(2)
+ public Options options;
- private static final List<FeedItem> QUEUE_FRONT_IN_PROGRESS = Arrays.asList(tFI(11, 60000), tFI(12), tFI(13));
+ @Parameter(3)
+ public int posAmongAdded; // the position of feed item to be inserted among the list to be inserted.
- private static final List<FeedItem> QUEUE_FRONT_NO_MEDIA = Arrays.asList(tFINoMedia(11), tFI(12), tFI(13));
+ @Parameter(4)
+ public List<FeedItem> curQueue;
- @Parameter
- public String message;
- @Parameter(1)
- public int posExpected;
+ public static final int TFI_TO_ADD_ID = 101;
- @Parameter(2)
- public Options options;
+ /**
+ * Add a FeedItem with ID {@link #TFI_TO_ADD_ID} with the setup
+ */
+ @Test
+ public void test() {
+ ItemEnqueuePositionCalculator calculator = new ItemEnqueuePositionCalculator(options);
- @Parameter(3)
- public int posAmongAdded; // the position of feed item to be inserted among the list to be inserted.
+ int posActual = calculator.calcPosition(posAmongAdded, tFI(TFI_TO_ADD_ID), curQueue);
+ assertEquals(message, posExpected , posActual);
+ }
+
+ }
- @Parameter(4)
- public List<FeedItem> curQueue;
+ @RunWith(Parameterized.class)
+ public static class IEPCKeepInProgressAtFrontTest extends IEPCBasicTest {
+ @Parameters(name = "{index}: case<{0}>, expected:{1}")
+ public static Iterable<Object[]> data() {
+ Options optKeepInProgressAtFront =
+ new Options().setEnqueueAtFront(true).setKeepInProgressAtFront(true);
+ // edge case: keep in progress without enabling enqueue at front is meaningless
+ Options optKeepInProgressAtFrontWithNoEnqueueAtFront =
+ new Options().setKeepInProgressAtFront(true);
+
+ return Arrays.asList(new Object[][]{
+ {"case option keep in progress at front",
+ 1, optKeepInProgressAtFront, 0, QUEUE_FRONT_IN_PROGRESS},
+ {"case option keep in progress at front (2nd item)",
+ 2, optKeepInProgressAtFront, 1, QUEUE_FRONT_IN_PROGRESS},
+ {"case option keep in progress at front, front item not in progress",
+ 0, optKeepInProgressAtFront, 0, QUEUE_DEFAULT},
+ {"case option keep in progress at front, front item no media at all",
+ 0, optKeepInProgressAtFront, 0, QUEUE_FRONT_NO_MEDIA}, // No media should not cause any exception
+ {"case option keep in progress at front, but enqueue at front is disabled",
+ QUEUE_FRONT_IN_PROGRESS.size(), optKeepInProgressAtFrontWithNoEnqueueAtFront, 0, QUEUE_FRONT_IN_PROGRESS},
+ {"case empty queue, option keep in progress at front",
+ 0, optKeepInProgressAtFront, 0, QUEUE_EMPTY},
+ });
+ }
+ private static final List<FeedItem> QUEUE_FRONT_IN_PROGRESS = Arrays.asList(tFI(11, 60000), tFI(12), tFI(13));
- @Test
- public void test() {
- ItemEnqueuePositionCalculator calculator = new ItemEnqueuePositionCalculator(options);
+ private static final List<FeedItem> QUEUE_FRONT_NO_MEDIA = Arrays.asList(tFINoMedia(11), tFI(12), tFI(13));
- int posActual = calculator.calcPosition(posAmongAdded, tFI(101), curQueue);
- assertEquals(message, posExpected , posActual);
}
- private static FeedItem tFI(int id) {
+ // Common helpers:
+ // - common queue (of items) for tests
+ // - construct FeedItems for tests
+
+ static final List<FeedItem> QUEUE_EMPTY = Collections.unmodifiableList(Arrays.asList());
+
+ static final List<FeedItem> QUEUE_DEFAULT = Collections.unmodifiableList(Arrays.asList(tFI(11), tFI(12), tFI(13), tFI(14)));
+
+
+ static FeedItem tFI(int id) {
return tFI(id, -1);
}
- private static FeedItem tFI(int id, int position) {
+ static FeedItem tFI(int id, int position) {
FeedItem item = tFINoMedia(id);
FeedMedia media = new FeedMedia(item, "download_url", 1234567, "audio/mpeg");
item.setMedia(media);
@@ -111,11 +134,12 @@ public class DBWriterTest {
return item;
}
- private static FeedItem tFINoMedia(int id) {
+ static FeedItem tFINoMedia(int id) {
FeedItem item = new FeedItem(0, "Item" + id, "ItemId" + id, "url",
new Date(), FeedItem.PLAYED, FeedMother.anyFeed());
return item;
}
+
}
}