diff options
author | Martin Fietz <Martin.Fietz@gmail.com> | 2015-09-09 14:05:58 +0200 |
---|---|---|
committer | Martin Fietz <Martin.Fietz@gmail.com> | 2015-09-10 00:58:30 +0200 |
commit | 75dfc89a445c84e22639d101c229b0cfef6346f0 (patch) | |
tree | 1fa402ac9748a95bfb4ad13daa25f630d49c0c76 /app/src/androidTest/java/de/test | |
parent | 2c3f7921d212f3769c8308cf56d51573da541dfc (diff) | |
download | AntennaPod-75dfc89a445c84e22639d101c229b0cfef6346f0.zip |
Refactor database access
Diffstat (limited to 'app/src/androidTest/java/de/test')
10 files changed, 368 insertions, 254 deletions
diff --git a/app/src/androidTest/java/de/test/antennapod/AntennaPodTestRunner.java b/app/src/androidTest/java/de/test/antennapod/AntennaPodTestRunner.java index 24cd6e669..c321e6494 100644 --- a/app/src/androidTest/java/de/test/antennapod/AntennaPodTestRunner.java +++ b/app/src/androidTest/java/de/test/antennapod/AntennaPodTestRunner.java @@ -2,6 +2,7 @@ package de.test.antennapod; import android.test.InstrumentationTestRunner; import android.test.suitebuilder.TestSuiteBuilder; + import junit.framework.TestSuite; public class AntennaPodTestRunner extends InstrumentationTestRunner { @@ -13,4 +14,5 @@ public class AntennaPodTestRunner extends InstrumentationTestRunner { .excludePackages("de.test.antennapod.gpodnet") .build(); } + } diff --git a/app/src/androidTest/java/de/test/antennapod/service/playback/PlaybackServiceMediaPlayerTest.java b/app/src/androidTest/java/de/test/antennapod/service/playback/PlaybackServiceMediaPlayerTest.java index 4ee372d68..133d4152a 100644 --- a/app/src/androidTest/java/de/test/antennapod/service/playback/PlaybackServiceMediaPlayerTest.java +++ b/app/src/androidTest/java/de/test/antennapod/service/playback/PlaybackServiceMediaPlayerTest.java @@ -1,7 +1,6 @@ package de.test.antennapod.service.playback; import android.content.Context; -import android.media.RemoteControlClient; import android.test.InstrumentationTestCase; import junit.framework.AssertionFailedError; @@ -45,7 +44,7 @@ public class PlaybackServiceMediaPlayerTest extends InstrumentationTestCase { @Override protected void tearDown() throws Exception { super.tearDown(); - PodDBAdapter.deleteDatabase(getInstrumentation().getTargetContext()); + PodDBAdapter.deleteDatabase(); httpServer.stop(); } @@ -54,16 +53,16 @@ public class PlaybackServiceMediaPlayerTest extends InstrumentationTestCase { super.setUp(); assertionError = null; - final Context context = getInstrumentation().getTargetContext(); - context.deleteDatabase(PodDBAdapter.DATABASE_NAME); - // make sure database is created - PodDBAdapter adapter = new PodDBAdapter(context); + // create new database + PodDBAdapter.deleteDatabase(); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.close(); httpServer = new HTTPBin(); httpServer.start(); + final Context context = getInstrumentation().getTargetContext(); File cacheDir = context.getExternalFilesDir("testFiles"); if (cacheDir == null) cacheDir = context.getExternalFilesDir("testFiles"); @@ -119,12 +118,12 @@ public class PlaybackServiceMediaPlayerTest extends InstrumentationTestCase { Feed f = new Feed(0, new Date(), "f", "l", "d", null, null, null, null, "i", null, null, "l", false); FeedPreferences prefs = new FeedPreferences(f.getId(), false, FeedPreferences.AutoDeleteAction.NO, null, null); f.setPreferences(prefs); - f.setItems(new ArrayList<FeedItem>()); + f.setItems(new ArrayList<>()); FeedItem i = new FeedItem(0, "t", "i", "l", new Date(), FeedItem.UNPLAYED, f); f.getItems().add(i); FeedMedia media = new FeedMedia(0, i, 0, 0, 0, "audio/wav", fileUrl, downloadUrl, fileUrl != null, null, 0); i.setMedia(media); - PodDBAdapter adapter = new PodDBAdapter(c); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setCompleteFeed(f); assertTrue(media.getId() != 0); diff --git a/app/src/androidTest/java/de/test/antennapod/service/playback/PlaybackServiceTaskManagerTest.java b/app/src/androidTest/java/de/test/antennapod/service/playback/PlaybackServiceTaskManagerTest.java index 385201f25..869a13127 100644 --- a/app/src/androidTest/java/de/test/antennapod/service/playback/PlaybackServiceTaskManagerTest.java +++ b/app/src/androidTest/java/de/test/antennapod/service/playback/PlaybackServiceTaskManagerTest.java @@ -26,16 +26,16 @@ public class PlaybackServiceTaskManagerTest extends InstrumentationTestCase { @Override protected void tearDown() throws Exception { super.tearDown(); - assertTrue(PodDBAdapter.deleteDatabase(getInstrumentation().getTargetContext())); + PodDBAdapter.deleteDatabase(); } @Override protected void setUp() throws Exception { super.setUp(); - final Context context = getInstrumentation().getTargetContext(); - context.deleteDatabase(PodDBAdapter.DATABASE_NAME); - // make sure database is created - PodDBAdapter adapter = new PodDBAdapter(context); + + // create new database + PodDBAdapter.deleteDatabase(); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.close(); } @@ -49,11 +49,11 @@ public class PlaybackServiceTaskManagerTest extends InstrumentationTestCase { final Context c = getInstrumentation().getTargetContext(); final int NUM_ITEMS = 10; Feed f = new Feed(0, new Date(), "title", "link", "d", null, null, null, null, "id", null, "null", "url", false); - f.setItems(new ArrayList<FeedItem>()); + f.setItems(new ArrayList<>()); for (int i = 0; i < NUM_ITEMS; i++) { f.getItems().add(new FeedItem(0, pref + i, pref + i, "link", new Date(), FeedItem.PLAYED, f)); } - PodDBAdapter adapter = new PodDBAdapter(c); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setCompleteFeed(f); adapter.setQueue(f.getItems()); diff --git a/app/src/androidTest/java/de/test/antennapod/storage/DBReaderTest.java b/app/src/androidTest/java/de/test/antennapod/storage/DBReaderTest.java index 11a34813a..6873cb9a6 100644 --- a/app/src/androidTest/java/de/test/antennapod/storage/DBReaderTest.java +++ b/app/src/androidTest/java/de/test/antennapod/storage/DBReaderTest.java @@ -15,7 +15,6 @@ import de.danoeh.antennapod.core.storage.DBReader; import de.danoeh.antennapod.core.storage.FeedItemStatistics; import de.danoeh.antennapod.core.storage.PodDBAdapter; import de.danoeh.antennapod.core.util.LongList; -import de.danoeh.antennapod.core.util.flattr.FlattrStatus; import static de.test.antennapod.storage.DBTestUtils.saveFeedlist; @@ -27,25 +26,23 @@ public class DBReaderTest extends InstrumentationTestCase { @Override protected void tearDown() throws Exception { super.tearDown(); - final Context context = getInstrumentation().getTargetContext(); - assertTrue(PodDBAdapter.deleteDatabase(context)); + assertTrue(PodDBAdapter.deleteDatabase()); } @Override protected void setUp() throws Exception { super.setUp(); - final Context context = getInstrumentation().getTargetContext(); - context.deleteDatabase(PodDBAdapter.DATABASE_NAME); - // make sure database is created - PodDBAdapter adapter = new PodDBAdapter(context); + + // create new database + PodDBAdapter.deleteDatabase(); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.close(); } public void testGetFeedList() { - final Context context = getInstrumentation().getTargetContext(); - List<Feed> feeds = saveFeedlist(context, 10, 0, false); - List<Feed> savedFeeds = DBReader.getFeedList(context); + List<Feed> feeds = saveFeedlist(10, 0, false); + List<Feed> savedFeeds = DBReader.getFeedList(); assertNotNull(savedFeeds); assertEquals(feeds.size(), savedFeeds.size()); for (int i = 0; i < feeds.size(); i++) { @@ -54,8 +51,7 @@ public class DBReaderTest extends InstrumentationTestCase { } public void testGetFeedListSortOrder() { - final Context context = getInstrumentation().getTargetContext(); - PodDBAdapter adapter = new PodDBAdapter(context); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); Feed feed1 = new Feed(0, new Date(), "A", "link", "d", null, null, null, "rss", "A", null, "", "", true); @@ -73,7 +69,7 @@ public class DBReaderTest extends InstrumentationTestCase { adapter.close(); - List<Feed> saved = DBReader.getFeedList(context); + List<Feed> saved = DBReader.getFeedList(); assertNotNull(saved); assertEquals("Wrong size: ", 4, saved.size()); @@ -84,9 +80,8 @@ public class DBReaderTest extends InstrumentationTestCase { } public void testFeedListDownloadUrls() { - final Context context = getInstrumentation().getTargetContext(); - List<Feed> feeds = saveFeedlist(context, 10, 0, false); - List<String> urls = DBReader.getFeedListDownloadUrls(context); + List<Feed> feeds = saveFeedlist(10, 0, false); + List<String> urls = DBReader.getFeedListDownloadUrls(); assertNotNull(urls); assertTrue(urls.size() == feeds.size()); for (int i = 0; i < urls.size(); i++) { @@ -98,8 +93,8 @@ public class DBReaderTest extends InstrumentationTestCase { final Context context = getInstrumentation().getTargetContext(); final int numFeeds = 10; final int numItems = 1; - List<Feed> feeds = saveFeedlist(context, numFeeds, numItems, false); - List<FeedItem> items = new ArrayList<FeedItem>(); + List<Feed> feeds = saveFeedlist(numFeeds, numItems, false); + List<FeedItem> items = new ArrayList<>(); for (Feed f : feeds) { for (FeedItem item : f.getItems()) { item.setFeed(null); @@ -107,7 +102,7 @@ public class DBReaderTest extends InstrumentationTestCase { items.add(item); } } - DBReader.loadFeedDataOfFeedItemlist(context, items); + DBReader.loadFeedDataOfFeedItemlist(items); for (int i = 0; i < numFeeds; i++) { for (int j = 0; j < numItems; j++) { FeedItem item = feeds.get(i).getItems().get(j); @@ -119,13 +114,12 @@ public class DBReaderTest extends InstrumentationTestCase { } public void testGetFeedItemList() { - final Context context = getInstrumentation().getTargetContext(); final int numFeeds = 1; final int numItems = 10; - Feed feed = saveFeedlist(context, numFeeds, numItems, false).get(0); + Feed feed = saveFeedlist(numFeeds, numItems, false).get(0); List<FeedItem> items = feed.getItems(); feed.setItems(null); - List<FeedItem> savedItems = DBReader.getFeedItemList(context, feed); + List<FeedItem> savedItems = DBReader.getFeedItemList(feed); assertNotNull(savedItems); assertTrue(savedItems.size() == items.size()); for (int i = 0; i < savedItems.size(); i++) { @@ -137,22 +131,21 @@ public class DBReaderTest extends InstrumentationTestCase { if (numItems <= 0) { throw new IllegalArgumentException("numItems<=0"); } - final Context context = getInstrumentation().getTargetContext(); - List<Feed> feeds = saveFeedlist(context, numItems, numItems, false); - List<FeedItem> allItems = new ArrayList<FeedItem>(); + List<Feed> feeds = saveFeedlist(numItems, numItems, false); + List<FeedItem> allItems = new ArrayList<>(); for (Feed f : feeds) { allItems.addAll(f.getItems()); } // take random items from every feed Random random = new Random(); - List<FeedItem> queue = new ArrayList<FeedItem>(); + List<FeedItem> queue = new ArrayList<>(); while (queue.size() < numItems) { int index = random.nextInt(numItems); if (!queue.contains(allItems.get(index))) { queue.add(allItems.get(index)); } } - PodDBAdapter adapter = new PodDBAdapter(context); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setQueue(queue); adapter.close(); @@ -160,10 +153,9 @@ public class DBReaderTest extends InstrumentationTestCase { } public void testGetQueueIDList() { - final Context context = getInstrumentation().getTargetContext(); final int numItems = 10; List<FeedItem> queue = saveQueue(numItems); - LongList ids = DBReader.getQueueIDList(context); + LongList ids = DBReader.getQueueIDList(); assertNotNull(ids); assertTrue(queue.size() == ids.size()); for (int i = 0; i < queue.size(); i++) { @@ -173,10 +165,9 @@ public class DBReaderTest extends InstrumentationTestCase { } public void testGetQueue() { - final Context context = getInstrumentation().getTargetContext(); final int numItems = 10; List<FeedItem> queue = saveQueue(numItems); - List<FeedItem> savedQueue = DBReader.getQueue(context); + List<FeedItem> savedQueue = DBReader.getQueue(); assertNotNull(savedQueue); assertTrue(queue.size() == savedQueue.size()); for (int i = 0; i < queue.size(); i++) { @@ -189,13 +180,12 @@ public class DBReaderTest extends InstrumentationTestCase { if (numItems <= 0) { throw new IllegalArgumentException("numItems<=0"); } - final Context context = getInstrumentation().getTargetContext(); - List<Feed> feeds = saveFeedlist(context, numItems, numItems, true); - List<FeedItem> items = new ArrayList<FeedItem>(); + List<Feed> feeds = saveFeedlist(numItems, numItems, true); + List<FeedItem> items = new ArrayList<>(); for (Feed f : feeds) { items.addAll(f.getItems()); } - List<FeedItem> downloaded = new ArrayList<FeedItem>(); + List<FeedItem> downloaded = new ArrayList<>(); Random random = new Random(); while (downloaded.size() < numItems) { @@ -207,7 +197,7 @@ public class DBReaderTest extends InstrumentationTestCase { downloaded.add(item); } } - PodDBAdapter adapter = new PodDBAdapter(context); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setFeedItemlist(downloaded); adapter.close(); @@ -215,10 +205,9 @@ public class DBReaderTest extends InstrumentationTestCase { } public void testGetDownloadedItems() { - final Context context = getInstrumentation().getTargetContext(); final int numItems = 10; List<FeedItem> downloaded = saveDownloadedItems(numItems); - List<FeedItem> downloaded_saved = DBReader.getDownloadedItems(context); + List<FeedItem> downloaded_saved = DBReader.getDownloadedItems(); assertNotNull(downloaded_saved); assertTrue(downloaded_saved.size() == downloaded.size()); for (FeedItem item : downloaded_saved) { @@ -232,13 +221,12 @@ public class DBReaderTest extends InstrumentationTestCase { if (numItems <= 0) { throw new IllegalArgumentException("numItems<=0"); } - final Context context = getInstrumentation().getTargetContext(); - List<Feed> feeds = saveFeedlist(context, numItems, numItems, true); - List<FeedItem> items = new ArrayList<FeedItem>(); + List<Feed> feeds = saveFeedlist(numItems, numItems, true); + List<FeedItem> items = new ArrayList<>(); for (Feed f : feeds) { items.addAll(f.getItems()); } - List<FeedItem> unread = new ArrayList<FeedItem>(); + List<FeedItem> unread = new ArrayList<>(); Random random = new Random(); while (unread.size() < numItems) { @@ -249,7 +237,7 @@ public class DBReaderTest extends InstrumentationTestCase { unread.add(item); } } - PodDBAdapter adapter = new PodDBAdapter(context); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setFeedItemlist(unread); adapter.close(); @@ -257,11 +245,10 @@ public class DBReaderTest extends InstrumentationTestCase { } public void testGetUnreadItemsList() { - final Context context = getInstrumentation().getTargetContext(); final int numItems = 10; List<FeedItem> unread = saveUnreadItems(numItems); - List<FeedItem> unreadSaved = DBReader.getUnreadItemsList(context); + List<FeedItem> unreadSaved = DBReader.getUnreadItemsList(); assertNotNull(unreadSaved); assertTrue(unread.size() == unreadSaved.size()); for (FeedItem item : unreadSaved) { @@ -270,7 +257,6 @@ public class DBReaderTest extends InstrumentationTestCase { } public void testGetNewItemIds() { - final Context context = getInstrumentation().getTargetContext(); final int numItems = 10; List<FeedItem> unread = saveUnreadItems(numItems); @@ -278,7 +264,7 @@ public class DBReaderTest extends InstrumentationTestCase { for (int i = 0; i < unread.size(); i++) { unreadIds[i] = unread.get(i).getId(); } - List<FeedItem> unreadSaved = DBReader.getUnreadItemsList(context); + List<FeedItem> unreadSaved = DBReader.getUnreadItemsList(); assertNotNull(unreadSaved); assertTrue(unread.size() == unreadSaved.size()); for(int i=0; i < unreadSaved.size(); i++) { @@ -295,16 +281,15 @@ public class DBReaderTest extends InstrumentationTestCase { } public void testGetPlaybackHistory() { - final Context context = getInstrumentation().getTargetContext(); final int numItems = (DBReader.PLAYBACK_HISTORY_SIZE + 1) * 2; final int playedItems = DBReader.PLAYBACK_HISTORY_SIZE + 1; final int numReturnedItems = Math.min(playedItems, DBReader.PLAYBACK_HISTORY_SIZE); final int numFeeds = 1; - Feed feed = DBTestUtils.saveFeedlist(context, numFeeds, numItems, true).get(0); + Feed feed = DBTestUtils.saveFeedlist(numFeeds, numItems, true).get(0); long[] ids = new long[playedItems]; - PodDBAdapter adapter = new PodDBAdapter(context); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); for (int i = 0; i < playedItems; i++) { FeedMedia m = feed.getItems().get(i).getMedia(); @@ -314,7 +299,7 @@ public class DBReaderTest extends InstrumentationTestCase { } adapter.close(); - List<FeedItem> saved = DBReader.getPlaybackHistory(context); + List<FeedItem> saved = DBReader.getPlaybackHistory(); assertNotNull(saved); assertEquals("Wrong size: ", numReturnedItems, saved.size()); for (int i = 0; i < numReturnedItems; i++) { @@ -325,11 +310,10 @@ public class DBReaderTest extends InstrumentationTestCase { } public void testGetFeedStatisticsCheckOrder() { - final Context context = getInstrumentation().getTargetContext(); final int NUM_FEEDS = 10; final int NUM_ITEMS = 10; - List<Feed> feeds = DBTestUtils.saveFeedlist(context, NUM_FEEDS, NUM_ITEMS, false); - List<FeedItemStatistics> statistics = DBReader.getFeedStatisticsList(context); + List<Feed> feeds = DBTestUtils.saveFeedlist(NUM_FEEDS, NUM_ITEMS, false); + List<FeedItemStatistics> statistics = DBReader.getFeedStatisticsList(); assertNotNull(statistics); assertEquals(feeds.size(), statistics.size()); for (int i = 0; i < NUM_FEEDS; i++) { @@ -338,31 +322,29 @@ public class DBReaderTest extends InstrumentationTestCase { } public void testGetNavDrawerDataQueueEmptyNoUnreadItems() { - final Context context = getInstrumentation().getTargetContext(); final int NUM_FEEDS = 10; final int NUM_ITEMS = 10; - List<Feed> feeds = DBTestUtils.saveFeedlist(context, NUM_FEEDS, NUM_ITEMS, true); - DBReader.NavDrawerData navDrawerData = DBReader.getNavDrawerData(context); + List<Feed> feeds = DBTestUtils.saveFeedlist(NUM_FEEDS, NUM_ITEMS, true); + DBReader.NavDrawerData navDrawerData = DBReader.getNavDrawerData(); assertEquals(NUM_FEEDS, navDrawerData.feeds.size()); assertEquals(0, navDrawerData.numNewItems); assertEquals(0, navDrawerData.queueSize); } public void testGetNavDrawerDataQueueNotEmptyWithUnreadItems() { - final Context context = getInstrumentation().getTargetContext(); final int NUM_FEEDS = 10; final int NUM_ITEMS = 10; final int NUM_QUEUE = 1; final int NUM_NEW = 2; - List<Feed> feeds = DBTestUtils.saveFeedlist(context, NUM_FEEDS, NUM_ITEMS, true); - PodDBAdapter adapter = new PodDBAdapter(context); + List<Feed> feeds = DBTestUtils.saveFeedlist(NUM_FEEDS, NUM_ITEMS, true); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); for (int i = 0; i < NUM_NEW; i++) { FeedItem item = feeds.get(0).getItems().get(i); item.setNew(); adapter.setSingleFeedItem(item); } - List<FeedItem> queue = new ArrayList<FeedItem>(); + List<FeedItem> queue = new ArrayList<>(); for (int i = 0; i < NUM_QUEUE; i++) { FeedItem item = feeds.get(1).getItems().get(i); queue.add(item); @@ -371,7 +353,7 @@ public class DBReaderTest extends InstrumentationTestCase { adapter.close(); - DBReader.NavDrawerData navDrawerData = DBReader.getNavDrawerData(context); + DBReader.NavDrawerData navDrawerData = DBReader.getNavDrawerData(); assertEquals(NUM_FEEDS, navDrawerData.feeds.size()); assertEquals(NUM_NEW, navDrawerData.numNewItems); assertEquals(NUM_QUEUE, navDrawerData.queueSize); @@ -379,7 +361,7 @@ public class DBReaderTest extends InstrumentationTestCase { public void testGetFeedItemlistCheckChaptersFalse() throws Exception { Context context = getInstrumentation().getTargetContext(); - List<Feed> feeds = DBTestUtils.saveFeedlist(context, 10, 10, false, false, 0); + List<Feed> feeds = DBTestUtils.saveFeedlist(10, 10, false, false, 0); for (Feed feed : feeds) { for (FeedItem item : feed.getItems()) { assertFalse(item.hasChapters()); @@ -388,8 +370,7 @@ public class DBReaderTest extends InstrumentationTestCase { } public void testGetFeedItemlistCheckChaptersTrue() throws Exception { - Context context = getInstrumentation().getTargetContext(); - List<Feed> feeds = saveFeedlist(context, 10, 10, false, true, 10); + List<Feed> feeds = saveFeedlist(10, 10, false, true, 10); for (Feed feed : feeds) { for (FeedItem item : feed.getItems()) { assertTrue(item.hasChapters()); @@ -398,13 +379,12 @@ public class DBReaderTest extends InstrumentationTestCase { } public void testLoadChaptersOfFeedItemNoChapters() throws Exception { - Context context = getInstrumentation().getTargetContext(); - List<Feed> feeds = saveFeedlist(context, 1, 3, false, false, 0); - saveFeedlist(context, 1, 3, false, true, 3); + List<Feed> feeds = saveFeedlist(1, 3, false, false, 0); + saveFeedlist(1, 3, false, true, 3); for (Feed feed : feeds) { for (FeedItem item : feed.getItems()) { assertFalse(item.hasChapters()); - DBReader.loadChaptersOfFeedItem(context, item); + DBReader.loadChaptersOfFeedItem(item); assertFalse(item.hasChapters()); assertNull(item.getChapters()); } @@ -412,14 +392,13 @@ public class DBReaderTest extends InstrumentationTestCase { } public void testLoadChaptersOfFeedItemWithChapters() throws Exception { - Context context = getInstrumentation().getTargetContext(); final int NUM_CHAPTERS = 3; - DBTestUtils.saveFeedlist(context, 1, 3, false, false, 0); - List<Feed> feeds = saveFeedlist(context, 1, 3, false, true, NUM_CHAPTERS); + DBTestUtils.saveFeedlist(1, 3, false, false, 0); + List<Feed> feeds = saveFeedlist(1, 3, false, true, NUM_CHAPTERS); for (Feed feed : feeds) { for (FeedItem item : feed.getItems()) { assertTrue(item.hasChapters()); - DBReader.loadChaptersOfFeedItem(context, item); + DBReader.loadChaptersOfFeedItem(item); assertTrue(item.hasChapters()); assertNotNull(item.getChapters()); assertEquals(NUM_CHAPTERS, item.getChapters().size()); @@ -428,11 +407,10 @@ public class DBReaderTest extends InstrumentationTestCase { } public void testGetItemWithChapters() throws Exception { - Context context = getInstrumentation().getTargetContext(); final int NUM_CHAPTERS = 3; - List<Feed> feeds = saveFeedlist(context, 1, 1, false, true, NUM_CHAPTERS); + List<Feed> feeds = saveFeedlist(1, 1, false, true, NUM_CHAPTERS); FeedItem item1 = feeds.get(0).getItems().get(0); - FeedItem item2 = DBReader.getFeedItem(context, item1.getId()); + FeedItem item2 = DBReader.getFeedItem(item1.getId()); assertTrue(item2.hasChapters()); assertEquals(item1.getChapters(), item2.getChapters()); } diff --git a/app/src/androidTest/java/de/test/antennapod/storage/DBTasksTest.java b/app/src/androidTest/java/de/test/antennapod/storage/DBTasksTest.java index 944fc7792..024b506d9 100644 --- a/app/src/androidTest/java/de/test/antennapod/storage/DBTasksTest.java +++ b/app/src/androidTest/java/de/test/antennapod/storage/DBTasksTest.java @@ -12,7 +12,6 @@ import java.util.ArrayList; import java.util.Collections; import java.util.Date; import java.util.List; -import java.util.concurrent.TimeUnit; import de.danoeh.antennapod.core.feed.Feed; import de.danoeh.antennapod.core.feed.FeedItem; @@ -21,7 +20,6 @@ import de.danoeh.antennapod.core.preferences.UserPreferences; import de.danoeh.antennapod.core.storage.DBReader; import de.danoeh.antennapod.core.storage.DBTasks; import de.danoeh.antennapod.core.storage.PodDBAdapter; -import de.danoeh.antennapod.core.util.flattr.FlattrStatus; import static de.test.antennapod.storage.DBTestUtils.saveFeedlist; @@ -40,7 +38,8 @@ public class DBTasksTest extends InstrumentationTestCase { @Override protected void tearDown() throws Exception { super.tearDown(); - assertTrue(PodDBAdapter.deleteDatabase(context)); + + assertTrue(PodDBAdapter.deleteDatabase()); for (File f : destFolder.listFiles()) { assertTrue(f.delete()); @@ -58,9 +57,9 @@ public class DBTasksTest extends InstrumentationTestCase { assertTrue(destFolder.exists()); assertTrue(destFolder.canWrite()); - context.deleteDatabase(PodDBAdapter.DATABASE_NAME); - // make sure database is created - PodDBAdapter adapter = new PodDBAdapter(context); + // create new database + PodDBAdapter.deleteDatabase(); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.close(); @@ -76,9 +75,9 @@ public class DBTasksTest extends InstrumentationTestCase { final int NUM_ITEMS = EPISODE_CACHE_SIZE * 2; Feed feed = new Feed("url", new Date(), "title"); - List<FeedItem> items = new ArrayList<FeedItem>(); + List<FeedItem> items = new ArrayList<>(); feed.setItems(items); - List<File> files = new ArrayList<File>(); + List<File> files = new ArrayList<>(); for (int i = 0; i < NUM_ITEMS; i++) { FeedItem item = new FeedItem(0, "title", "id", "link", new Date(), FeedItem.PLAYED, feed); @@ -89,7 +88,7 @@ public class DBTasksTest extends InstrumentationTestCase { items.add(item); } - PodDBAdapter adapter = new PodDBAdapter(context); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setCompleteFeed(feed); adapter.close(); @@ -128,7 +127,7 @@ public class DBTasksTest extends InstrumentationTestCase { items.add(item); } - PodDBAdapter adapter = new PodDBAdapter(context); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setCompleteFeed(feed); adapter.close(); @@ -149,9 +148,9 @@ public class DBTasksTest extends InstrumentationTestCase { final int NUM_ITEMS = EPISODE_CACHE_SIZE * 2; Feed feed = new Feed("url", new Date(), "title"); - List<FeedItem> items = new ArrayList<FeedItem>(); + List<FeedItem> items = new ArrayList<>(); feed.setItems(items); - List<File> files = new ArrayList<File>(); + List<File> files = new ArrayList<>(); for (int i = 0; i < NUM_ITEMS; i++) { FeedItem item = new FeedItem(0, "title", "id", "link", new Date(), FeedItem.PLAYED, feed); @@ -163,7 +162,7 @@ public class DBTasksTest extends InstrumentationTestCase { items.add(item); } - PodDBAdapter adapter = new PodDBAdapter(context); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setCompleteFeed(feed); adapter.setQueue(items); @@ -188,14 +187,14 @@ public class DBTasksTest extends InstrumentationTestCase { @FlakyTest(tolerance = 3) public void testPerformAutoCleanupShouldNotDeleteBecauseInQueue_withFeedsWithNoMedia() throws IOException { // add feed with no enclosures so that item ID != media ID - saveFeedlist(context, 1, 10, false); + saveFeedlist(1, 10, false); // add candidate for performAutoCleanup - List<Feed> feeds = saveFeedlist(context, 1, 1, true); + List<Feed> feeds = saveFeedlist(1, 1, true); FeedMedia m = feeds.get(0).getItems().get(0).getMedia(); m.setDownloaded(true); m.setFile_url("file"); - PodDBAdapter adapter = new PodDBAdapter(context); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setMedia(m); adapter.close(); @@ -208,7 +207,7 @@ public class DBTasksTest extends InstrumentationTestCase { final int NUM_ITEMS = 10; Feed feed = new Feed("url", new Date(), "title"); - feed.setItems(new ArrayList<FeedItem>()); + feed.setItems(new ArrayList<>()); for (int i = 0; i < NUM_ITEMS; i++) { feed.getItems().add(new FeedItem(0, "item " + i, "id " + i, "link " + i, new Date(), FeedItem.UNPLAYED, feed)); } @@ -228,8 +227,8 @@ public class DBTasksTest extends InstrumentationTestCase { Feed feed1 = new Feed("url1", new Date(), "title"); Feed feed2 = new Feed("url2", new Date(), "title"); - feed1.setItems(new ArrayList<FeedItem>()); - feed2.setItems(new ArrayList<FeedItem>()); + feed1.setItems(new ArrayList<>()); + feed2.setItems(new ArrayList<>()); Feed savedFeed1 = DBTasks.updateFeed(context, feed1)[0]; Feed savedFeed2 = DBTasks.updateFeed(context, feed2)[0]; @@ -242,11 +241,11 @@ public class DBTasksTest extends InstrumentationTestCase { final int NUM_ITEMS_NEW = 10; final Feed feed = new Feed("url", new Date(), "title"); - feed.setItems(new ArrayList<FeedItem>()); + feed.setItems(new ArrayList<>()); for (int i = 0; i < NUM_ITEMS_OLD; i++) { feed.getItems().add(new FeedItem(0, "item " + i, "id " + i, "link " + i, new Date(i), FeedItem.PLAYED, feed)); } - PodDBAdapter adapter = new PodDBAdapter(context); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setCompleteFeed(feed); adapter.close(); @@ -271,7 +270,7 @@ public class DBTasksTest extends InstrumentationTestCase { updatedFeedTest(newFeed, feedID, itemIDs, NUM_ITEMS_OLD, NUM_ITEMS_NEW); - final Feed feedFromDB = DBReader.getFeed(context, newFeed.getId()); + final Feed feedFromDB = DBReader.getFeed(newFeed.getId()); assertNotNull(feedFromDB); assertTrue(feedFromDB.getId() == newFeed.getId()); updatedFeedTest(feedFromDB, feedID, itemIDs, NUM_ITEMS_OLD, NUM_ITEMS_NEW); diff --git a/app/src/androidTest/java/de/test/antennapod/storage/DBTestUtils.java b/app/src/androidTest/java/de/test/antennapod/storage/DBTestUtils.java index c6f702f3d..0af8afa83 100644 --- a/app/src/androidTest/java/de/test/antennapod/storage/DBTestUtils.java +++ b/app/src/androidTest/java/de/test/antennapod/storage/DBTestUtils.java @@ -1,7 +1,5 @@ package de.test.antennapod.storage; -import android.content.Context; - import junit.framework.Assert; import java.util.ArrayList; @@ -26,14 +24,14 @@ public class DBTestUtils { /** * Use this method when tests don't involve chapters. */ - public static List<Feed> saveFeedlist(Context context, int numFeeds, int numItems, boolean withMedia) { - return saveFeedlist(context, numFeeds, numItems, withMedia, false, 0); + public static List<Feed> saveFeedlist(int numFeeds, int numItems, boolean withMedia) { + return saveFeedlist(numFeeds, numItems, withMedia, false, 0); } /** * Use this method when tests involve chapters. */ - public static List<Feed> saveFeedlist(Context context, int numFeeds, int numItems, boolean withMedia, + public static List<Feed> saveFeedlist(int numFeeds, int numItems, boolean withMedia, boolean withChapters, int numChapters) { if (numFeeds <= 0) { throw new IllegalArgumentException("numFeeds<=0"); @@ -42,13 +40,13 @@ public class DBTestUtils { throw new IllegalArgumentException("numItems<0"); } - List<Feed> feeds = new ArrayList<Feed>(); - PodDBAdapter adapter = new PodDBAdapter(context); + List<Feed> feeds = new ArrayList<>(); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); for (int i = 0; i < numFeeds; i++) { Feed f = new Feed(0, new Date(), "feed " + i, "link" + i, "descr", null, null, null, null, "id" + i, null, null, "url" + i, false, new FlattrStatus(), false, null, null, false); - f.setItems(new ArrayList<FeedItem>()); + f.setItems(new ArrayList<>()); for (int j = 0; j < numItems; j++) { FeedItem item = new FeedItem(0, "item " + j, "id" + j, "link" + j, new Date(), FeedItem.PLAYED, f, withChapters); diff --git a/app/src/androidTest/java/de/test/antennapod/storage/DBWriterTest.java b/app/src/androidTest/java/de/test/antennapod/storage/DBWriterTest.java index c5fa2f131..2a63ef4b3 100644 --- a/app/src/androidTest/java/de/test/antennapod/storage/DBWriterTest.java +++ b/app/src/androidTest/java/de/test/antennapod/storage/DBWriterTest.java @@ -29,6 +29,7 @@ import de.danoeh.antennapod.core.storage.PodDBAdapter; * Test class for DBWriter */ public class DBWriterTest extends InstrumentationTestCase { + private static final String TAG = "DBWriterTest"; private static final String TEST_FOLDER = "testDBWriter"; private static final long TIMEOUT = 5L; @@ -36,9 +37,10 @@ public class DBWriterTest extends InstrumentationTestCase { @Override protected void tearDown() throws Exception { super.tearDown(); - final Context context = getInstrumentation().getTargetContext(); - assertTrue(PodDBAdapter.deleteDatabase(getInstrumentation().getTargetContext())); + assertTrue(PodDBAdapter.deleteDatabase()); + + final Context context = getInstrumentation().getTargetContext(); File testDir = context.getExternalFilesDir(TEST_FOLDER); assertNotNull(testDir); for (File f : testDir.listFiles()) { @@ -49,10 +51,10 @@ public class DBWriterTest extends InstrumentationTestCase { @Override protected void setUp() throws Exception { super.setUp(); - final Context context = getInstrumentation().getTargetContext(); - context.deleteDatabase(PodDBAdapter.DATABASE_NAME); - // make sure database is created - PodDBAdapter adapter = new PodDBAdapter(context); + + // create new database + PodDBAdapter.deleteDatabase(); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.close(); } @@ -63,7 +65,7 @@ public class DBWriterTest extends InstrumentationTestCase { assertTrue(dest.createNewFile()); Feed feed = new Feed("url", new Date(), "title"); - List<FeedItem> items = new ArrayList<FeedItem>(); + List<FeedItem> items = new ArrayList<>(); feed.setItems(items); FeedItem item = new FeedItem(0, "Item", "Item", "url", new Date(), FeedItem.PLAYED, feed); @@ -72,7 +74,7 @@ public class DBWriterTest extends InstrumentationTestCase { items.add(item); - PodDBAdapter adapter = new PodDBAdapter(getInstrumentation().getTargetContext()); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setCompleteFeed(feed); adapter.close(); @@ -80,7 +82,7 @@ public class DBWriterTest extends InstrumentationTestCase { assertTrue(item.getId() != 0); DBWriter.deleteFeedMediaOfItem(getInstrumentation().getTargetContext(), media.getId()).get(); - media = DBReader.getFeedMedia(getInstrumentation().getTargetContext(), media.getId()); + media = DBReader.getFeedMedia(media.getId()); assertNotNull(media); assertFalse(dest.exists()); assertFalse(media.isDownloaded()); @@ -92,7 +94,7 @@ public class DBWriterTest extends InstrumentationTestCase { assertNotNull(destFolder); Feed feed = new Feed("url", new Date(), "title"); - feed.setItems(new ArrayList<FeedItem>()); + feed.setItems(new ArrayList<>()); // create Feed image File imgFile = new File(destFolder, "image"); @@ -118,7 +120,7 @@ public class DBWriterTest extends InstrumentationTestCase { item.getChapters().add(new SimpleChapter(0, "item " + i, item, "example.com")); } - PodDBAdapter adapter = new PodDBAdapter(getInstrumentation().getContext()); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setCompleteFeed(feed); adapter.close(); @@ -139,7 +141,7 @@ public class DBWriterTest extends InstrumentationTestCase { assertFalse(f.exists()); } - adapter = new PodDBAdapter(getInstrumentation().getContext()); + adapter = PodDBAdapter.getInstance(); adapter.open(); Cursor c = adapter.getFeedCursor(feed.getId()); assertEquals(0, c.getCount()); @@ -164,7 +166,7 @@ public class DBWriterTest extends InstrumentationTestCase { assertNotNull(destFolder); Feed feed = new Feed("url", new Date(), "title"); - feed.setItems(new ArrayList<FeedItem>()); + feed.setItems(new ArrayList<>()); feed.setImage(null); @@ -182,7 +184,7 @@ public class DBWriterTest extends InstrumentationTestCase { item.setMedia(media); } - PodDBAdapter adapter = new PodDBAdapter(getInstrumentation().getContext()); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setCompleteFeed(feed); adapter.close(); @@ -200,7 +202,7 @@ public class DBWriterTest extends InstrumentationTestCase { assertFalse(f.exists()); } - adapter = new PodDBAdapter(getInstrumentation().getContext()); + adapter = PodDBAdapter.getInstance(); adapter.open(); Cursor c = adapter.getFeedCursor(feed.getId()); assertTrue(c.getCount() == 0); @@ -229,7 +231,7 @@ public class DBWriterTest extends InstrumentationTestCase { image.setOwner(feed); feed.setImage(image); - PodDBAdapter adapter = new PodDBAdapter(getInstrumentation().getContext()); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setCompleteFeed(feed); adapter.close(); @@ -242,7 +244,7 @@ public class DBWriterTest extends InstrumentationTestCase { // check if files still exist assertFalse(imgFile.exists()); - adapter = new PodDBAdapter(getInstrumentation().getContext()); + adapter = PodDBAdapter.getInstance(); adapter.open(); Cursor c = adapter.getFeedCursor(feed.getId()); assertTrue(c.getCount() == 0); @@ -257,7 +259,7 @@ public class DBWriterTest extends InstrumentationTestCase { assertNotNull(destFolder); Feed feed = new Feed("url", new Date(), "title"); - feed.setItems(new ArrayList<FeedItem>()); + feed.setItems(new ArrayList<>()); // create Feed image File imgFile = new File(destFolder, "image"); @@ -273,7 +275,7 @@ public class DBWriterTest extends InstrumentationTestCase { } - PodDBAdapter adapter = new PodDBAdapter(getInstrumentation().getContext()); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setCompleteFeed(feed); adapter.close(); @@ -289,7 +291,7 @@ public class DBWriterTest extends InstrumentationTestCase { // check if files still exist assertFalse(imgFile.exists()); - adapter = new PodDBAdapter(getInstrumentation().getContext()); + adapter = PodDBAdapter.getInstance(); adapter.open(); Cursor c = adapter.getFeedCursor(feed.getId()); assertTrue(c.getCount() == 0); @@ -309,7 +311,7 @@ public class DBWriterTest extends InstrumentationTestCase { assertNotNull(destFolder); Feed feed = new Feed("url", new Date(), "title"); - feed.setItems(new ArrayList<FeedItem>()); + feed.setItems(new ArrayList<>()); // create Feed image File imgFile = new File(destFolder, "image"); @@ -327,7 +329,7 @@ public class DBWriterTest extends InstrumentationTestCase { item.setImage(itemImage); } - PodDBAdapter adapter = new PodDBAdapter(getInstrumentation().getContext()); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setCompleteFeed(feed); adapter.close(); @@ -344,7 +346,7 @@ public class DBWriterTest extends InstrumentationTestCase { // check if files still exist assertFalse(imgFile.exists()); - adapter = new PodDBAdapter(getInstrumentation().getContext()); + adapter = PodDBAdapter.getInstance(); adapter.open(); Cursor c = adapter.getFeedCursor(feed.getId()); assertTrue(c.getCount() == 0); @@ -367,7 +369,7 @@ public class DBWriterTest extends InstrumentationTestCase { assertNotNull(destFolder); Feed feed = new Feed("url", new Date(), "title"); - feed.setItems(new ArrayList<FeedItem>()); + feed.setItems(new ArrayList<>()); // create Feed image File imgFile = new File(destFolder, "image"); @@ -388,7 +390,7 @@ public class DBWriterTest extends InstrumentationTestCase { item.setMedia(media); } - PodDBAdapter adapter = new PodDBAdapter(getInstrumentation().getContext()); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setCompleteFeed(feed); adapter.close(); @@ -460,7 +462,7 @@ public class DBWriterTest extends InstrumentationTestCase { item.setMedia(media); } - PodDBAdapter adapter = new PodDBAdapter(getInstrumentation().getContext()); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setCompleteFeed(feed); adapter.close(); @@ -474,7 +476,7 @@ public class DBWriterTest extends InstrumentationTestCase { DBWriter.deleteFeed(getInstrumentation().getTargetContext(), feed.getId()).get(TIMEOUT, TimeUnit.SECONDS); - adapter = new PodDBAdapter(getInstrumentation().getContext()); + adapter = PodDBAdapter.getInstance(); adapter.open(); Cursor c = adapter.getFeedCursor(feed.getId()); assertTrue(c.getCount() == 0); @@ -500,7 +502,7 @@ public class DBWriterTest extends InstrumentationTestCase { FeedMedia media = new FeedMedia(0, item, 10, 0, 1, "mime", null, "url", false, playbackCompletionDate, 0); feed.getItems().add(item); item.setMedia(media); - PodDBAdapter adapter = new PodDBAdapter(context); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setCompleteFeed(feed); adapter.close(); @@ -509,13 +511,11 @@ public class DBWriterTest extends InstrumentationTestCase { } public void testAddItemToPlaybackHistoryNotPlayedYet() throws ExecutionException, InterruptedException { - final Context context = getInstrumentation().getTargetContext(); - FeedMedia media = playbackHistorySetup(null); - DBWriter.addItemToPlaybackHistory(context, media).get(); - PodDBAdapter adapter = new PodDBAdapter(context); + DBWriter.addItemToPlaybackHistory(media).get(); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); - media = DBReader.getFeedMedia(context, media.getId()); + media = DBReader.getFeedMedia(media.getId()); adapter.close(); assertNotNull(media); @@ -524,13 +524,12 @@ public class DBWriterTest extends InstrumentationTestCase { public void testAddItemToPlaybackHistoryAlreadyPlayed() throws ExecutionException, InterruptedException { final long OLD_DATE = 0; - final Context context = getInstrumentation().getTargetContext(); FeedMedia media = playbackHistorySetup(new Date(OLD_DATE)); - DBWriter.addItemToPlaybackHistory(getInstrumentation().getTargetContext(), media).get(); - PodDBAdapter adapter = new PodDBAdapter(context); + DBWriter.addItemToPlaybackHistory(media).get(); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); - media = DBReader.getFeedMedia(context, media.getId()); + media = DBReader.getFeedMedia(media.getId()); adapter.close(); assertNotNull(media); @@ -541,13 +540,13 @@ public class DBWriterTest extends InstrumentationTestCase { private Feed queueTestSetupMultipleItems(final int NUM_ITEMS) throws InterruptedException, ExecutionException, TimeoutException { final Context context = getInstrumentation().getTargetContext(); Feed feed = new Feed("url", new Date(), "title"); - feed.setItems(new ArrayList<FeedItem>()); + feed.setItems(new ArrayList<>()); for (int i = 0; i < NUM_ITEMS; i++) { FeedItem item = new FeedItem(0, "title " + i, "id " + i, "link " + i, new Date(), FeedItem.PLAYED, feed); feed.getItems().add(item); } - PodDBAdapter adapter = new PodDBAdapter(context); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setCompleteFeed(feed); adapter.close(); @@ -568,11 +567,11 @@ public class DBWriterTest extends InstrumentationTestCase { public void testAddQueueItemSingleItem() throws InterruptedException, ExecutionException, TimeoutException { final Context context = getInstrumentation().getTargetContext(); Feed feed = new Feed("url", new Date(), "title"); - feed.setItems(new ArrayList<FeedItem>()); + feed.setItems(new ArrayList<>()); FeedItem item = new FeedItem(0, "title", "id", "link", new Date(), FeedItem.PLAYED, feed); feed.getItems().add(item); - PodDBAdapter adapter = new PodDBAdapter(context); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setCompleteFeed(feed); adapter.close(); @@ -580,7 +579,7 @@ public class DBWriterTest extends InstrumentationTestCase { assertTrue(item.getId() != 0); DBWriter.addQueueItem(context, item.getId()).get(TIMEOUT, TimeUnit.SECONDS); - adapter = new PodDBAdapter(context); + adapter = PodDBAdapter.getInstance(); adapter.open(); Cursor cursor = adapter.getQueueIDCursor(); assertTrue(cursor.moveToFirst()); @@ -592,11 +591,11 @@ public class DBWriterTest extends InstrumentationTestCase { public void testAddQueueItemSingleItemAlreadyInQueue() throws InterruptedException, ExecutionException, TimeoutException { final Context context = getInstrumentation().getTargetContext(); Feed feed = new Feed("url", new Date(), "title"); - feed.setItems(new ArrayList<FeedItem>()); + feed.setItems(new ArrayList<>()); FeedItem item = new FeedItem(0, "title", "id", "link", new Date(), FeedItem.PLAYED, feed); feed.getItems().add(item); - PodDBAdapter adapter = new PodDBAdapter(context); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setCompleteFeed(feed); adapter.close(); @@ -604,7 +603,7 @@ public class DBWriterTest extends InstrumentationTestCase { assertTrue(item.getId() != 0); DBWriter.addQueueItem(context, item.getId()).get(TIMEOUT, TimeUnit.SECONDS); - adapter = new PodDBAdapter(context); + adapter = PodDBAdapter.getInstance(); adapter.open(); Cursor cursor = adapter.getQueueIDCursor(); assertTrue(cursor.moveToFirst()); @@ -613,7 +612,7 @@ public class DBWriterTest extends InstrumentationTestCase { adapter.close(); DBWriter.addQueueItem(context, item.getId()).get(TIMEOUT, TimeUnit.SECONDS); - adapter = new PodDBAdapter(context); + adapter = PodDBAdapter.getInstance(); adapter.open(); cursor = adapter.getQueueIDCursor(); assertTrue(cursor.moveToFirst()); @@ -628,7 +627,7 @@ public class DBWriterTest extends InstrumentationTestCase { final int NUM_ITEMS = 10; Feed feed = queueTestSetupMultipleItems(NUM_ITEMS); - PodDBAdapter adapter = new PodDBAdapter(context); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); Cursor cursor = adapter.getQueueIDCursor(); assertTrue(cursor.moveToFirst()); @@ -642,12 +641,11 @@ public class DBWriterTest extends InstrumentationTestCase { } public void testClearQueue() throws InterruptedException, ExecutionException, TimeoutException { - final Context context = getInstrumentation().getTargetContext(); final int NUM_ITEMS = 10; Feed feed = queueTestSetupMultipleItems(NUM_ITEMS); - DBWriter.clearQueue(context).get(TIMEOUT, TimeUnit.SECONDS); - PodDBAdapter adapter = new PodDBAdapter(context); + DBWriter.clearQueue().get(TIMEOUT, TimeUnit.SECONDS); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); Cursor cursor = adapter.getQueueIDCursor(); assertFalse(cursor.moveToFirst()); @@ -659,13 +657,13 @@ public class DBWriterTest extends InstrumentationTestCase { final int NUM_ITEMS = 10; final Context context = getInstrumentation().getTargetContext(); Feed feed = new Feed("url", new Date(), "title"); - feed.setItems(new ArrayList<FeedItem>()); + feed.setItems(new ArrayList<>()); for (int i = 0; i < NUM_ITEMS; i++) { FeedItem item = new FeedItem(0, "title " + i, "id " + i, "link " + i, new Date(), FeedItem.PLAYED, feed); feed.getItems().add(item); } - PodDBAdapter adapter = new PodDBAdapter(context); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setCompleteFeed(feed); adapter.close(); @@ -675,13 +673,13 @@ public class DBWriterTest extends InstrumentationTestCase { } for (int removeIndex = 0; removeIndex < NUM_ITEMS; removeIndex++) { final FeedItem item = feed.getItems().get(removeIndex); - adapter = new PodDBAdapter(context); + adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setQueue(feed.getItems()); adapter.close(); DBWriter.removeQueueItem(context, item, false).get(TIMEOUT, TimeUnit.SECONDS); - adapter = new PodDBAdapter(context); + adapter = PodDBAdapter.getInstance(); adapter.open(); Cursor queue = adapter.getQueueIDCursor(); assertTrue(queue.getCount() == NUM_ITEMS - 1); @@ -703,15 +701,14 @@ public class DBWriterTest extends InstrumentationTestCase { public void testMoveQueueItem() throws InterruptedException, ExecutionException, TimeoutException { final int NUM_ITEMS = 10; - final Context context = getInstrumentation().getTargetContext(); Feed feed = new Feed("url", new Date(), "title"); - feed.setItems(new ArrayList<FeedItem>()); + feed.setItems(new ArrayList<>()); for (int i = 0; i < NUM_ITEMS; i++) { FeedItem item = new FeedItem(0, "title " + i, "id " + i, "link " + i, new Date(), FeedItem.PLAYED, feed); feed.getItems().add(item); } - PodDBAdapter adapter = new PodDBAdapter(context); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setCompleteFeed(feed); adapter.close(); @@ -727,13 +724,13 @@ public class DBWriterTest extends InstrumentationTestCase { Log.d(TAG, String.format("testMoveQueueItem: From=%d, To=%d", from, to)); final long fromID = feed.getItems().get(from).getId(); - adapter = new PodDBAdapter(context); + adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setQueue(feed.getItems()); adapter.close(); - DBWriter.moveQueueItem(context, from, to, false).get(TIMEOUT, TimeUnit.SECONDS); - adapter = new PodDBAdapter(context); + DBWriter.moveQueueItem(from, to, false).get(TIMEOUT, TimeUnit.SECONDS); + adapter = PodDBAdapter.getInstance(); adapter.open(); Cursor queue = adapter.getQueueIDCursor(); assertTrue(queue.getCount() == NUM_ITEMS); @@ -749,7 +746,6 @@ public class DBWriterTest extends InstrumentationTestCase { } public void testMarkFeedRead() throws InterruptedException, ExecutionException, TimeoutException { - final Context context = getInstrumentation().getTargetContext(); final int NUM_ITEMS = 10; Feed feed = new Feed("url", new Date(), "title"); feed.setItems(new ArrayList<FeedItem>()); @@ -758,7 +754,7 @@ public class DBWriterTest extends InstrumentationTestCase { feed.getItems().add(item); } - PodDBAdapter adapter = new PodDBAdapter(context); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setCompleteFeed(feed); adapter.close(); @@ -768,24 +764,23 @@ public class DBWriterTest extends InstrumentationTestCase { assertTrue(item.getId() != 0); } - DBWriter.markFeedRead(context, feed.getId()).get(TIMEOUT, TimeUnit.SECONDS); - List<FeedItem> loadedItems = DBReader.getFeedItemList(context, feed); + DBWriter.markFeedRead(feed.getId()).get(TIMEOUT, TimeUnit.SECONDS); + List<FeedItem> loadedItems = DBReader.getFeedItemList(feed); for (FeedItem item : loadedItems) { assertTrue(item.isPlayed()); } } public void testMarkAllItemsReadSameFeed() throws InterruptedException, ExecutionException, TimeoutException { - final Context context = getInstrumentation().getTargetContext(); final int NUM_ITEMS = 10; Feed feed = new Feed("url", new Date(), "title"); - feed.setItems(new ArrayList<FeedItem>()); + feed.setItems(new ArrayList<>()); for (int i = 0; i < NUM_ITEMS; i++) { FeedItem item = new FeedItem(0, "title " + i, "id " + i, "link " + i, new Date(), FeedItem.UNPLAYED, feed); feed.getItems().add(item); } - PodDBAdapter adapter = new PodDBAdapter(context); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.setCompleteFeed(feed); adapter.close(); @@ -795,8 +790,8 @@ public class DBWriterTest extends InstrumentationTestCase { assertTrue(item.getId() != 0); } - DBWriter.markAllItemsRead(context).get(TIMEOUT, TimeUnit.SECONDS); - List<FeedItem> loadedItems = DBReader.getFeedItemList(context, feed); + DBWriter.markAllItemsRead().get(TIMEOUT, TimeUnit.SECONDS); + List<FeedItem> loadedItems = DBReader.getFeedItemList(feed); for (FeedItem item : loadedItems) { assertTrue(item.isPlayed()); } diff --git a/app/src/androidTest/java/de/test/antennapod/ui/MainActivityTest.java b/app/src/androidTest/java/de/test/antennapod/ui/MainActivityTest.java index 4988d1020..f6c3d0e7d 100644 --- a/app/src/androidTest/java/de/test/antennapod/ui/MainActivityTest.java +++ b/app/src/androidTest/java/de/test/antennapod/ui/MainActivityTest.java @@ -44,8 +44,10 @@ public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActiv solo = new Solo(getInstrumentation(), getActivity()); uiTestUtils = new UITestUtils(getInstrumentation().getTargetContext()); uiTestUtils.setup(); - // create database - PodDBAdapter adapter = new PodDBAdapter(getInstrumentation().getTargetContext()); + + // create new database + PodDBAdapter.deleteDatabase(); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.close(); @@ -59,7 +61,7 @@ public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActiv uiTestUtils.tearDown(); solo.finishOpenedActivities(); - PodDBAdapter.deleteDatabase(getInstrumentation().getTargetContext()); + PodDBAdapter.deleteDatabase(); // reset preferences prefs.edit().clear().commit(); diff --git a/app/src/androidTest/java/de/test/antennapod/ui/PlaybackTest.java b/app/src/androidTest/java/de/test/antennapod/ui/PlaybackTest.java index 8f32f86bb..b3c2ee2be 100644 --- a/app/src/androidTest/java/de/test/antennapod/ui/PlaybackTest.java +++ b/app/src/androidTest/java/de/test/antennapod/ui/PlaybackTest.java @@ -1,12 +1,14 @@ package de.test.antennapod.ui; +import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.preference.PreferenceManager; import android.test.ActivityInstrumentationTestCase2; +import android.test.FlakyTest; +import android.widget.ImageButton; -import com.robotium.solo.Condition; import com.robotium.solo.Solo; import com.robotium.solo.Timeout; @@ -15,22 +17,120 @@ import java.util.List; import de.danoeh.antennapod.R; import de.danoeh.antennapod.activity.MainActivity; import de.danoeh.antennapod.core.feed.FeedItem; +import de.danoeh.antennapod.core.feed.FeedMedia; import de.danoeh.antennapod.core.preferences.UserPreferences; import de.danoeh.antennapod.core.service.playback.PlaybackService; +import de.danoeh.antennapod.core.service.playback.PlayerStatus; import de.danoeh.antennapod.core.storage.DBReader; import de.danoeh.antennapod.core.storage.DBWriter; import de.danoeh.antennapod.core.storage.PodDBAdapter; +import de.danoeh.antennapod.core.util.playback.Playable; +import de.danoeh.antennapod.core.util.playback.PlaybackController; /** - * Test cases for starting and ending playback from the MainActivity and AudioPlayerActivity + * test cases for starting and ending playback from the MainActivity and AudioPlayerActivity */ public class PlaybackTest extends ActivityInstrumentationTestCase2<MainActivity> { + private static final String TAG = PlaybackTest.class.getSimpleName(); + private Solo solo; private UITestUtils uiTestUtils; private Context context; + private PlaybackController controller; + protected FeedMedia currentMedia; + + private PlaybackController createController(Activity activity) { + return new PlaybackController(activity, false) { + + @Override + public void setupGUI() { + } + + @Override + public void onPositionObserverUpdate() { + } + + @Override + public void onBufferStart() { + } + + @Override + public void onBufferEnd() { + } + + @Override + public void onBufferUpdate(float progress) { + } + + @Override + public void handleError(int code) { + } + + @Override + public void onReloadNotification(int code) { + } + + @Override + public void onSleepTimerUpdate() { + } + + @Override + public ImageButton getPlayButton() { + return null; + } + + @Override + public void postStatusMsg(int msg) { + } + + @Override + public void clearStatusMsg() { + } + + @Override + public boolean loadMediaInfo() { + Playable playable = controller.getMedia(); + if(playable == null) { + currentMedia = null; + return true; + } else if(playable instanceof FeedMedia) { + currentMedia = (FeedMedia) playable; + return true; + } else { + return false; + } + } + + @Override + public void onAwaitingVideoSurface() { + } + + @Override + public void onServiceQueried() { + } + + @Override + public void onShutdownNotification() { + } + + @Override + public void onPlaybackEnd() { + currentMedia = null; + } + + @Override + public void onPlaybackSpeedChange() { + } + + @Override + protected void setScreenOn(boolean enable) { + } + }; + } + public PlaybackTest() { super(MainActivity.class); } @@ -38,30 +138,36 @@ public class PlaybackTest extends ActivityInstrumentationTestCase2<MainActivity> @Override public void setUp() throws Exception { super.setUp(); + + PodDBAdapter.deleteDatabase(); + + controller = createController(getActivity()); + controller.init(); + solo = new Solo(getInstrumentation(), getActivity()); - context = getInstrumentation().getContext(); + context = getInstrumentation().getTargetContext(); uiTestUtils = new UITestUtils(context); uiTestUtils.setup(); // create database - PodDBAdapter adapter = new PodDBAdapter(context); + PodDBAdapter adapter = PodDBAdapter.getInstance(); adapter.open(); adapter.close(); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); prefs.edit() + .clear() .putBoolean(UserPreferences.PREF_UNPAUSE_ON_HEADSET_RECONNECT, false) .putBoolean(UserPreferences.PREF_PAUSE_ON_HEADSET_DISCONNECT, false) - .putString(UserPreferences.PREF_HIDDEN_DRAWER_ITEMS, "") .commit(); } @Override public void tearDown() throws Exception { - uiTestUtils.tearDown(); + controller.release(); solo.finishOpenedActivities(); - PodDBAdapter.deleteDatabase(context); + uiTestUtils.tearDown(); // shut down playback service skipEpisode(); @@ -85,87 +191,106 @@ public class PlaybackTest extends ActivityInstrumentationTestCase2<MainActivity> } private void startLocalPlayback() { - openNavDrawer(); - solo.clickOnText(solo.getString(R.string.episodes_label)); - solo.clickOnText(solo.getString(R.string.all_episodes_short_label)); - final List<FeedItem> episodes = DBReader.getRecentlyPublishedEpisodes(context, 10); + String allEpisodesLabel = solo.getString(R.string.all_episodes_label); + if(!getActivity().getSupportActionBar().getTitle().equals(allEpisodesLabel)) { + openNavDrawer(); + solo.clickOnText(solo.getString(R.string.episodes_label)); + solo.clickOnText(solo.getString(R.string.all_episodes_short_label)); + } + final List<FeedItem> episodes = DBReader.getRecentlyPublishedEpisodes(10); assertTrue(solo.waitForView(solo.getView(R.id.butSecondaryAction))); solo.clickOnView(solo.getView(R.id.butSecondaryAction)); - assertTrue(solo.waitForView(solo.getView(R.id.butPlay))); - solo.waitForCondition(new Condition() { - @Override - public boolean isSatisfied() { - return episodes.get(0).getMedia().isCurrentlyPlaying(); + long mediaId = episodes.get(0).getMedia().getId(); + boolean playing = solo.waitForCondition(() -> { + if (currentMedia != null) { + return currentMedia.getId() == mediaId; + } else { + return false; } - }, Timeout.getLargeTimeout()); + }, Timeout.getSmallTimeout()); + assertTrue(playing); } private void startLocalPlaybackFromQueue() { + openNavDrawer(); + + solo.clickOnText(solo.getString(R.string.queue_label)); + assertTrue(solo.waitForView(solo.getView(R.id.butSecondaryAction))); - final List<FeedItem> queue = DBReader.getQueue(context); + final List<FeedItem> queue = DBReader.getQueue(); solo.clickOnImageButton(1); assertTrue(solo.waitForView(solo.getView(R.id.butPlay))); - solo.waitForCondition(new Condition() { - @Override - public boolean isSatisfied() { - return queue.get(0).getMedia().isCurrentlyPlaying(); + long mediaId = queue.get(0).getMedia().getId(); + boolean playing = solo.waitForCondition(() -> { + if(currentMedia != null) { + return currentMedia.getId() == mediaId; + } else { + return false; } - }, Timeout.getLargeTimeout()); + }, Timeout.getSmallTimeout()); + assertTrue(playing); } public void testStartLocal() throws Exception { uiTestUtils.addLocalFeedData(true); - DBWriter.clearQueue(context).get(); + DBWriter.clearQueue().get(); startLocalPlayback(); } public void testContinousPlaybackOffSingleEpisode() throws Exception { setContinuousPlaybackPreference(false); uiTestUtils.addLocalFeedData(true); - DBWriter.clearQueue(context).get(); + DBWriter.clearQueue().get(); startLocalPlayback(); } - + @FlakyTest(tolerance = 3) public void testContinousPlaybackOffMultipleEpisodes() throws Exception { setContinuousPlaybackPreference(false); uiTestUtils.addLocalFeedData(true); - List<FeedItem> queue = DBReader.getQueue(context); + List<FeedItem> queue = DBReader.getQueue(); final FeedItem first = queue.get(0); - final FeedItem second = queue.get(1); startLocalPlaybackFromQueue(); - solo.waitForCondition(new Condition() { - @Override - public boolean isSatisfied() { - return first.getMedia().isCurrentlyPlaying() == false; + boolean stopped = solo.waitForCondition(() -> { + if (currentMedia != null) { + return currentMedia.getId() != first.getMedia().getId(); + } else { + return false; } - }, 10000); + }, Timeout.getSmallTimeout()); + assertTrue(stopped); Thread.sleep(1000); - assertTrue(second.getMedia().isCurrentlyPlaying() == false); + PlayerStatus status = controller.getStatus(); + assertFalse(status.equals(PlayerStatus.PLAYING)); } + @FlakyTest(tolerance = 3) public void testContinuousPlaybackOnMultipleEpisodes() throws Exception { setContinuousPlaybackPreference(true); uiTestUtils.addLocalFeedData(true); - List<FeedItem> queue = DBReader.getQueue(context); + List<FeedItem> queue = DBReader.getQueue(); final FeedItem first = queue.get(0); final FeedItem second = queue.get(1); startLocalPlaybackFromQueue(); - solo.waitForCondition(new Condition() { - @Override - public boolean isSatisfied() { - return first.getMedia().isCurrentlyPlaying() == false; + boolean firstPlaying = solo.waitForCondition(() -> { + if (currentMedia != null) { + return currentMedia.getId() == first.getMedia().getId(); + } else { + return false; } - }, 10000); - solo.waitForCondition(new Condition() { - @Override - public boolean isSatisfied() { - return second.getMedia().isCurrentlyPlaying() == true; + }, Timeout.getSmallTimeout()); + assertTrue(firstPlaying); + boolean secondPlaying = solo.waitForCondition(() -> { + if (currentMedia != null) { + return currentMedia.getId() == second.getMedia().getId(); + } else { + return false; } - }, 10000); + }, Timeout.getLargeTimeout()); + assertTrue(secondPlaying); } /** @@ -174,24 +299,34 @@ public class PlaybackTest extends ActivityInstrumentationTestCase2<MainActivity> private void replayEpisodeCheck(boolean followQueue) throws Exception { setContinuousPlaybackPreference(followQueue); uiTestUtils.addLocalFeedData(true); - DBWriter.clearQueue(context).get(); - final List<FeedItem> episodes = DBReader.getRecentlyPublishedEpisodes(context, 10); + DBWriter.clearQueue().get(); + final List<FeedItem> episodes = DBReader.getRecentlyPublishedEpisodes(10); startLocalPlayback(); - solo.waitForCondition(new Condition() { - @Override - public boolean isSatisfied() { - return false == episodes.get(0).getMedia().isCurrentlyPlaying(); + long mediaId = episodes.get(0).getMedia().getId(); + boolean startedPlaying = solo.waitForCondition(() -> { + if (currentMedia != null) { + return currentMedia.getId() == mediaId; + } else { + return false; } + }, Timeout.getSmallTimeout()); + assertTrue(startedPlaying); + + boolean stoppedPlaying = solo.waitForCondition(() -> { + return currentMedia == null || currentMedia.getId() != mediaId; }, Timeout.getLargeTimeout()); + assertTrue(stoppedPlaying); startLocalPlayback(); - solo.waitForCondition(new Condition() { - @Override - public boolean isSatisfied() { - return false == episodes.get(0).getMedia().isCurrentlyPlaying(); + boolean startedReplay = solo.waitForCondition(() -> { + if(currentMedia != null) { + return currentMedia.getId() == mediaId; + } else { + return false; } }, Timeout.getLargeTimeout()); + assertTrue(startedReplay); } public void testReplayEpisodeContinuousPlaybackOn() throws Exception { diff --git a/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java b/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java index 7bbc6e462..9859e7534 100644 --- a/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java +++ b/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java @@ -4,6 +4,7 @@ import android.annotation.TargetApi; import android.content.Context; import android.graphics.Bitmap; import android.os.Build; +import android.util.Log; import junit.framework.Assert; @@ -38,6 +39,8 @@ import de.test.antennapod.util.syndication.feedgenerator.RSS2Generator; @TargetApi(Build.VERSION_CODES.HONEYCOMB) public class UITestUtils { + private static final String TAG = UITestUtils.class.getSimpleName(); + private static final String DATA_FOLDER = "test/UITestUtils"; public static final int NUM_FEEDS = 5; @@ -79,7 +82,7 @@ public class UITestUtils { server.stop(); if (localFeedDataAdded) { - PodDBAdapter.deleteDatabase(context); + PodDBAdapter.deleteDatabase(); } } @@ -174,16 +177,15 @@ public class UITestUtils { */ public void addLocalFeedData(boolean downloadEpisodes) throws Exception { if (localFeedDataAdded) { - throw new IllegalStateException("addLocalFeedData was called twice on the same instance"); + Log.w(TAG, "addLocalFeedData was called twice on the same instance"); + // might be a flaky test, this is actually not that severe + return; } if (!feedDataHosted) { addHostedFeedData(); } - List<FeedItem> queue = new ArrayList<FeedItem>(); - - PodDBAdapter adapter = new PodDBAdapter(context); - adapter.open(); + List<FeedItem> queue = new ArrayList<>(); for (Feed feed : hostedFeeds) { feed.setDownloaded(true); if (feed.getImage() != null) { @@ -206,6 +208,10 @@ public class UITestUtils { queue.add(feed.getItems().get(0)); feed.getItems().get(1).getMedia().setPlaybackCompletionDate(new Date()); } + localFeedDataAdded = true; + + PodDBAdapter adapter = PodDBAdapter.getInstance(); + adapter.open(); adapter.setCompleteFeed(hostedFeeds.toArray(new Feed[hostedFeeds.size()])); adapter.setQueue(queue); adapter.close(); |