aboutsummaryrefslogtreecommitdiffstats
path: root/test/eu/equalparts/cardbase/cardstorage/ReferenceCardContainerTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'test/eu/equalparts/cardbase/cardstorage/ReferenceCardContainerTest.java')
-rw-r--r--test/eu/equalparts/cardbase/cardstorage/ReferenceCardContainerTest.java168
1 files changed, 168 insertions, 0 deletions
diff --git a/test/eu/equalparts/cardbase/cardstorage/ReferenceCardContainerTest.java b/test/eu/equalparts/cardbase/cardstorage/ReferenceCardContainerTest.java
new file mode 100644
index 0000000..bf49e2f
--- /dev/null
+++ b/test/eu/equalparts/cardbase/cardstorage/ReferenceCardContainerTest.java
@@ -0,0 +1,168 @@
+package eu.equalparts.cardbase.cardstorage;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.junit.rules.TemporaryFolder;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import eu.equalparts.cardbase.CardbaseTest;
+import eu.equalparts.cardbase.cards.Card;
+
+public class ReferenceCardContainerTest {
+
+ private ReferenceCardContainer uut;
+ private static Card testCard;
+
+ @Rule
+ public final ExpectedException exception = ExpectedException.none();
+
+ @Rule
+ public final TemporaryFolder tempFolder = new TemporaryFolder();
+
+ @BeforeClass
+ public static void setUpBeforeClass() throws Exception {
+ ObjectMapper mapper = new ObjectMapper();
+ testCard = mapper.readValue(CardbaseTest.class.getResourceAsStream("/shivandragon.json"), Card.class);
+ }
+
+ @Before
+ public void setUp() throws Exception {
+ uut = new ReferenceCardContainer();
+ }
+
+ /***********************************************************************************
+ * Adding card tests, happy path
+ ***********************************************************************************/
+ @Test
+ public void newCardIsAdded() throws Exception {
+ assertEquals("Container should not contain the test card to begin with.", 0, uut.getCount(testCard));
+
+ uut.addCard(testCard, 1);
+
+ assertEquals("Container should contain 1 test card.", 1, uut.getCount(testCard));
+ }
+
+ @Test
+ public void existingCardIsIncremented() throws Exception {
+ uut.addCard(testCard, 2);
+ uut.addCard(testCard, 4);
+
+ assertEquals("Card count was not updated correctly.", 6, uut.getCount(testCard));
+ }
+
+ /*
+ * Edge cases
+ */
+ @Test
+ public void cardAddedIsNull() throws Exception {
+ exception.expect(NullPointerException.class);
+ uut.addCard(null, 0);
+ }
+
+ /***********************************************************************************
+ * Removing card tests, happy path
+ ***********************************************************************************/
+ @Test
+ public void cardIsStillPresentIfRemoveCountIsLessThanCardCount() throws Exception {
+ uut.addCard(testCard, 5);
+
+ int removed = uut.removeCard(testCard, 3);
+
+ assertEquals("Card count was not updated correctly.", 2, uut.getCount(testCard));
+ assertEquals("Container reports wrong removed count.", 3, removed);
+ }
+
+ @Test
+ public void cardIsRemovedIfRemoveCountIsEqualToCardCount() throws Exception {
+ uut.addCard(testCard, 5);
+
+ int removed = uut.removeCard(testCard, 5);
+
+ assertEquals("Card was not removed from container.", 0, uut.getCount(testCard));
+ assertEquals("Container reports wrong removed count.", 5, removed);
+ }
+
+ @Test
+ public void cardIsRemovedIfRemoveCountIsGreaterThanCardCount() throws Exception {
+ uut.addCard(testCard, 3);
+
+ int removed = uut.removeCard(testCard, 5);
+
+ assertEquals("Card was not removed from container.", 0, uut.getCount(testCard));
+ assertEquals("Container reports wrong removed count.", 3, removed);
+ }
+
+ /*
+ * Edge cases
+ */
+ @Test
+ public void removedCardIsNull() throws Exception {
+ exception.expect(NullPointerException.class);
+ uut.removeCard(null, 0);
+ }
+
+ @Test
+ public void removedCardIsNotInContainer() throws Exception {
+ assertEquals("Card is not initially missing from container.", 0, uut.getCount(testCard));
+
+ int removed = uut.removeCard(testCard, 1);
+
+ assertEquals("Removed count should be 0.", 0, removed);
+ assertEquals("Card should still be missing from container.", 0, uut.getCount(testCard));
+ }
+
+ @Test
+ public void removedCountIsLessThanZero() throws Exception {
+ uut.addCard(testCard, 3);
+
+ int removed = uut.removeCard(testCard, -4);
+
+ assertEquals("Card count in container should be unchanged.", 3, uut.getCount(testCard));
+ assertEquals("Container reports wrong removed count.", 0, removed);
+ }
+
+ /***********************************************************************************
+ * Land tests
+ ***********************************************************************************/
+ @Test
+ public void containsIslands() throws Exception {
+ assertEquals(0, uut.getIslands());
+ uut.setIslands(5);
+ assertEquals(5, uut.getIslands());
+ }
+
+ @Test
+ public void containsPlains() throws Exception {
+ assertEquals(0, uut.getPlains());
+ uut.setPlains(5);
+ assertEquals(5, uut.getPlains());
+ }
+
+ @Test
+ public void containsSwamps() throws Exception {
+ assertEquals(0, uut.getSwamps());
+ uut.setSwamps(5);
+ assertEquals(5, uut.getSwamps());
+ }
+
+ @Test
+ public void containsMountains() throws Exception {
+ assertEquals(0, uut.getMountains());
+ uut.setMountains(5);
+ assertEquals(5, uut.getMountains());
+ }
+
+ @Test
+ public void containsForests() throws Exception {
+ assertEquals(0, uut.getForests());
+ uut.setForests(5);
+ assertEquals(5, uut.getForests());
+ }
+
+}