From c0066b9d64ef0454f9eb984ffe6a8714c278ad7a Mon Sep 17 00:00:00 2001 From: daniel oeh Date: Wed, 14 Aug 2013 14:38:24 +0200 Subject: Added test classes for DB*-classes --- .../de/test/antennapod/storage/DBWriterTest.java | 473 +++++++++++++++++++++ 1 file changed, 473 insertions(+) create mode 100644 src/instrumentationTest/de/test/antennapod/storage/DBWriterTest.java (limited to 'src/instrumentationTest/de/test/antennapod/storage/DBWriterTest.java') diff --git a/src/instrumentationTest/de/test/antennapod/storage/DBWriterTest.java b/src/instrumentationTest/de/test/antennapod/storage/DBWriterTest.java new file mode 100644 index 000000000..dbec84370 --- /dev/null +++ b/src/instrumentationTest/de/test/antennapod/storage/DBWriterTest.java @@ -0,0 +1,473 @@ +package instrumentationTest.de.test.antennapod.storage; + +import android.content.Context; +import android.database.Cursor; +import android.test.InstrumentationTestCase; +import de.danoeh.antennapod.feed.Feed; +import de.danoeh.antennapod.feed.FeedImage; +import de.danoeh.antennapod.feed.FeedItem; +import de.danoeh.antennapod.feed.FeedMedia; +import de.danoeh.antennapod.storage.DBReader; +import de.danoeh.antennapod.storage.DBWriter; +import de.danoeh.antennapod.storage.PodDBAdapter; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Date; +import java.util.List; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; + +/** + * Test class for DBWriter + */ +public class DBWriterTest extends InstrumentationTestCase { + private static final String TEST_FOLDER = "testDBWriter"; + + @Override + protected void tearDown() throws Exception { + super.tearDown(); + final Context context = getInstrumentation().getTargetContext(); + context.deleteDatabase(PodDBAdapter.DATABASE_NAME); + + File testDir = context.getExternalFilesDir(TEST_FOLDER); + assertNotNull(testDir); + for (File f : testDir.listFiles()) { + f.delete(); + } + } + + @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); + adapter.open(); + adapter.close(); + } + + public void testDeleteFeedMediaOfItemFileExists() throws IOException, ExecutionException, InterruptedException { + File dest = new File(getInstrumentation().getTargetContext().getExternalFilesDir(TEST_FOLDER), "testFile"); + + assertTrue(dest.createNewFile()); + + Feed feed = new Feed("url", new Date(), "title"); + List items = new ArrayList(); + feed.setItems(items); + FeedItem item = new FeedItem(); + item.setTitle("title"); + item.setPubDate(new Date()); + item.setFeed(feed); + + FeedMedia media = new FeedMedia(0, item, 1, 1, 1, "mime_type", dest.getAbsolutePath(), "download_url", true, null); + item.setMedia(media); + + items.add(item); + + PodDBAdapter adapter = new PodDBAdapter(getInstrumentation().getTargetContext()); + adapter.open(); + adapter.setCompleteFeed(feed); + adapter.close(); + assertTrue(media.getId() != 0); + assertTrue(item.getId() != 0); + + DBWriter.deleteFeedMediaOfItem(getInstrumentation().getTargetContext(), media.getId()).get(); + media = DBReader.getFeedMedia(getInstrumentation().getTargetContext(), media.getId()); + assertNotNull(media); + assertFalse(dest.exists()); + assertFalse(media.isDownloaded()); + assertNull(media.getFile_url()); + } + + public void testDeleteFeedMediaOfItemFileDoesNotExists() throws IOException, ExecutionException, InterruptedException { + File dest = new File(getInstrumentation().getTargetContext().getExternalFilesDir(TEST_FOLDER), "testFile"); + + Feed feed = new Feed("url", new Date(), "title"); + List items = new ArrayList(); + feed.setItems(items); + FeedItem item = new FeedItem(); + item.setTitle("title"); + item.setPubDate(new Date()); + item.setFeed(feed); + + FeedMedia media = new FeedMedia(0, item, 1, 1, 1, "mime_type", dest.getAbsolutePath(), "download_url", false, null); + item.setMedia(media); + + items.add(item); + + PodDBAdapter adapter = new PodDBAdapter(getInstrumentation().getTargetContext()); + adapter.open(); + adapter.setCompleteFeed(feed); + adapter.close(); + assertTrue(media.getId() != 0); + assertTrue(item.getId() != 0); + + DBWriter.deleteFeedMediaOfItem(getInstrumentation().getTargetContext(), media.getId()).get(); + media = DBReader.getFeedMedia(getInstrumentation().getTargetContext(), media.getId()); + assertNotNull(media); + assertFalse(dest.exists()); + assertFalse(media.isDownloaded()); + assertNull(media.getFile_url()); + } + + public void testDeleteFeed() throws IOException, ExecutionException, InterruptedException, TimeoutException { + File destFolder = getInstrumentation().getTargetContext().getExternalFilesDir(TEST_FOLDER); + assertNotNull(destFolder); + + Feed feed = new Feed ("url", new Date(), "title"); + feed.setItems(new ArrayList()); + + // create Feed image + File imgFile = new File(destFolder, "image"); + assertTrue(imgFile.createNewFile()); + FeedImage image = new FeedImage(0, "image", imgFile.getAbsolutePath(), "url", true); + image.setFeed(feed); + feed.setImage(image); + + List itemFiles = new ArrayList(); + // create items with downloaded media files + for (int i = 0; i < 10; i++) { + FeedItem item = new FeedItem(); + item.setTitle("Item " + i); + item.setPubDate(new Date(System.currentTimeMillis())); + item.setFeed(feed); + feed.getItems().add(item); + + File enc = new File(destFolder, "file " + i); + assertTrue(enc.createNewFile()); + itemFiles.add(enc); + + FeedMedia media = new FeedMedia(0, item, 1, 1, 1, "mime_type", enc.getAbsolutePath(), "download_url", true, null); + item.setMedia(media); + } + + PodDBAdapter adapter = new PodDBAdapter(getInstrumentation().getContext()); + adapter.open(); + adapter.setCompleteFeed(feed); + adapter.close(); + + assertTrue(feed.getId() != 0); + assertTrue(feed.getImage().getId() != 0); + for (FeedItem item : feed.getItems()) { + assertTrue(item.getId() != 0); + assertTrue(item.getMedia().getId() != 0); + } + + DBWriter.deleteFeed(getInstrumentation().getTargetContext(), feed.getId()).get(5, TimeUnit.SECONDS); + + // check if files still exist + assertFalse(imgFile.exists()); + for (File f : itemFiles) { + assertFalse(f.exists()); + } + + adapter = new PodDBAdapter(getInstrumentation().getContext()); + adapter.open(); + Cursor c = adapter.getFeedCursor(feed.getId()); + assertTrue(c.getCount() == 0); + c.close(); + c = adapter.getImageOfFeedCursor(image.getId()); + assertTrue(c.getCount() == 0); + c.close(); + for (FeedItem item : feed.getItems()) { + c = adapter.getFeedItemCursor(String.valueOf(item.getId())); + assertTrue(c.getCount() == 0); + c.close(); + c = adapter.getSingleFeedMediaCursor(item.getMedia().getId()); + assertTrue(c.getCount() == 0); + c.close(); + } + } + + public void testDeleteFeedNoImage() throws ExecutionException, InterruptedException, IOException, TimeoutException { + File destFolder = getInstrumentation().getTargetContext().getExternalFilesDir(TEST_FOLDER); + assertNotNull(destFolder); + + Feed feed = new Feed ("url", new Date(), "title"); + feed.setItems(new ArrayList()); + + feed.setImage(null); + + List itemFiles = new ArrayList(); + // create items with downloaded media files + for (int i = 0; i < 10; i++) { + FeedItem item = new FeedItem(); + item.setTitle("Item " + i); + item.setPubDate(new Date(System.currentTimeMillis())); + item.setFeed(feed); + feed.getItems().add(item); + + File enc = new File(destFolder, "file " + i); + assertTrue(enc.createNewFile()); + itemFiles.add(enc); + + FeedMedia media = new FeedMedia(0, item, 1, 1, 1, "mime_type", enc.getAbsolutePath(), "download_url", true, null); + item.setMedia(media); + } + + PodDBAdapter adapter = new PodDBAdapter(getInstrumentation().getContext()); + adapter.open(); + adapter.setCompleteFeed(feed); + adapter.close(); + + assertTrue(feed.getId() != 0); + for (FeedItem item : feed.getItems()) { + assertTrue(item.getId() != 0); + assertTrue(item.getMedia().getId() != 0); + } + + DBWriter.deleteFeed(getInstrumentation().getTargetContext(), feed.getId()).get(5, TimeUnit.SECONDS); + + // check if files still exist + for (File f : itemFiles) { + assertFalse(f.exists()); + } + + adapter = new PodDBAdapter(getInstrumentation().getContext()); + adapter.open(); + Cursor c = adapter.getFeedCursor(feed.getId()); + assertTrue(c.getCount() == 0); + c.close(); + for (FeedItem item : feed.getItems()) { + c = adapter.getFeedItemCursor(String.valueOf(item.getId())); + assertTrue(c.getCount() == 0); + c.close(); + c = adapter.getSingleFeedMediaCursor(item.getMedia().getId()); + assertTrue(c.getCount() == 0); + c.close(); + } + } + + public void testDeleteFeedNoItems() throws IOException, ExecutionException, InterruptedException, TimeoutException { + File destFolder = getInstrumentation().getTargetContext().getExternalFilesDir(TEST_FOLDER); + assertNotNull(destFolder); + + Feed feed = new Feed ("url", new Date(), "title"); + feed.setItems(null); + + // create Feed image + File imgFile = new File(destFolder, "image"); + assertTrue(imgFile.createNewFile()); + FeedImage image = new FeedImage(0, "image", imgFile.getAbsolutePath(), "url", true); + image.setFeed(feed); + feed.setImage(image); + + PodDBAdapter adapter = new PodDBAdapter(getInstrumentation().getContext()); + adapter.open(); + adapter.setCompleteFeed(feed); + adapter.close(); + + assertTrue(feed.getId() != 0); + assertTrue(feed.getImage().getId() != 0); + + DBWriter.deleteFeed(getInstrumentation().getTargetContext(), feed.getId()).get(5, TimeUnit.SECONDS); + + // check if files still exist + assertFalse(imgFile.exists()); + + adapter = new PodDBAdapter(getInstrumentation().getContext()); + adapter.open(); + Cursor c = adapter.getFeedCursor(feed.getId()); + assertTrue(c.getCount() == 0); + c.close(); + c = adapter.getImageOfFeedCursor(image.getId()); + assertTrue(c.getCount() == 0); + c.close(); + } + + public void testDeleteFeedNoFeedMedia() throws IOException, ExecutionException, InterruptedException, TimeoutException { + File destFolder = getInstrumentation().getTargetContext().getExternalFilesDir(TEST_FOLDER); + assertNotNull(destFolder); + + Feed feed = new Feed ("url", new Date(), "title"); + feed.setItems(new ArrayList()); + + // create Feed image + File imgFile = new File(destFolder, "image"); + assertTrue(imgFile.createNewFile()); + FeedImage image = new FeedImage(0, "image", imgFile.getAbsolutePath(), "url", true); + image.setFeed(feed); + feed.setImage(image); + + // create items + for (int i = 0; i < 10; i++) { + FeedItem item = new FeedItem(); + item.setTitle("Item " + i); + item.setPubDate(new Date(System.currentTimeMillis())); + item.setFeed(feed); + feed.getItems().add(item); + + } + + PodDBAdapter adapter = new PodDBAdapter(getInstrumentation().getContext()); + adapter.open(); + adapter.setCompleteFeed(feed); + adapter.close(); + + assertTrue(feed.getId() != 0); + assertTrue(feed.getImage().getId() != 0); + for (FeedItem item : feed.getItems()) { + assertTrue(item.getId() != 0); + } + + DBWriter.deleteFeed(getInstrumentation().getTargetContext(), feed.getId()).get(5, TimeUnit.SECONDS); + + // check if files still exist + assertFalse(imgFile.exists()); + + adapter = new PodDBAdapter(getInstrumentation().getContext()); + adapter.open(); + Cursor c = adapter.getFeedCursor(feed.getId()); + assertTrue(c.getCount() == 0); + c.close(); + c = adapter.getImageOfFeedCursor(image.getId()); + assertTrue(c.getCount() == 0); + c.close(); + for (FeedItem item : feed.getItems()) { + c = adapter.getFeedItemCursor(String.valueOf(item.getId())); + assertTrue(c.getCount() == 0); + c.close(); + } + } + + public void testDeleteFeedWithQueueItems() throws ExecutionException, InterruptedException, TimeoutException { + File destFolder = getInstrumentation().getTargetContext().getExternalFilesDir(TEST_FOLDER); + assertNotNull(destFolder); + + Feed feed = new Feed ("url", new Date(), "title"); + feed.setItems(new ArrayList()); + + // create Feed image + File imgFile = new File(destFolder, "image"); + FeedImage image = new FeedImage(0, "image", imgFile.getAbsolutePath(), "url", true); + image.setFeed(feed); + feed.setImage(image); + + List itemFiles = new ArrayList(); + // create items with downloaded media files + for (int i = 0; i < 10; i++) { + FeedItem item = new FeedItem(); + item.setTitle("Item " + i); + item.setPubDate(new Date(System.currentTimeMillis())); + item.setFeed(feed); + feed.getItems().add(item); + + File enc = new File(destFolder, "file " + i); + itemFiles.add(enc); + + FeedMedia media = new FeedMedia(0, item, 1, 1, 1, "mime_type", enc.getAbsolutePath(), "download_url", false, null); + item.setMedia(media); + } + + PodDBAdapter adapter = new PodDBAdapter(getInstrumentation().getContext()); + adapter.open(); + adapter.setCompleteFeed(feed); + adapter.close(); + + assertTrue(feed.getId() != 0); + assertTrue(feed.getImage().getId() != 0); + for (FeedItem item : feed.getItems()) { + assertTrue(item.getId() != 0); + assertTrue(item.getMedia().getId() != 0); + } + + + List queue = new ArrayList(); + queue.addAll(feed.getItems()); + adapter.open(); + adapter.setQueue(queue); + + Cursor queueCursor = adapter.getQueueIDCursor(); + assertTrue(queueCursor.getCount() == queue.size()); + queueCursor.close(); + + adapter.close(); + DBWriter.deleteFeed(getInstrumentation().getTargetContext(), feed.getId()).get(5, TimeUnit.SECONDS); + adapter.open(); + + Cursor c = adapter.getFeedCursor(feed.getId()); + assertTrue(c.getCount() == 0); + c.close(); + c = adapter.getImageOfFeedCursor(image.getId()); + assertTrue(c.getCount() == 0); + c.close(); + for (FeedItem item : feed.getItems()) { + c = adapter.getFeedItemCursor(String.valueOf(item.getId())); + assertTrue(c.getCount() == 0); + c.close(); + c = adapter.getSingleFeedMediaCursor(item.getMedia().getId()); + assertTrue(c.getCount() == 0); + c.close(); + } + c = adapter.getQueueCursor(); + assertTrue(c.getCount() == 0); + c.close(); + adapter.close(); + } + + public void testDeleteFeedNoDownloadedFiles() throws ExecutionException, InterruptedException, TimeoutException { + File destFolder = getInstrumentation().getTargetContext().getExternalFilesDir(TEST_FOLDER); + assertNotNull(destFolder); + + Feed feed = new Feed ("url", new Date(), "title"); + feed.setItems(new ArrayList()); + + // create Feed image + File imgFile = new File(destFolder, "image"); + FeedImage image = new FeedImage(0, "image", imgFile.getAbsolutePath(), "url", true); + image.setFeed(feed); + feed.setImage(image); + + List itemFiles = new ArrayList(); + // create items with downloaded media files + for (int i = 0; i < 10; i++) { + FeedItem item = new FeedItem(); + item.setTitle("Item " + i); + item.setPubDate(new Date(System.currentTimeMillis())); + item.setFeed(feed); + feed.getItems().add(item); + + File enc = new File(destFolder, "file " + i); + itemFiles.add(enc); + + FeedMedia media = new FeedMedia(0, item, 1, 1, 1, "mime_type", enc.getAbsolutePath(), "download_url", false, null); + item.setMedia(media); + } + + PodDBAdapter adapter = new PodDBAdapter(getInstrumentation().getContext()); + adapter.open(); + adapter.setCompleteFeed(feed); + adapter.close(); + + assertTrue(feed.getId() != 0); + assertTrue(feed.getImage().getId() != 0); + for (FeedItem item : feed.getItems()) { + assertTrue(item.getId() != 0); + assertTrue(item.getMedia().getId() != 0); + } + + DBWriter.deleteFeed(getInstrumentation().getTargetContext(), feed.getId()).get(5, TimeUnit.SECONDS); + + adapter = new PodDBAdapter(getInstrumentation().getContext()); + adapter.open(); + Cursor c = adapter.getFeedCursor(feed.getId()); + assertTrue(c.getCount() == 0); + c.close(); + c = adapter.getImageOfFeedCursor(image.getId()); + assertTrue(c.getCount() == 0); + c.close(); + for (FeedItem item : feed.getItems()) { + c = adapter.getFeedItemCursor(String.valueOf(item.getId())); + assertTrue(c.getCount() == 0); + c.close(); + c = adapter.getSingleFeedMediaCursor(item.getMedia().getId()); + assertTrue(c.getCount() == 0); + c.close(); + } + } +} -- cgit v1.2.3 From 9073343a950cb81e70ff6352ceea6addf6131925 Mon Sep 17 00:00:00 2001 From: daniel oeh Date: Thu, 15 Aug 2013 13:11:08 +0200 Subject: Several bugfixes --- .../de/test/antennapod/storage/DBWriterTest.java | 31 ---------------------- 1 file changed, 31 deletions(-) (limited to 'src/instrumentationTest/de/test/antennapod/storage/DBWriterTest.java') diff --git a/src/instrumentationTest/de/test/antennapod/storage/DBWriterTest.java b/src/instrumentationTest/de/test/antennapod/storage/DBWriterTest.java index dbec84370..1c20d5342 100644 --- a/src/instrumentationTest/de/test/antennapod/storage/DBWriterTest.java +++ b/src/instrumentationTest/de/test/antennapod/storage/DBWriterTest.java @@ -84,37 +84,6 @@ public class DBWriterTest extends InstrumentationTestCase { assertNull(media.getFile_url()); } - public void testDeleteFeedMediaOfItemFileDoesNotExists() throws IOException, ExecutionException, InterruptedException { - File dest = new File(getInstrumentation().getTargetContext().getExternalFilesDir(TEST_FOLDER), "testFile"); - - Feed feed = new Feed("url", new Date(), "title"); - List items = new ArrayList(); - feed.setItems(items); - FeedItem item = new FeedItem(); - item.setTitle("title"); - item.setPubDate(new Date()); - item.setFeed(feed); - - FeedMedia media = new FeedMedia(0, item, 1, 1, 1, "mime_type", dest.getAbsolutePath(), "download_url", false, null); - item.setMedia(media); - - items.add(item); - - PodDBAdapter adapter = new PodDBAdapter(getInstrumentation().getTargetContext()); - adapter.open(); - adapter.setCompleteFeed(feed); - adapter.close(); - assertTrue(media.getId() != 0); - assertTrue(item.getId() != 0); - - DBWriter.deleteFeedMediaOfItem(getInstrumentation().getTargetContext(), media.getId()).get(); - media = DBReader.getFeedMedia(getInstrumentation().getTargetContext(), media.getId()); - assertNotNull(media); - assertFalse(dest.exists()); - assertFalse(media.isDownloaded()); - assertNull(media.getFile_url()); - } - public void testDeleteFeed() throws IOException, ExecutionException, InterruptedException, TimeoutException { File destFolder = getInstrumentation().getTargetContext().getExternalFilesDir(TEST_FOLDER); assertNotNull(destFolder); -- cgit v1.2.3 From 6e1a533bf7e56e6af722f5696c09619745564504 Mon Sep 17 00:00:00 2001 From: daniel oeh Date: Mon, 19 Aug 2013 10:56:16 +0200 Subject: Made FeedItem/FeedMedia objects easier to create --- .../de/test/antennapod/storage/DBWriterTest.java | 32 +++++----------------- 1 file changed, 7 insertions(+), 25 deletions(-) (limited to 'src/instrumentationTest/de/test/antennapod/storage/DBWriterTest.java') diff --git a/src/instrumentationTest/de/test/antennapod/storage/DBWriterTest.java b/src/instrumentationTest/de/test/antennapod/storage/DBWriterTest.java index 1c20d5342..cbd783bcd 100644 --- a/src/instrumentationTest/de/test/antennapod/storage/DBWriterTest.java +++ b/src/instrumentationTest/de/test/antennapod/storage/DBWriterTest.java @@ -59,10 +59,7 @@ public class DBWriterTest extends InstrumentationTestCase { Feed feed = new Feed("url", new Date(), "title"); List items = new ArrayList(); feed.setItems(items); - FeedItem item = new FeedItem(); - item.setTitle("title"); - item.setPubDate(new Date()); - item.setFeed(feed); + FeedItem item = new FeedItem(0, "Item", "Item", "url", new Date(), true, feed); FeedMedia media = new FeedMedia(0, item, 1, 1, 1, "mime_type", dest.getAbsolutePath(), "download_url", true, null); item.setMedia(media); @@ -101,10 +98,7 @@ public class DBWriterTest extends InstrumentationTestCase { List itemFiles = new ArrayList(); // create items with downloaded media files for (int i = 0; i < 10; i++) { - FeedItem item = new FeedItem(); - item.setTitle("Item " + i); - item.setPubDate(new Date(System.currentTimeMillis())); - item.setFeed(feed); + FeedItem item = new FeedItem(0, "Item " + i, "Item" + i, "url", new Date(), true, feed); feed.getItems().add(item); File enc = new File(destFolder, "file " + i); @@ -165,16 +159,13 @@ public class DBWriterTest extends InstrumentationTestCase { List itemFiles = new ArrayList(); // create items with downloaded media files for (int i = 0; i < 10; i++) { - FeedItem item = new FeedItem(); - item.setTitle("Item " + i); - item.setPubDate(new Date(System.currentTimeMillis())); - item.setFeed(feed); + FeedItem item = new FeedItem(0, "Item " + i, "Item" + i, "url", new Date(), true, feed); feed.getItems().add(item); File enc = new File(destFolder, "file " + i); assertTrue(enc.createNewFile()); - itemFiles.add(enc); + itemFiles.add(enc); FeedMedia media = new FeedMedia(0, item, 1, 1, 1, "mime_type", enc.getAbsolutePath(), "download_url", true, null); item.setMedia(media); } @@ -265,10 +256,7 @@ public class DBWriterTest extends InstrumentationTestCase { // create items for (int i = 0; i < 10; i++) { - FeedItem item = new FeedItem(); - item.setTitle("Item " + i); - item.setPubDate(new Date(System.currentTimeMillis())); - item.setFeed(feed); + FeedItem item = new FeedItem(0, "Item " + i, "Item" + i, "url", new Date(), true, feed); feed.getItems().add(item); } @@ -320,10 +308,7 @@ public class DBWriterTest extends InstrumentationTestCase { List itemFiles = new ArrayList(); // create items with downloaded media files for (int i = 0; i < 10; i++) { - FeedItem item = new FeedItem(); - item.setTitle("Item " + i); - item.setPubDate(new Date(System.currentTimeMillis())); - item.setFeed(feed); + FeedItem item = new FeedItem(0, "Item " + i, "Item" + i, "url", new Date(), true, feed); feed.getItems().add(item); File enc = new File(destFolder, "file " + i); @@ -395,10 +380,7 @@ public class DBWriterTest extends InstrumentationTestCase { List itemFiles = new ArrayList(); // create items with downloaded media files for (int i = 0; i < 10; i++) { - FeedItem item = new FeedItem(); - item.setTitle("Item " + i); - item.setPubDate(new Date(System.currentTimeMillis())); - item.setFeed(feed); + FeedItem item = new FeedItem(0, "Item " + i, "Item" + i, "url", new Date(), true, feed); feed.getItems().add(item); File enc = new File(destFolder, "file " + i); -- cgit v1.2.3 From 467ced31eee5bfe31b14ef359015baf4a5518316 Mon Sep 17 00:00:00 2001 From: daniel oeh Date: Mon, 19 Aug 2013 11:27:25 +0200 Subject: Added more tests --- .../de/test/antennapod/storage/DBWriterTest.java | 29 ++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'src/instrumentationTest/de/test/antennapod/storage/DBWriterTest.java') diff --git a/src/instrumentationTest/de/test/antennapod/storage/DBWriterTest.java b/src/instrumentationTest/de/test/antennapod/storage/DBWriterTest.java index cbd783bcd..37fff1de7 100644 --- a/src/instrumentationTest/de/test/antennapod/storage/DBWriterTest.java +++ b/src/instrumentationTest/de/test/antennapod/storage/DBWriterTest.java @@ -421,4 +421,33 @@ public class DBWriterTest extends InstrumentationTestCase { c.close(); } } + + public void testAddItemToPlaybackHistoryNotPlayedYet() throws ExecutionException, InterruptedException { + FeedMedia media = new FeedMedia(0, null, 10, 0, 1, "mime", null, "url", false, null); + DBWriter.addItemToPlaybackHistory(getInstrumentation().getTargetContext(), media).get(); + assertTrue(media.getId() != 0); + PodDBAdapter adapter = new PodDBAdapter(getInstrumentation().getTargetContext()); + adapter.open(); + media = DBReader.getFeedMedia(getInstrumentation().getTargetContext(), media.getId()); + adapter.close(); + + assertNotNull(media); + assertNotNull(media.getPlaybackCompletionDate()); + } + + public void testAddItemToPlaybackHistoryAlreadyPlayed() throws ExecutionException, InterruptedException { + final long OLD_DATE = 0; + FeedMedia media = new FeedMedia(0, null, 10, 0, 1, "mime", null, "url", false, new Date(OLD_DATE)); + DBWriter.addItemToPlaybackHistory(getInstrumentation().getTargetContext(), media).get(); + assertTrue(media.getId() != 0); + PodDBAdapter adapter = new PodDBAdapter(getInstrumentation().getTargetContext()); + adapter.open(); + media = DBReader.getFeedMedia(getInstrumentation().getTargetContext(), media.getId()); + adapter.close(); + + assertNotNull(media); + assertNotNull(media.getPlaybackCompletionDate()); + assertFalse(OLD_DATE == media.getPlaybackCompletionDate().getTime()); + } + } -- cgit v1.2.3 From 4291a96f2f8d83aa8571d404f9a8143695785780 Mon Sep 17 00:00:00 2001 From: daniel oeh Date: Wed, 21 Aug 2013 15:23:47 +0200 Subject: Fixed problems with auto-cleanup --- src/instrumentationTest/de/test/antennapod/storage/DBWriterTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/instrumentationTest/de/test/antennapod/storage/DBWriterTest.java') diff --git a/src/instrumentationTest/de/test/antennapod/storage/DBWriterTest.java b/src/instrumentationTest/de/test/antennapod/storage/DBWriterTest.java index 37fff1de7..04ec265d7 100644 --- a/src/instrumentationTest/de/test/antennapod/storage/DBWriterTest.java +++ b/src/instrumentationTest/de/test/antennapod/storage/DBWriterTest.java @@ -31,7 +31,7 @@ public class DBWriterTest extends InstrumentationTestCase { protected void tearDown() throws Exception { super.tearDown(); final Context context = getInstrumentation().getTargetContext(); - context.deleteDatabase(PodDBAdapter.DATABASE_NAME); + assertTrue(PodDBAdapter.deleteDatabase(getInstrumentation().getTargetContext())); File testDir = context.getExternalFilesDir(TEST_FOLDER); assertNotNull(testDir); -- cgit v1.2.3 From fb1d348e282c13fd9a78702af7cd1303c940252f Mon Sep 17 00:00:00 2001 From: daniel oeh Date: Wed, 28 Aug 2013 19:41:00 +0200 Subject: Updated unit tests --- .../de/test/antennapod/storage/DBWriterTest.java | 275 +++++++++++++++++++-- 1 file changed, 253 insertions(+), 22 deletions(-) (limited to 'src/instrumentationTest/de/test/antennapod/storage/DBWriterTest.java') diff --git a/src/instrumentationTest/de/test/antennapod/storage/DBWriterTest.java b/src/instrumentationTest/de/test/antennapod/storage/DBWriterTest.java index 04ec265d7..84ac7a9cc 100644 --- a/src/instrumentationTest/de/test/antennapod/storage/DBWriterTest.java +++ b/src/instrumentationTest/de/test/antennapod/storage/DBWriterTest.java @@ -3,6 +3,7 @@ package instrumentationTest.de.test.antennapod.storage; import android.content.Context; import android.database.Cursor; import android.test.InstrumentationTestCase; +import android.util.Log; import de.danoeh.antennapod.feed.Feed; import de.danoeh.antennapod.feed.FeedImage; import de.danoeh.antennapod.feed.FeedItem; @@ -14,10 +15,10 @@ import de.danoeh.antennapod.storage.PodDBAdapter; import java.io.File; import java.io.IOException; import java.util.ArrayList; -import java.util.Collections; import java.util.Date; import java.util.List; import java.util.concurrent.ExecutionException; +import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; @@ -25,7 +26,9 @@ import java.util.concurrent.TimeoutException; * 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; @Override protected void tearDown() throws Exception { @@ -85,7 +88,7 @@ public class DBWriterTest extends InstrumentationTestCase { File destFolder = getInstrumentation().getTargetContext().getExternalFilesDir(TEST_FOLDER); assertNotNull(destFolder); - Feed feed = new Feed ("url", new Date(), "title"); + Feed feed = new Feed("url", new Date(), "title"); feed.setItems(new ArrayList()); // create Feed image @@ -121,7 +124,7 @@ public class DBWriterTest extends InstrumentationTestCase { assertTrue(item.getMedia().getId() != 0); } - DBWriter.deleteFeed(getInstrumentation().getTargetContext(), feed.getId()).get(5, TimeUnit.SECONDS); + DBWriter.deleteFeed(getInstrumentation().getTargetContext(), feed.getId()).get(TIMEOUT, TimeUnit.SECONDS); // check if files still exist assertFalse(imgFile.exists()); @@ -151,7 +154,7 @@ public class DBWriterTest extends InstrumentationTestCase { File destFolder = getInstrumentation().getTargetContext().getExternalFilesDir(TEST_FOLDER); assertNotNull(destFolder); - Feed feed = new Feed ("url", new Date(), "title"); + Feed feed = new Feed("url", new Date(), "title"); feed.setItems(new ArrayList()); feed.setImage(null); @@ -181,7 +184,7 @@ public class DBWriterTest extends InstrumentationTestCase { assertTrue(item.getMedia().getId() != 0); } - DBWriter.deleteFeed(getInstrumentation().getTargetContext(), feed.getId()).get(5, TimeUnit.SECONDS); + DBWriter.deleteFeed(getInstrumentation().getTargetContext(), feed.getId()).get(TIMEOUT, TimeUnit.SECONDS); // check if files still exist for (File f : itemFiles) { @@ -207,7 +210,7 @@ public class DBWriterTest extends InstrumentationTestCase { File destFolder = getInstrumentation().getTargetContext().getExternalFilesDir(TEST_FOLDER); assertNotNull(destFolder); - Feed feed = new Feed ("url", new Date(), "title"); + Feed feed = new Feed("url", new Date(), "title"); feed.setItems(null); // create Feed image @@ -225,7 +228,7 @@ public class DBWriterTest extends InstrumentationTestCase { assertTrue(feed.getId() != 0); assertTrue(feed.getImage().getId() != 0); - DBWriter.deleteFeed(getInstrumentation().getTargetContext(), feed.getId()).get(5, TimeUnit.SECONDS); + DBWriter.deleteFeed(getInstrumentation().getTargetContext(), feed.getId()).get(TIMEOUT, TimeUnit.SECONDS); // check if files still exist assertFalse(imgFile.exists()); @@ -244,7 +247,7 @@ public class DBWriterTest extends InstrumentationTestCase { File destFolder = getInstrumentation().getTargetContext().getExternalFilesDir(TEST_FOLDER); assertNotNull(destFolder); - Feed feed = new Feed ("url", new Date(), "title"); + Feed feed = new Feed("url", new Date(), "title"); feed.setItems(new ArrayList()); // create Feed image @@ -272,7 +275,7 @@ public class DBWriterTest extends InstrumentationTestCase { assertTrue(item.getId() != 0); } - DBWriter.deleteFeed(getInstrumentation().getTargetContext(), feed.getId()).get(5, TimeUnit.SECONDS); + DBWriter.deleteFeed(getInstrumentation().getTargetContext(), feed.getId()).get(TIMEOUT, TimeUnit.SECONDS); // check if files still exist assertFalse(imgFile.exists()); @@ -296,7 +299,7 @@ public class DBWriterTest extends InstrumentationTestCase { File destFolder = getInstrumentation().getTargetContext().getExternalFilesDir(TEST_FOLDER); assertNotNull(destFolder); - Feed feed = new Feed ("url", new Date(), "title"); + Feed feed = new Feed("url", new Date(), "title"); feed.setItems(new ArrayList()); // create Feed image @@ -341,7 +344,7 @@ public class DBWriterTest extends InstrumentationTestCase { queueCursor.close(); adapter.close(); - DBWriter.deleteFeed(getInstrumentation().getTargetContext(), feed.getId()).get(5, TimeUnit.SECONDS); + DBWriter.deleteFeed(getInstrumentation().getTargetContext(), feed.getId()).get(TIMEOUT, TimeUnit.SECONDS); adapter.open(); Cursor c = adapter.getFeedCursor(feed.getId()); @@ -368,7 +371,7 @@ public class DBWriterTest extends InstrumentationTestCase { File destFolder = getInstrumentation().getTargetContext().getExternalFilesDir(TEST_FOLDER); assertNotNull(destFolder); - Feed feed = new Feed ("url", new Date(), "title"); + Feed feed = new Feed("url", new Date(), "title"); feed.setItems(new ArrayList()); // create Feed image @@ -402,7 +405,7 @@ public class DBWriterTest extends InstrumentationTestCase { assertTrue(item.getMedia().getId() != 0); } - DBWriter.deleteFeed(getInstrumentation().getTargetContext(), feed.getId()).get(5, TimeUnit.SECONDS); + DBWriter.deleteFeed(getInstrumentation().getTargetContext(), feed.getId()).get(TIMEOUT, TimeUnit.SECONDS); adapter = new PodDBAdapter(getInstrumentation().getContext()); adapter.open(); @@ -422,13 +425,30 @@ public class DBWriterTest extends InstrumentationTestCase { } } - public void testAddItemToPlaybackHistoryNotPlayedYet() throws ExecutionException, InterruptedException { - FeedMedia media = new FeedMedia(0, null, 10, 0, 1, "mime", null, "url", false, null); - DBWriter.addItemToPlaybackHistory(getInstrumentation().getTargetContext(), media).get(); + private FeedMedia playbackHistorySetup(Date playbackCompletionDate) { + final Context context = getInstrumentation().getTargetContext(); + Feed feed = new Feed("url", new Date(), "title"); + feed.setItems(new ArrayList()); + FeedItem item = new FeedItem(0, "title", "id", "link", new Date(), true, feed); + FeedMedia media = new FeedMedia(0, item, 10, 0, 1, "mime", null, "url", false, playbackCompletionDate); + feed.getItems().add(item); + item.setMedia(media); + PodDBAdapter adapter = new PodDBAdapter(context); + adapter.open(); + adapter.setCompleteFeed(feed); + adapter.close(); assertTrue(media.getId() != 0); - PodDBAdapter adapter = new PodDBAdapter(getInstrumentation().getTargetContext()); + return media; + } + + 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); adapter.open(); - media = DBReader.getFeedMedia(getInstrumentation().getTargetContext(), media.getId()); + media = DBReader.getFeedMedia(context, media.getId()); adapter.close(); assertNotNull(media); @@ -437,12 +457,13 @@ public class DBWriterTest extends InstrumentationTestCase { public void testAddItemToPlaybackHistoryAlreadyPlayed() throws ExecutionException, InterruptedException { final long OLD_DATE = 0; - FeedMedia media = new FeedMedia(0, null, 10, 0, 1, "mime", null, "url", false, new Date(OLD_DATE)); + final Context context = getInstrumentation().getTargetContext(); + + FeedMedia media = playbackHistorySetup(new Date(OLD_DATE)); DBWriter.addItemToPlaybackHistory(getInstrumentation().getTargetContext(), media).get(); - assertTrue(media.getId() != 0); - PodDBAdapter adapter = new PodDBAdapter(getInstrumentation().getTargetContext()); + PodDBAdapter adapter = new PodDBAdapter(context); adapter.open(); - media = DBReader.getFeedMedia(getInstrumentation().getTargetContext(), media.getId()); + media = DBReader.getFeedMedia(context, media.getId()); adapter.close(); assertNotNull(media); @@ -450,4 +471,214 @@ public class DBWriterTest extends InstrumentationTestCase { assertFalse(OLD_DATE == media.getPlaybackCompletionDate().getTime()); } + 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()); + for (int i = 0; i < NUM_ITEMS; i++) { + FeedItem item = new FeedItem(0, "title " + i, "id " + i, "link " + i, new Date(), true, feed); + feed.getItems().add(item); + } + + PodDBAdapter adapter = new PodDBAdapter(context); + adapter.open(); + adapter.setCompleteFeed(feed); + adapter.close(); + + for (FeedItem item : feed.getItems()) { + assertTrue(item.getId() != 0); + } + List> futures = new ArrayList>(); + for (FeedItem item : feed.getItems()) { + futures.add(DBWriter.addQueueItem(context, item.getId())); + } + for (Future f : futures) { + f.get(TIMEOUT, TimeUnit.SECONDS); + } + return feed; + } + + 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 item = new FeedItem(0, "title", "id", "link", new Date(), true, feed); + feed.getItems().add(item); + + PodDBAdapter adapter = new PodDBAdapter(context); + adapter.open(); + adapter.setCompleteFeed(feed); + adapter.close(); + + assertTrue(item.getId() != 0); + DBWriter.addQueueItem(context, item.getId()).get(TIMEOUT, TimeUnit.SECONDS); + + adapter = new PodDBAdapter(context); + adapter.open(); + Cursor cursor = adapter.getQueueIDCursor(); + assertTrue(cursor.moveToFirst()); + assertTrue(cursor.getLong(0) == item.getId()); + cursor.close(); + adapter.close(); + } + + 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 item = new FeedItem(0, "title", "id", "link", new Date(), true, feed); + feed.getItems().add(item); + + PodDBAdapter adapter = new PodDBAdapter(context); + adapter.open(); + adapter.setCompleteFeed(feed); + adapter.close(); + + assertTrue(item.getId() != 0); + DBWriter.addQueueItem(context, item.getId()).get(TIMEOUT, TimeUnit.SECONDS); + + adapter = new PodDBAdapter(context); + adapter.open(); + Cursor cursor = adapter.getQueueIDCursor(); + assertTrue(cursor.moveToFirst()); + assertTrue(cursor.getLong(0) == item.getId()); + cursor.close(); + adapter.close(); + + DBWriter.addQueueItem(context, item.getId()).get(TIMEOUT, TimeUnit.SECONDS); + adapter = new PodDBAdapter(context); + adapter.open(); + cursor = adapter.getQueueIDCursor(); + assertTrue(cursor.moveToFirst()); + assertTrue(cursor.getLong(0) == item.getId()); + assertTrue(cursor.getCount() == 1); + cursor.close(); + adapter.close(); + } + + public void testAddQueueItemMultipleItems() throws InterruptedException, ExecutionException, TimeoutException { + final Context context = getInstrumentation().getTargetContext(); + final int NUM_ITEMS = 10; + + Feed feed = queueTestSetupMultipleItems(NUM_ITEMS); + PodDBAdapter adapter = new PodDBAdapter(context); + adapter.open(); + Cursor cursor = adapter.getQueueIDCursor(); + assertTrue(cursor.moveToFirst()); + assertTrue(cursor.getCount() == NUM_ITEMS); + for (int i = 0; i < NUM_ITEMS; i++) { + assertTrue(cursor.moveToPosition(i)); + assertTrue(cursor.getLong(0) == feed.getItems().get(i).getId()); + } + cursor.close(); + adapter.close(); + } + + 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); + adapter.open(); + Cursor cursor = adapter.getQueueIDCursor(); + assertFalse(cursor.moveToFirst()); + cursor.close(); + adapter.close(); + } + + public void testRemoveQueueItem() 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()); + for (int i = 0; i < NUM_ITEMS; i++) { + FeedItem item = new FeedItem(0, "title " + i, "id " + i, "link " + i, new Date(), true, feed); + feed.getItems().add(item); + } + + PodDBAdapter adapter = new PodDBAdapter(context); + adapter.open(); + adapter.setCompleteFeed(feed); + adapter.close(); + + for (FeedItem item : feed.getItems()) { + assertTrue(item.getId() != 0); + } + for (int removeIndex = 0; removeIndex < NUM_ITEMS; removeIndex++) { + final long id = feed.getItems().get(removeIndex).getId(); + adapter = new PodDBAdapter(context); + adapter.open(); + adapter.setQueue(feed.getItems()); + adapter.close(); + + DBWriter.removeQueueItem(context, id, false).get(TIMEOUT, TimeUnit.SECONDS); + adapter = new PodDBAdapter(context); + adapter.open(); + Cursor queue = adapter.getQueueIDCursor(); + assertTrue(queue.getCount() == NUM_ITEMS - 1); + for (int i = 0; i < queue.getCount(); i++) { + assertTrue(queue.moveToPosition(i)); + final long queueID = queue.getLong(0); + assertTrue(queueID != id); // removed item is no longer in queue + boolean idFound = false; + for (FeedItem item : feed.getItems()) { // items that were not removed are still in the queue + idFound = idFound | (item.getId() == queueID); + } + assertTrue(idFound); + } + + queue.close(); + adapter.close(); + } + } + + 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()); + for (int i = 0; i < NUM_ITEMS; i++) { + FeedItem item = new FeedItem(0, "title " + i, "id " + i, "link " + i, new Date(), true, feed); + feed.getItems().add(item); + } + + PodDBAdapter adapter = new PodDBAdapter(context); + adapter.open(); + adapter.setCompleteFeed(feed); + adapter.close(); + + for (FeedItem item : feed.getItems()) { + assertTrue(item.getId() != 0); + } + for (int from = 0; from < NUM_ITEMS; from++) { + for (int to = 0; to < NUM_ITEMS; to++) { + if (from == to) { + continue; + } + 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.open(); + adapter.setQueue(feed.getItems()); + adapter.close(); + + DBWriter.moveQueueItem(context, from, to, false).get(TIMEOUT, TimeUnit.SECONDS); + adapter = new PodDBAdapter(context); + adapter.open(); + Cursor queue = adapter.getQueueIDCursor(); + assertTrue(queue.getCount() == NUM_ITEMS); + assertTrue(queue.moveToPosition(from)); + assertFalse(queue.getLong(0) == fromID); + assertTrue(queue.moveToPosition(to)); + assertTrue(queue.getLong(0) == fromID); + + queue.close(); + adapter.close(); + } + } + } + } -- cgit v1.2.3 From 697afbd5a61a2eb217e4b637b4f3dfb02ae0fd67 Mon Sep 17 00:00:00 2001 From: daniel oeh Date: Wed, 11 Sep 2013 13:56:23 +0200 Subject: "markFeedRead" and "markAllItemsRead" did not work correctly --- .../de/test/antennapod/storage/DBWriterTest.java | 54 ++++++++++++++++++++++ 1 file changed, 54 insertions(+) (limited to 'src/instrumentationTest/de/test/antennapod/storage/DBWriterTest.java') diff --git a/src/instrumentationTest/de/test/antennapod/storage/DBWriterTest.java b/src/instrumentationTest/de/test/antennapod/storage/DBWriterTest.java index 84ac7a9cc..0483a3084 100644 --- a/src/instrumentationTest/de/test/antennapod/storage/DBWriterTest.java +++ b/src/instrumentationTest/de/test/antennapod/storage/DBWriterTest.java @@ -681,4 +681,58 @@ 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()); + for (int i = 0; i < NUM_ITEMS; i++) { + FeedItem item = new FeedItem(0, "title " + i, "id " + i, "link " + i, new Date(), false, feed); + feed.getItems().add(item); + } + + PodDBAdapter adapter = new PodDBAdapter(context); + adapter.open(); + adapter.setCompleteFeed(feed); + adapter.close(); + + assertTrue(feed.getId() != 0); + for (FeedItem item : feed.getItems()) { + assertTrue(item.getId() != 0); + } + + DBWriter.markFeedRead(context, feed.getId()).get(TIMEOUT, TimeUnit.SECONDS); + List loadedItems = DBReader.getFeedItemList(context, feed); + for (FeedItem item : loadedItems) { + assertTrue(item.isRead()); + } + } + + public void testMarkAllItemsReadSameFeed() { + final Context context = getInstrumentation().getTargetContext(); + final int NUM_ITEMS = 10; + Feed feed = new Feed("url", new Date(), "title"); + 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(), false, feed); + feed.getItems().add(item); + } + + PodDBAdapter adapter = new PodDBAdapter(context); + adapter.open(); + adapter.setCompleteFeed(feed); + adapter.close(); + + assertTrue(feed.getId() != 0); + for (FeedItem item : feed.getItems()) { + assertTrue(item.getId() != 0); + } + + DBWriter.markAllItemsRead(context); + List loadedItems = DBReader.getFeedItemList(context, feed); + for (FeedItem item : loadedItems) { + assertTrue(item.isRead()); + } + } + } -- cgit v1.2.3