From 46ae3e0b00a3b3ec8ef7ba01efad8bcfb1a79398 Mon Sep 17 00:00:00 2001 From: orionlee Date: Fri, 18 May 2018 13:21:36 -0700 Subject: core tests: Convert tests that are effectively unit tests to be one (standard android junit tests). Provides implementations for android platform utils needed (in unit test environment): 1. android.util.Log, 2. android.text.TextUtils.isEmpty() --- .../antennapod/core/feed/FeedImageMother.java | 9 ++ .../antennapod/core/feed/FeedItemMother.java | 16 ++++ .../danoeh/antennapod/core/feed/FeedItemTest.java | 71 ++++++++++++++ .../de/danoeh/antennapod/core/feed/FeedMother.java | 14 +++ .../de/danoeh/antennapod/core/feed/FeedTest.java | 102 +++++++++++++++++++++ .../antennapod/core/util/LongLongMapTest.java | 65 +++++++++++++ 6 files changed, 277 insertions(+) create mode 100644 core/src/test/java/de/danoeh/antennapod/core/feed/FeedImageMother.java create mode 100644 core/src/test/java/de/danoeh/antennapod/core/feed/FeedItemMother.java create mode 100644 core/src/test/java/de/danoeh/antennapod/core/feed/FeedItemTest.java create mode 100644 core/src/test/java/de/danoeh/antennapod/core/feed/FeedMother.java create mode 100644 core/src/test/java/de/danoeh/antennapod/core/feed/FeedTest.java create mode 100644 core/src/test/java/de/danoeh/antennapod/core/util/LongLongMapTest.java (limited to 'core/src/test/java/de/danoeh') diff --git a/core/src/test/java/de/danoeh/antennapod/core/feed/FeedImageMother.java b/core/src/test/java/de/danoeh/antennapod/core/feed/FeedImageMother.java new file mode 100644 index 000000000..0fb4992ba --- /dev/null +++ b/core/src/test/java/de/danoeh/antennapod/core/feed/FeedImageMother.java @@ -0,0 +1,9 @@ +package de.danoeh.antennapod.core.feed; + +class FeedImageMother { + + public static FeedImage anyFeedImage() { + return new FeedImage(0, "image", null, "http://example.com/picture", false); + } + +} diff --git a/core/src/test/java/de/danoeh/antennapod/core/feed/FeedItemMother.java b/core/src/test/java/de/danoeh/antennapod/core/feed/FeedItemMother.java new file mode 100644 index 000000000..3d7c4fe5f --- /dev/null +++ b/core/src/test/java/de/danoeh/antennapod/core/feed/FeedItemMother.java @@ -0,0 +1,16 @@ +package de.danoeh.antennapod.core.feed; + +import java.util.Date; + +import static de.danoeh.antennapod.core.feed.FeedImageMother.anyFeedImage; +import static de.danoeh.antennapod.core.feed.FeedMother.anyFeed; + +class FeedItemMother { + + static FeedItem anyFeedItemWithImage() { + FeedItem item = new FeedItem(0, "Item", "Item", "url", new Date(), FeedItem.PLAYED, anyFeed()); + item.setImage(anyFeedImage()); + return item; + } + +} diff --git a/core/src/test/java/de/danoeh/antennapod/core/feed/FeedItemTest.java b/core/src/test/java/de/danoeh/antennapod/core/feed/FeedItemTest.java new file mode 100644 index 000000000..92aacd9d7 --- /dev/null +++ b/core/src/test/java/de/danoeh/antennapod/core/feed/FeedItemTest.java @@ -0,0 +1,71 @@ +package de.danoeh.antennapod.core.feed; + +import org.junit.Before; +import org.junit.Test; + +import static de.danoeh.antennapod.core.feed.FeedItemMother.anyFeedItemWithImage; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +public class FeedItemTest { + + private FeedItem original; + private FeedImage originalImage; + private FeedItem changedFeedItem; + + @Before + public void setUp() { + original = anyFeedItemWithImage(); + originalImage = original.getImage(); + changedFeedItem = anyFeedItemWithImage(); + } + + @Test + public void testUpdateFromOther_feedItemImageDownloadUrlChanged() throws Exception { + setNewFeedItemImageDownloadUrl(); + + original.updateFromOther(changedFeedItem); + + feedItemImageWasUpdated(); + } + + @Test + public void testUpdateFromOther_feedItemImageRemoved() throws Exception { + feedItemImageRemoved(); + + original.updateFromOther(changedFeedItem); + + feedItemImageWasNotUpdated(); + } + + @Test + public void testUpdateFromOther_feedItemImageAdded() throws Exception { + feedItemHadNoImage(); + setNewFeedItemImageDownloadUrl(); + + original.updateFromOther(changedFeedItem); + + feedItemImageWasUpdated(); + } + + private void feedItemHadNoImage() { + original.setImage(null); + } + + private void setNewFeedItemImageDownloadUrl() { + changedFeedItem.getImage().setDownload_url("http://example.com/new_picture"); + } + + private void feedItemImageRemoved() { + changedFeedItem.setImage(null); + } + + private void feedItemImageWasUpdated() { + assertEquals(original.getImage().getDownload_url(), changedFeedItem.getImage().getDownload_url()); + } + + private void feedItemImageWasNotUpdated() { + assertTrue(originalImage == original.getImage()); + } + +} \ No newline at end of file diff --git a/core/src/test/java/de/danoeh/antennapod/core/feed/FeedMother.java b/core/src/test/java/de/danoeh/antennapod/core/feed/FeedMother.java new file mode 100644 index 000000000..fecc8e377 --- /dev/null +++ b/core/src/test/java/de/danoeh/antennapod/core/feed/FeedMother.java @@ -0,0 +1,14 @@ +package de.danoeh.antennapod.core.feed; + +import static de.danoeh.antennapod.core.feed.FeedImageMother.anyFeedImage; + +class FeedMother { + + public static Feed anyFeed() { + FeedImage image = anyFeedImage(); + return new Feed(0, null, "title", "http://example.com", "This is the description", + "http://example.com/payment", "Daniel", "en", null, "http://example.com/feed", image, + null, "http://example.com/feed", true); + } + +} diff --git a/core/src/test/java/de/danoeh/antennapod/core/feed/FeedTest.java b/core/src/test/java/de/danoeh/antennapod/core/feed/FeedTest.java new file mode 100644 index 000000000..55f3bdafe --- /dev/null +++ b/core/src/test/java/de/danoeh/antennapod/core/feed/FeedTest.java @@ -0,0 +1,102 @@ +package de.danoeh.antennapod.core.feed; + +import org.junit.Before; +import org.junit.Test; + +import static de.danoeh.antennapod.core.feed.FeedImageMother.anyFeedImage; +import static de.danoeh.antennapod.core.feed.FeedMother.anyFeed; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +public class FeedTest { + + private Feed original; + private FeedImage originalImage; + private Feed changedFeed; + + @Before + public void setUp() { + original = anyFeed(); + originalImage = original.getImage(); + changedFeed = anyFeed(); + } + + @Test + public void testCompareWithOther_feedImageDownloadUrlChanged() throws Exception { + setNewFeedImageDownloadUrl(); + + feedHasChanged(); + } + + @Test + public void testCompareWithOther_sameFeedImage() throws Exception { + changedFeed.setImage(anyFeedImage()); + + feedHasNotChanged(); + } + + @Test + public void testCompareWithOther_feedImageRemoved() throws Exception { + feedImageRemoved(); + + feedHasNotChanged(); + } + + @Test + public void testUpdateFromOther_feedImageDownloadUrlChanged() throws Exception { + setNewFeedImageDownloadUrl(); + + original.updateFromOther(changedFeed); + + feedImageWasUpdated(); + } + + @Test + public void testUpdateFromOther_feedImageRemoved() throws Exception { + feedImageRemoved(); + + original.updateFromOther(changedFeed); + + feedImageWasNotUpdated(); + } + + @Test + public void testUpdateFromOther_feedImageAdded() throws Exception { + feedHadNoImage(); + setNewFeedImageDownloadUrl(); + + original.updateFromOther(changedFeed); + + feedImageWasUpdated(); + } + + private void feedHasNotChanged() { + assertFalse(original.compareWithOther(changedFeed)); + } + + private void feedHadNoImage() { + original.setImage(null); + } + + private void setNewFeedImageDownloadUrl() { + changedFeed.getImage().setDownload_url("http://example.com/new_picture"); + } + + private void feedHasChanged() { + assertTrue(original.compareWithOther(changedFeed)); + } + + private void feedImageRemoved() { + changedFeed.setImage(null); + } + + private void feedImageWasUpdated() { + assertEquals(original.getImage().getDownload_url(), changedFeed.getImage().getDownload_url()); + } + + private void feedImageWasNotUpdated() { + assertTrue(originalImage == original.getImage()); + } + +} \ No newline at end of file diff --git a/core/src/test/java/de/danoeh/antennapod/core/util/LongLongMapTest.java b/core/src/test/java/de/danoeh/antennapod/core/util/LongLongMapTest.java new file mode 100644 index 000000000..0ed77eb9f --- /dev/null +++ b/core/src/test/java/de/danoeh/antennapod/core/util/LongLongMapTest.java @@ -0,0 +1,65 @@ +package de.danoeh.antennapod.core.util; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class LongLongMapTest { + + @Test + public void testEmptyMap() { + LongIntMap map = new LongIntMap(); + assertEquals(0, map.size()); + assertEquals("LongLongMap{}", map.toString()); + assertEquals(0, map.get(42)); + assertEquals(-1, map.get(42, -1)); + assertEquals(false, map.delete(42)); + assertEquals(-1, map.indexOfKey(42)); + assertEquals(-1, map.indexOfValue(42)); + assertEquals(1, map.hashCode()); + } + + @Test + public void testSingleElement() { + LongIntMap map = new LongIntMap(); + map.put(17, 42); + assertEquals(1, map.size()); + assertEquals("LongLongMap{17=42}", map.toString()); + assertEquals(42, map.get(17)); + assertEquals(42, map.get(17, -1)); + assertEquals(0, map.indexOfKey(17)); + assertEquals(0, map.indexOfValue(42)); + assertEquals(true, map.delete(17)); + } + + @Test + public void testAddAndDelete() { + LongIntMap map = new LongIntMap(); + for(int i=0; i < 100; i++) { + map.put(i * 17, i * 42); + } + assertEquals(100, map.size()); + assertEquals(0, map.get(0)); + assertEquals(42, map.get(17)); + assertEquals(42, map.get(17, -1)); + assertEquals(1, map.indexOfKey(17)); + assertEquals(1, map.indexOfValue(42)); + for(int i=0; i < 100; i++) { + assertEquals(true, map.delete(i * 17)); + } + } + + @Test + public void testOverwrite() { + LongIntMap map = new LongIntMap(); + map.put(17, 42); + assertEquals(1, map.size()); + assertEquals("LongLongMap{17=42}", map.toString()); + assertEquals(42, map.get(17)); + map.put(17, 23); + assertEquals(1, map.size()); + assertEquals("LongLongMap{17=23}", map.toString()); + assertEquals(23, map.get(17)); + } + +} -- cgit v1.2.3