From 4bf6facef36f2a7f5ae01bfff0d6d043910bcc9b Mon Sep 17 00:00:00 2001 From: pierre Date: Sat, 18 Feb 2023 16:35:16 +0100 Subject: [PATCH] feat: adding basic unit tests for the GildedRose.java class --- .../java/com/gildedrose/GildedRoseTest.java | 169 +++++++++++++++++- .../test/java/com/gildedrose/ItemTest.java | 15 ++ 2 files changed, 181 insertions(+), 3 deletions(-) create mode 100644 Java/src/test/java/com/gildedrose/ItemTest.java diff --git a/Java/src/test/java/com/gildedrose/GildedRoseTest.java b/Java/src/test/java/com/gildedrose/GildedRoseTest.java index 8ae29eec..7e9800bb 100644 --- a/Java/src/test/java/com/gildedrose/GildedRoseTest.java +++ b/Java/src/test/java/com/gildedrose/GildedRoseTest.java @@ -6,12 +6,175 @@ import static org.junit.jupiter.api.Assertions.assertEquals; class GildedRoseTest { + /** + * Set up basic Testing for the initial features and guidelines + */ + @Test - void foo() { - Item[] items = new Item[] { new Item("foo", 0, 0) }; + void itemDaysLeftDecreasesByONeAtEachIteration() { + Item[] items = new Item[]{new Item("Elixir of the Mongoose", 5, 7)}; GildedRose app = new GildedRose(items); app.updateQuality(); - assertEquals("fixme", app.items[0].name); + assertEquals("Elixir of the Mongoose", app.items[0].name); + System.out.println("Quality: " + app.items[0].sellIn); + assertEquals(4, app.items[0].sellIn); + app.updateQuality(); + assertEquals(3, app.items[0].sellIn); } + @Test + void itemQualityLeftDecreasesByOneAtEachIteration() { + Item[] items = new Item[]{new Item("Elixir of the Mongoose", 5, 7)}; + GildedRose app = new GildedRose(items); + app.updateQuality(); + assertEquals("Elixir of the Mongoose", app.items[0].name); + System.out.println("Quality: " + app.items[0].quality); + assertEquals(6, app.items[0].quality); + app.updateQuality(); + assertEquals(5, app.items[0].quality); + } + + @Test + void qualityDegradationSpeedAfterOneIterationWhenOutdated() { + System.out.println("Once the sell by date has passed, Quality degrades twice as fast"); + Item[] items = new Item[]{new Item("+5 Dexterity Vest", 0, 20)}; + GildedRose app = new GildedRose(items); + app.updateQuality(); + System.out.println("Quality: " + app.items[0].quality); + assertEquals(18, app.items[0].quality); + assertEquals("+5 Dexterity Vest", app.items[0].name); + } + + @Test + void qualityIteNeverNegatif() { + System.out.println("The Quality of an item is never negative"); + Item[] items = new Item[]{new Item("+5 Dexterity Vest", 10, 1)}; + GildedRose app = new GildedRose(items); + app.updateQuality(); + app.updateQuality(); + System.out.println("Quality: " + app.items[0].quality); + assertEquals(0, app.items[0].quality); + assertEquals("+5 Dexterity Vest", app.items[0].name); + } + + @Test + void agedBrieQualityIncreaseWthIteration() { + System.out.println("\"Aged Brie\" actually increases in Quality the older it gets"); + Item[] items = new Item[]{new Item("Aged Brie", 5, 0)}; + GildedRose app = new GildedRose(items); + app.updateQuality(); + app.updateQuality(); + assertEquals("Aged Brie", app.items[0].name); + System.out.println("Quality: " + app.items[0].quality); + assertEquals(2, app.items[0].quality); + app.updateQuality(); + assertEquals(3, app.items[0].quality); + } + + @Test + void qualityItemNoMore50() { + System.out.println("The Quality of an item is never more than 50"); + Item[] items = new Item[]{new Item("Aged Brie", 10, 49)}; + GildedRose app = new GildedRose(items); + assertEquals("Aged Brie", app.items[0].name); + app.updateQuality(); + System.out.println("Quality: " + app.items[0].quality); + assertEquals(50, app.items[0].quality); + app.updateQuality(); + assertEquals(50, app.items[0].quality); + + } + + @Test + void qualitySulfurasItemNoMore80() { + System.out.println("The \"Sulfuras\"'s Quality is never more than 80"); + Item[] items = new Item[]{new Item("Sulfuras, Hand of Ragnaros", 5, 80)}; + GildedRose app = new GildedRose(items); + assertEquals("Sulfuras, Hand of Ragnaros", app.items[0].name); + app.updateQuality(); + System.out.println("Quality: " + app.items[0].quality); + assertEquals(80, app.items[0].quality); + app.updateQuality(); + assertEquals(80, app.items[0].quality); + } + + + @Test + void itemSulfurasNotDecreasedQuality() { + System.out.println("\"Sulfuras\", being a legendary item, never decreases in Quality"); + Item[] items = new Item[]{new Item("Sulfuras, Hand of Ragnaros", 5, 79)}; + GildedRose app = new GildedRose(items); + assertEquals("Sulfuras, Hand of Ragnaros", app.items[0].name); + for (int i = 0; i < 10; i++) { + app.updateQuality(); + } + assertEquals(79, app.items[0].quality); + } + + @Test + void itemBackstageQualityIncreasesByTwoWhenTenDaysOrLess() { + System.out.println(" Quality increases by 2 when there are 10 days or less"); + Item[] items = new Item[]{ + new Item("Backstage passes to a TAFKAL80ETC concert", 10, 0), + new Item("Backstage passes to a TAFKAL80ETC concert", 9, 0), + new Item("Backstage passes to a TAFKAL80ETC concert", 8, 0) + }; + GildedRose app = new GildedRose(items); + app.updateQuality(); + for (int i = 0; i < 2; i++) { + assertEquals(2, app.items[i].quality); + } + } + + @Test + void itemBackstageQualityIncreasesByThreeWhenFiveDaysOrLess() { + System.out.println("Quality increases by 3 when there are 5 days or less"); + Item[] items = new Item[]{ + new Item("Backstage passes to a TAFKAL80ETC concert", 5, 3), + new Item("Backstage passes to a TAFKAL80ETC concert", 4, 3), + new Item("Backstage passes to a TAFKAL80ETC concert", 2, 3) + }; + GildedRose app = new GildedRose(items); + app.updateQuality(); + for (int i = 0; i < 2; i++) { + } + } + + /** + * Testing for "Conjured" items + */ + + + @Test + void itemConjuredQualityTwiceAsFastAsNormalItems() { + System.out.println("\"Conjured\" items degrade in Quality twice as fast as normal items"); + } + + + /** + * Testing for Selling items + */ + + @Test + void itemSold() { + Item[] items = new Item[]{ + new Item("+5 Dexterity Vest", 10, 20), + new Item("Aged Brie", 2, 0) + }; + // not yet implemented in the Class + } + + @Test + void itemSulfurasNotSold() { + System.out.println("\"Sulfuras\", being a legendary item, never has to be sold"); + // not yet implemented in the Class + } + + @Test + void itemBackstageQualityDropsToZeroAfterTheConcert() { + System.out.println("Quality drops to 0 after the concert"); + // not yet implemented in the Class + } + + } diff --git a/Java/src/test/java/com/gildedrose/ItemTest.java b/Java/src/test/java/com/gildedrose/ItemTest.java new file mode 100644 index 00000000..f1daea60 --- /dev/null +++ b/Java/src/test/java/com/gildedrose/ItemTest.java @@ -0,0 +1,15 @@ +package com.gildedrose; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +class ItemTest{ + + @Test + void toImplement() { + //todo testing the class + assertEquals(true,true); + } + + }