From 6147b678a34b3999198a0dd7a5ed49a8d284f8a0 Mon Sep 17 00:00:00 2001 From: Sallah Kokaina Date: Fri, 1 Nov 2019 17:15:02 +0100 Subject: [PATCH] Backstage passes unit test --- Java/README.md | 4 +- .../java/com/gildedrose/GildedRoseTest.java | 57 +++++++++++++++---- 2 files changed, 49 insertions(+), 12 deletions(-) diff --git a/Java/README.md b/Java/README.md index 90542d9c..c82c421f 100644 --- a/Java/README.md +++ b/Java/README.md @@ -16,8 +16,8 @@ -[x] The Quality of an item is never more than 50 -[x] "Sulfuras", being a legendary item, never has to be sold or decreases in Quality -[x] "Backstage passes", like aged brie, increases in Quality as its SellIn value approaches; --[ ] Quality increases by 2 when there are 10 days or less and by 3 when there are 5 days or less but --[ ] Quality drops to 0 after the concert + -[x] Quality increases by 2 when there are 10 days or less and by 3 when there are 5 days or less but + -[x] Quality drops to 0 after the concert -[ ] an item can never have its Quality increase above 50, however "Sulfuras" is a legendary item and as such its Quality is 80 and it never alters. ## Technical Issues, with a balanced priority diff --git a/Java/src/test/java/com/gildedrose/GildedRoseTest.java b/Java/src/test/java/com/gildedrose/GildedRoseTest.java index 1eac5f30..2ec1d3de 100644 --- a/Java/src/test/java/com/gildedrose/GildedRoseTest.java +++ b/Java/src/test/java/com/gildedrose/GildedRoseTest.java @@ -3,13 +3,14 @@ package com.gildedrose; import static org.junit.jupiter.api.Assertions.*; import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; public class GildedRoseTest { @Test public void foo() { - Item[] items = new Item[] { new Item("foo", 0, 0) }; + Item[] items = new Item[]{new Item("foo", 0, 0)}; GildedRose app = new GildedRose(items); app.updateQuality(); assertEquals("foo", app.items[0].name); @@ -17,8 +18,8 @@ public class GildedRoseTest { @Test @DisplayName("At the end of each day our system lowers both values for every item") - public void shouldLowerBothValues(){ - Item[] items = new Item[] { TestHelper.getItem("foobar", 2, 2) }; + public void shouldLowerBothValues() { + Item[] items = new Item[]{TestHelper.getItem("foobar", 2, 2)}; GildedRose app = new GildedRose(items); app.updateQuality(); assertEquals(1, app.items[0].quality); @@ -27,8 +28,8 @@ public class GildedRoseTest { @Test @DisplayName("Once the sell by date has passed (<=0), Quality degrades twice as fast") - public void shouldDowngradeTwiceAsFastAfterSellDate(){ - Item[] items = new Item[] { TestHelper.getItem("foobar", 1, 5) }; + public void shouldDowngradeTwiceAsFastAfterSellDate() { + Item[] items = new Item[]{TestHelper.getItem("foobar", 1, 5)}; GildedRose app = new GildedRose(items); //day 1, drop by 1 @@ -60,7 +61,7 @@ public class GildedRoseTest { @Test @DisplayName("\"Aged Brie\" actually increases in Quality by 2 the older it gets") - public void shouldSeeAgedBrieIncreasedQualityDayByDay(){ + public void shouldSeeAgedBrieIncreasedQualityDayByDay() { Item[] items = new Item[]{TestHelper.getItem("Aged Brie", 0, 0)}; GildedRose app = new GildedRose(items); @@ -75,7 +76,7 @@ public class GildedRoseTest { @Test @DisplayName("The Quality of an item is never more than 50") - public void shouldNeverHaveQualityHigherThan50(){ + public void shouldNeverHaveQualityHigherThan50() { Item[] items = new Item[]{TestHelper.getItem("Aged Brie", 0, 49)}; GildedRose app = new GildedRose(items); @@ -91,7 +92,7 @@ public class GildedRoseTest { //Sulfuras, Hand of Ragnaros @Test @DisplayName("\"Sulfuras\", being a legendary item, never has to be sold or decreases in Quality") - public void shouldNotChangeSulfurasSellInAndQualityValues(){ + public void shouldNotChangeSulfurasSellInAndQualityValues() { Item[] items = new Item[]{TestHelper.getItem("Sulfuras, Hand of Ragnaros", 0, 10)}; GildedRose app = new GildedRose(items); @@ -108,7 +109,7 @@ public class GildedRoseTest { @Test @DisplayName("\"Backstage passes\", like aged brie, increases in Quality as its SellIn value approaches") - public void shouldDo(){ + public void shouldIncreaseQualityForBrieWhenSellInReduces() { Item[] items = new Item[]{TestHelper.getItem("Backstage passes to a TAFKAL80ETC concert", 5, 10)}; GildedRose app = new GildedRose(items); @@ -123,4 +124,40 @@ public class GildedRoseTest { assertEquals(3, app.items[0].sellIn); } -} + @Nested + @DisplayName("Backstage passes") + class BaskstagePasses{ + @Test + @DisplayName("Quality increases by 2 when there are 10 days or less and by 3 when there are 5 days or less but") + public void shouldIncreaseQualityBasedOnSellIn() { + Item[] items = new Item[]{ + TestHelper.getItem("Backstage passes to a TAFKAL80ETC concert", 10, 10), + TestHelper.getItem("Backstage passes to a TAFKAL80ETC concert", 5, 10) + }; + GildedRose app = new GildedRose(items); + + app.updateQuality(); + assertEquals(12, app.items[0].quality); + assertEquals(9, app.items[0].sellIn); + + assertEquals(13, app.items[1].quality); + assertEquals(4, app.items[1].sellIn); + } + + @Test + @DisplayName("Quality drops to 0 after the concert") + public void shouldHaveQualityDroppingToZeroAfterConcert(){ + Item[] items = new Item[]{ + TestHelper.getItem("Backstage passes to a TAFKAL80ETC concert", 0, 10) + }; + + GildedRose app = new GildedRose(items); + + app.updateQuality(); + assertEquals(0, app.items[0].quality); + assertEquals(-1, app.items[0].sellIn); + } + } + + +} \ No newline at end of file