From 035e6463265a270aa8ede7a9f77be11bfebe2528 Mon Sep 17 00:00:00 2001 From: pierre Date: Sun, 19 Feb 2023 13:16:32 +0100 Subject: [PATCH 01/13] refactor: moving up the gaurd clause for quality < 50 --- Java/src/main/java/com/gildedrose/GildedRose.java | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/Java/src/main/java/com/gildedrose/GildedRose.java b/Java/src/main/java/com/gildedrose/GildedRose.java index 2c0f88db..4d9966d8 100644 --- a/Java/src/main/java/com/gildedrose/GildedRose.java +++ b/Java/src/main/java/com/gildedrose/GildedRose.java @@ -24,17 +24,12 @@ class GildedRose { if (items[i].quality < 50) { items[i].quality = items[i].quality + 1; - if (items[i].name.equals("Backstage passes to a TAFKAL80ETC concert")) { + if (items[i].name.equals("Backstage passes to a TAFKAL80ETC concert") && (items[i].quality < 50)) { if (items[i].sellIn < 11) { - if (items[i].quality < 50) { items[i].quality = items[i].quality + 1; - } } - if (items[i].sellIn < 6) { - if (items[i].quality < 50) { items[i].quality = items[i].quality + 1; - } } } } From 379648a572f733edcab8c3c21b608a9eb1e90fb3 Mon Sep 17 00:00:00 2001 From: pierre Date: Sun, 19 Feb 2023 13:29:50 +0100 Subject: [PATCH 02/13] feat: adding a updateItem method to keep the code dry --- .../main/java/com/gildedrose/GildedRose.java | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/Java/src/main/java/com/gildedrose/GildedRose.java b/Java/src/main/java/com/gildedrose/GildedRose.java index 4d9966d8..37b1f209 100644 --- a/Java/src/main/java/com/gildedrose/GildedRose.java +++ b/Java/src/main/java/com/gildedrose/GildedRose.java @@ -12,13 +12,7 @@ class GildedRose { if (!items[i].name.equals("Aged Brie") && !items[i].name.equals("Backstage passes to a TAFKAL80ETC concert")) { if (items[i].quality > 0) { - if (!items[i].name.equals("Sulfuras, Hand of Ragnaros")) { - items[i].quality = items[i].quality - 1; - - if (items[i].name.equals("Conjured Mana Cake") && items[i].quality > 0) { - items[i].quality = items[i].quality - 1; - } - } + updateItem(items[i]); } } else { if (items[i].quality < 50) { @@ -43,13 +37,7 @@ class GildedRose { if (!items[i].name.equals("Aged Brie")) { if (!items[i].name.equals("Backstage passes to a TAFKAL80ETC concert")) { if (items[i].quality > 0) { - if (!items[i].name.equals("Sulfuras, Hand of Ragnaros")) { - items[i].quality = items[i].quality - 1; - - if (items[i].name.equals("Conjured Mana Cake") && items[i].quality > 0) { - items[i].quality = items[i].quality - 1; - } - } + updateItem(items[i]); } } else { items[i].quality = items[i].quality - items[i].quality; @@ -62,4 +50,16 @@ class GildedRose { } } } + public void updateItem(Item item){ + if (!item.name.equals("Sulfuras, Hand of Ragnaros")) { + item.quality = item.quality - 1; + + if (item.name.equals("Conjured Mana Cake") && item.quality > 0) { + item.quality = item.quality - 1; + } + } + + + } + } From a6e85220e84eccd4b7e90744445a0897ce231d46 Mon Sep 17 00:00:00 2001 From: pierre Date: Sun, 19 Feb 2023 13:48:51 +0100 Subject: [PATCH 03/13] test: fine tunings the test cases to improve clarity --- .../java/com/gildedrose/GildedRoseTest.java | 64 ++++++++----------- 1 file changed, 28 insertions(+), 36 deletions(-) diff --git a/Java/src/test/java/com/gildedrose/GildedRoseTest.java b/Java/src/test/java/com/gildedrose/GildedRoseTest.java index 4dacf34e..58156eef 100644 --- a/Java/src/test/java/com/gildedrose/GildedRoseTest.java +++ b/Java/src/test/java/com/gildedrose/GildedRoseTest.java @@ -81,15 +81,13 @@ class UpdateQualityTest { } @Test - void sellInValueCanNotBeNegatifForSulfuras() { - System.out.println("SellIn value of Sulfuras Item can not be negative bcse quality never decreases"); + void sellInValueCanNotChangeForSulfuras() { + System.out.println("SellIn value of Sulfuras Item can not change"); Item[] items = new Item[]{new Item("Sulfuras, Hand of Ragnaros", -1, 80)}; GildedRose app = new GildedRose(items); - int timeFrame = 10; - for (int i = 0; i < timeFrame; i++) { + for (int i = 0; i < 10; i++) { app.updateQuality(); } - assertEquals(80, app.items[0].quality); // if time is > 1 assertEquals(-1, app.items[0].sellIn); } @@ -119,43 +117,37 @@ class UpdateQualityTest { @Test - void qualityItemNoMore50() { - System.out.println("The Quality of an item is never more than 50"); + void qualityItemNoMore50ForAgedBrie() { + System.out.println("The Quality of Aged Brie 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)}; + void qualityItemNoMore50ForBackstage() { + System.out.println("The Quality of Backstage passes to a TAFKAL80ETC concert item is never more than 50"); + Item[] items = new Item[]{new Item("Backstage passes to a TAFKAL80ETC concert", 10, 49)}; 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); + assertEquals(50, app.items[0].quality); app.updateQuality(); - assertEquals(80, app.items[0].quality); + assertEquals(50, app.items[0].quality); } - @Test void itemSulfurasNotChangeQuality() { System.out.println("\"Sulfuras\", being a legendary item, never decreases in Quality and stays the same"); - Item[] items = new Item[]{new Item("Sulfuras, Hand of Ragnaros", 5, 44)}; + Item[] items = new Item[]{new Item("Sulfuras, Hand of Ragnaros", 5, 55)}; GildedRose app = new GildedRose(items); assertEquals("Sulfuras, Hand of Ragnaros", app.items[0].name); for (int i = 0; i < 10; i++) { app.updateQuality(); } - assertEquals(44, app.items[0].quality); + assertEquals(55, app.items[0].quality); } @Test @@ -164,13 +156,14 @@ class UpdateQualityTest { 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) + new Item("Backstage passes to a TAFKAL80ETC concert", 8, 49) }; GildedRose app = new GildedRose(items); app.updateQuality(); - for (int i = 0; i < 2; i++) { - assertEquals(2, app.items[i].quality); - } + assertEquals(2, app.items[0].quality); + assertEquals(2, app.items[1].quality); + assertEquals(50, app.items[2].quality); + } @Test @@ -179,13 +172,13 @@ class UpdateQualityTest { 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) + new Item("Backstage passes to a TAFKAL80ETC concert", 2, 49) }; GildedRose app = new GildedRose(items); app.updateQuality(); - for (int i = 0; i < 2; i++) { - assertEquals(6, app.items[i].quality); - } + assertEquals(6, app.items[0].quality); + assertEquals(6, app.items[1].quality); + assertEquals(50, app.items[2].quality); } @@ -194,14 +187,15 @@ class UpdateQualityTest { System.out.println("Quality drops to 0 after the concert"); Item[] items = new Item[]{ new Item("Backstage passes to a TAFKAL80ETC concert", 0, 2), - new Item("Backstage passes to a TAFKAL80ETC concert", 0, 3), - new Item("Backstage passes to a TAFKAL80ETC concert", 0, 7) + new Item("Backstage passes to a TAFKAL80ETC concert", 0, 11), + new Item("Backstage passes to a TAFKAL80ETC concert", 0, 48) }; GildedRose app = new GildedRose(items); app.updateQuality(); - for (Item el : items) { - assertEquals(0, el.quality); - } + assertEquals(0, app.items[0].quality); + assertEquals(0, app.items[1].quality); + assertEquals(0, app.items[2].quality); + } @Test @@ -212,9 +206,7 @@ class UpdateQualityTest { }; GildedRose app = new GildedRose(items); app.updateQuality(); - for (Item el : items) { - assertEquals(0, el.quality); - } + assertEquals(0, app.items[0].quality); } /** From 0514a8ea6704d07977d67839e398c4df85352b4d Mon Sep 17 00:00:00 2001 From: pierre Date: Sun, 19 Feb 2023 13:53:35 +0100 Subject: [PATCH 04/13] test: changing the assert value --- Java/src/test/java/com/gildedrose/GildedRoseTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Java/src/test/java/com/gildedrose/GildedRoseTest.java b/Java/src/test/java/com/gildedrose/GildedRoseTest.java index 58156eef..a58afd68 100644 --- a/Java/src/test/java/com/gildedrose/GildedRoseTest.java +++ b/Java/src/test/java/com/gildedrose/GildedRoseTest.java @@ -156,7 +156,7 @@ class UpdateQualityTest { 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, 49) + new Item("Backstage passes to a TAFKAL80ETC concert", 8, 48) }; GildedRose app = new GildedRose(items); app.updateQuality(); @@ -172,7 +172,7 @@ class UpdateQualityTest { 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, 49) + new Item("Backstage passes to a TAFKAL80ETC concert", 3, 48) }; GildedRose app = new GildedRose(items); app.updateQuality(); From 15f4d079a6e8c4db0e497c6cd3e69714b44a31e6 Mon Sep 17 00:00:00 2001 From: pierre Date: Sun, 19 Feb 2023 14:07:23 +0100 Subject: [PATCH 05/13] refactor: adding a guard clause in the updateItem method --- .../main/java/com/gildedrose/GildedRose.java | 34 ++++++++----------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/Java/src/main/java/com/gildedrose/GildedRose.java b/Java/src/main/java/com/gildedrose/GildedRose.java index 37b1f209..e3eaa77c 100644 --- a/Java/src/main/java/com/gildedrose/GildedRose.java +++ b/Java/src/main/java/com/gildedrose/GildedRose.java @@ -11,19 +11,17 @@ class GildedRose { for (int i = 0; i < items.length; i++) { if (!items[i].name.equals("Aged Brie") && !items[i].name.equals("Backstage passes to a TAFKAL80ETC concert")) { - if (items[i].quality > 0) { - updateItem(items[i]); - } + updateItem(items[i]); } else { if (items[i].quality < 50) { items[i].quality = items[i].quality + 1; - if (items[i].name.equals("Backstage passes to a TAFKAL80ETC concert") && (items[i].quality < 50)) { - if (items[i].sellIn < 11) { - items[i].quality = items[i].quality + 1; + if (items[i].name.equals("Backstage passes to a TAFKAL80ETC concert")) { + if (items[i].sellIn < 11 && items[i].quality < 50) { + items[i].quality = items[i].quality + 1; } - if (items[i].sellIn < 6) { - items[i].quality = items[i].quality + 1; + if (items[i].sellIn < 6 && items[i].quality < 50) { + items[i].quality = items[i].quality + 1; } } } @@ -36,9 +34,7 @@ class GildedRose { if (items[i].sellIn < 0) { if (!items[i].name.equals("Aged Brie")) { if (!items[i].name.equals("Backstage passes to a TAFKAL80ETC concert")) { - if (items[i].quality > 0) { - updateItem(items[i]); - } + updateItem(items[i]); } else { items[i].quality = items[i].quality - items[i].quality; } @@ -50,16 +46,16 @@ class GildedRose { } } } - public void updateItem(Item item){ - if (!item.name.equals("Sulfuras, Hand of Ragnaros")) { - item.quality = item.quality - 1; - if (item.name.equals("Conjured Mana Cake") && item.quality > 0) { - item.quality = item.quality - 1; - } - } + public void updateItem(Item item) { + if (item.quality > 0 & !item.name.equals("Sulfuras, Hand of Ragnaros")) { + item.quality = item.quality - 1; + if (item.name.equals("Conjured Mana Cake") && item.quality > 0) { + item.quality = item.quality - 1; + } + } - } + } } From 7473f39aece68f647aa610e009d54a7f4accbb7d Mon Sep 17 00:00:00 2001 From: pierre Date: Sun, 19 Feb 2023 14:46:19 +0100 Subject: [PATCH 06/13] refactor: improving the if/else decision to avoid Logical NOT operator and ease the code comprehension --- .../main/java/com/gildedrose/GildedRose.java | 25 ++++++++++++------- .../java/com/gildedrose/GildedRoseTest.java | 3 ++- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/Java/src/main/java/com/gildedrose/GildedRose.java b/Java/src/main/java/com/gildedrose/GildedRose.java index e3eaa77c..0b6a99b5 100644 --- a/Java/src/main/java/com/gildedrose/GildedRose.java +++ b/Java/src/main/java/com/gildedrose/GildedRose.java @@ -9,10 +9,9 @@ class GildedRose { public void updateQuality() { for (int i = 0; i < items.length; i++) { - if (!items[i].name.equals("Aged Brie") - && !items[i].name.equals("Backstage passes to a TAFKAL80ETC concert")) { - updateItem(items[i]); - } else { + // first if defnie what should decrease and what should increase + if (items[i].name.equals("Backstage passes to a TAFKAL80ETC concert") | + items[i].name.equals("Aged Brie")) { if (items[i].quality < 50) { items[i].quality = items[i].quality + 1; @@ -25,6 +24,14 @@ class GildedRose { } } } + } else { + if (items[i].quality > 0 & !items[i].name.equals("Sulfuras, Hand of Ragnaros")) { + items[i].quality = items[i].quality - 1; + + if (items[i].name.equals("Conjured Mana Cake") & items[i].quality > 0) { + items[i].quality = items[i].quality - 1; + } + } } if (!items[i].name.equals("Sulfuras, Hand of Ragnaros")) { @@ -48,12 +55,12 @@ class GildedRose { } public void updateItem(Item item) { - if (item.quality > 0 & !item.name.equals("Sulfuras, Hand of Ragnaros")) { - item.quality = item.quality - 1; + if (item.quality > 0 & !item.name.equals("Sulfuras, Hand of Ragnaros")) { + item.quality = item.quality - 1; - if (item.name.equals("Conjured Mana Cake") && item.quality > 0) { - item.quality = item.quality - 1; - } + if (item.name.equals("Conjured Mana Cake") && item.quality > 0) { + item.quality = item.quality - 1; + } } } diff --git a/Java/src/test/java/com/gildedrose/GildedRoseTest.java b/Java/src/test/java/com/gildedrose/GildedRoseTest.java index a58afd68..8d64c25e 100644 --- a/Java/src/test/java/com/gildedrose/GildedRoseTest.java +++ b/Java/src/test/java/com/gildedrose/GildedRoseTest.java @@ -54,7 +54,7 @@ class UpdateQualityTest { } @Test - void qualityItemNeverNegatif() { + void qualityItemNeverNegative() { System.out.println("The Quality of an item is never negative"); Item[] items = new Item[]{ new Item("+5 Dexterity Vest", 10, 1), @@ -63,6 +63,7 @@ class UpdateQualityTest { GildedRose app = new GildedRose(items); app.updateQuality(); app.updateQuality(); + System.out.println(app.items[0].quality); assertEquals(0, app.items[0].quality); assertEquals(0, app.items[1].quality); } From 6154339c39e1cf6bea7eae31f4c88d6f54031738 Mon Sep 17 00:00:00 2001 From: pierre Date: Sun, 19 Feb 2023 15:04:49 +0100 Subject: [PATCH 07/13] refactor: simplifying the condition when the SellIn value is negative --- .../main/java/com/gildedrose/GildedRose.java | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/Java/src/main/java/com/gildedrose/GildedRose.java b/Java/src/main/java/com/gildedrose/GildedRose.java index 0b6a99b5..aa76cc32 100644 --- a/Java/src/main/java/com/gildedrose/GildedRose.java +++ b/Java/src/main/java/com/gildedrose/GildedRose.java @@ -34,22 +34,27 @@ class GildedRose { } } - if (!items[i].name.equals("Sulfuras, Hand of Ragnaros")) { + if (!items[i].name.equals("Sulfuras, Hand of Ragnaros")) { // continue items[i].sellIn = items[i].sellIn - 1; } if (items[i].sellIn < 0) { - if (!items[i].name.equals("Aged Brie")) { - if (!items[i].name.equals("Backstage passes to a TAFKAL80ETC concert")) { - updateItem(items[i]); - } else { - items[i].quality = items[i].quality - items[i].quality; - } - } else { + if (items[i].name.equals("Aged Brie")) { + if (items[i].quality < 50) { items[i].quality = items[i].quality + 1; } + } + if (items[i].name.equals("+5 Dexterity Vest") | items[i].name.equals("Elixir of the Mongoose") | + items[i].name.equals("Conjured Mana Cake")) { + updateItem(items[i]); + } + if (items[i].name.equals("Backstage passes to a TAFKAL80ETC concert")) { + items[i].quality = items[i].quality - items[i].quality; + } + + } } } From e326caf567e70b588459fe77a5f30ec1a407f5e5 Mon Sep 17 00:00:00 2001 From: pierre Date: Sun, 19 Feb 2023 15:12:49 +0100 Subject: [PATCH 08/13] refactor: adding a guard clause for Sulfuras item to avoid to check later on --- .../main/java/com/gildedrose/GildedRose.java | 30 ++++++++----------- 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/Java/src/main/java/com/gildedrose/GildedRose.java b/Java/src/main/java/com/gildedrose/GildedRose.java index aa76cc32..6f844b94 100644 --- a/Java/src/main/java/com/gildedrose/GildedRose.java +++ b/Java/src/main/java/com/gildedrose/GildedRose.java @@ -9,6 +9,12 @@ class GildedRose { public void updateQuality() { for (int i = 0; i < items.length; i++) { + + // to avoid to have to check it later on + if (items[i].name.equals("Sulfuras, Hand of Ragnaros")) { + continue; + } + // first if defnie what should decrease and what should increase if (items[i].name.equals("Backstage passes to a TAFKAL80ETC concert") | items[i].name.equals("Aged Brie")) { @@ -25,44 +31,32 @@ class GildedRose { } } } else { - if (items[i].quality > 0 & !items[i].name.equals("Sulfuras, Hand of Ragnaros")) { - items[i].quality = items[i].quality - 1; - - if (items[i].name.equals("Conjured Mana Cake") & items[i].quality > 0) { - items[i].quality = items[i].quality - 1; - } - } + updateNormalAndConjuredItem(items[i]); } - if (!items[i].name.equals("Sulfuras, Hand of Ragnaros")) { // continue - items[i].sellIn = items[i].sellIn - 1; - } + items[i].sellIn = items[i].sellIn - 1; if (items[i].sellIn < 0) { - if (items[i].name.equals("Aged Brie")) { + if (items[i].name.equals("Aged Brie")) { if (items[i].quality < 50) { items[i].quality = items[i].quality + 1; } - } if (items[i].name.equals("+5 Dexterity Vest") | items[i].name.equals("Elixir of the Mongoose") | items[i].name.equals("Conjured Mana Cake")) { - updateItem(items[i]); + updateNormalAndConjuredItem(items[i]); } if (items[i].name.equals("Backstage passes to a TAFKAL80ETC concert")) { items[i].quality = items[i].quality - items[i].quality; } - - } } } - public void updateItem(Item item) { - if (item.quality > 0 & !item.name.equals("Sulfuras, Hand of Ragnaros")) { + public void updateNormalAndConjuredItem(Item item) { + if (item.quality > 0) { item.quality = item.quality - 1; - if (item.name.equals("Conjured Mana Cake") && item.quality > 0) { item.quality = item.quality - 1; } From c68e0b3dcda48b28c0bc2122dc0a4643ae804e4c Mon Sep 17 00:00:00 2001 From: pierre Date: Sun, 19 Feb 2023 15:13:36 +0100 Subject: [PATCH 09/13] chore: improving comments for better clarity --- Java/src/main/java/com/gildedrose/GildedRose.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Java/src/main/java/com/gildedrose/GildedRose.java b/Java/src/main/java/com/gildedrose/GildedRose.java index 6f844b94..1b9a0474 100644 --- a/Java/src/main/java/com/gildedrose/GildedRose.java +++ b/Java/src/main/java/com/gildedrose/GildedRose.java @@ -15,7 +15,7 @@ class GildedRose { continue; } - // first if defnie what should decrease and what should increase + // first we define what should increase and what should decrease if (items[i].name.equals("Backstage passes to a TAFKAL80ETC concert") | items[i].name.equals("Aged Brie")) { if (items[i].quality < 50) { From f6f99c1cef855aebc83ab58c9d03c8b6012199fd Mon Sep 17 00:00:00 2001 From: pierre Date: Sun, 19 Feb 2023 15:29:26 +0100 Subject: [PATCH 10/13] test; adding a new test cases --- .../java/com/gildedrose/GildedRoseTest.java | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/Java/src/test/java/com/gildedrose/GildedRoseTest.java b/Java/src/test/java/com/gildedrose/GildedRoseTest.java index 8d64c25e..22b93710 100644 --- a/Java/src/test/java/com/gildedrose/GildedRoseTest.java +++ b/Java/src/test/java/com/gildedrose/GildedRoseTest.java @@ -69,8 +69,8 @@ class UpdateQualityTest { } @Test - void sellInValueCanBeNegative() { - System.out.println("SellIn value of an Item can be negative until quality reach zero"); + void sellInValueCanBeNegativeStartAtZero() { + System.out.println("SellIn value of an Item can be negative until quality reach zero: start with a zero sellin Value"); Item[] items = new Item[]{new Item("+5 Dexterity Vest", 0, 30)}; GildedRose app = new GildedRose(items); int timeFrame = 10; @@ -81,6 +81,19 @@ class UpdateQualityTest { assertEquals(-timeFrame, app.items[0].sellIn); } + @Test + void sellInValueCanBeNegativeStartNegativeSellInValue() { + System.out.println("SellIn value of an Item can be until quality reach zero: start with a negative sellinValue"); + Item[] items = new Item[]{new Item("+5 Dexterity Vest", -5, 30)}; + GildedRose app = new GildedRose(items); + int timeFrame = 10; + for (int i = 0; i < timeFrame; i++) { + app.updateQuality(); + } + assertEquals(10, app.items[0].quality); + assertEquals(-5 -timeFrame, app.items[0].sellIn); + } + @Test void sellInValueCanNotChangeForSulfuras() { System.out.println("SellIn value of Sulfuras Item can not change"); @@ -207,7 +220,7 @@ class UpdateQualityTest { }; GildedRose app = new GildedRose(items); app.updateQuality(); - assertEquals(0, app.items[0].quality); + assertEquals(0, app.items[0].quality); } /** From 557ba0eb73053d114e1efa66af484ecff47d6bda Mon Sep 17 00:00:00 2001 From: pierre Date: Sun, 19 Feb 2023 15:30:17 +0100 Subject: [PATCH 11/13] chore: cleaning the class GildedRose.java --- .../src/main/java/com/gildedrose/GildedRose.java | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/Java/src/main/java/com/gildedrose/GildedRose.java b/Java/src/main/java/com/gildedrose/GildedRose.java index 1b9a0474..0c285a8f 100644 --- a/Java/src/main/java/com/gildedrose/GildedRose.java +++ b/Java/src/main/java/com/gildedrose/GildedRose.java @@ -31,21 +31,20 @@ class GildedRose { } } } else { - updateNormalAndConjuredItem(items[i]); + updateNormalAndConjuredItems(items[i]); } items[i].sellIn = items[i].sellIn - 1; if (items[i].sellIn < 0) { - if (items[i].name.equals("Aged Brie")) { - if (items[i].quality < 50) { - items[i].quality = items[i].quality + 1; - } + if (items[i].name.equals("Aged Brie") && items[i].quality < 50) { + items[i].quality = items[i].quality + 1; } - if (items[i].name.equals("+5 Dexterity Vest") | items[i].name.equals("Elixir of the Mongoose") | + + if (items[i].name.equals("+5 Dexterity Vest") || items[i].name.equals("Elixir of the Mongoose") || items[i].name.equals("Conjured Mana Cake")) { - updateNormalAndConjuredItem(items[i]); + updateNormalAndConjuredItems(items[i]); } if (items[i].name.equals("Backstage passes to a TAFKAL80ETC concert")) { items[i].quality = items[i].quality - items[i].quality; @@ -54,14 +53,13 @@ class GildedRose { } } - public void updateNormalAndConjuredItem(Item item) { + private void updateNormalAndConjuredItems(Item item) { if (item.quality > 0) { item.quality = item.quality - 1; if (item.name.equals("Conjured Mana Cake") && item.quality > 0) { item.quality = item.quality - 1; } } - } } From 2935556281d27db7a15fcf9aac1805341c76429b Mon Sep 17 00:00:00 2001 From: pierre Date: Sun, 19 Feb 2023 15:44:18 +0100 Subject: [PATCH 12/13] test: adding some more test case to increase coverage --- .../java/com/gildedrose/GildedRoseTest.java | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/Java/src/test/java/com/gildedrose/GildedRoseTest.java b/Java/src/test/java/com/gildedrose/GildedRoseTest.java index 22b93710..92586e0c 100644 --- a/Java/src/test/java/com/gildedrose/GildedRoseTest.java +++ b/Java/src/test/java/com/gildedrose/GildedRoseTest.java @@ -68,6 +68,25 @@ class UpdateQualityTest { assertEquals(0, app.items[1].quality); } + @Test + void sellInValueIsOneForNormalItem() { + System.out.println("Normal item SellIn value is one to test if statement limit for negative value"); + Item[] items = new Item[]{new Item("+5 Dexterity Vest", 1, 30)}; + GildedRose app = new GildedRose(items); + app.updateQuality(); + assertEquals(29, app.items[0].quality); + assertEquals(0, app.items[0].sellIn); + } + + @Test + void sellInValueIsOneForAgedBrie() { + System.out.println("Aged Brie item SellIn value is one to test if statement limit for negative value"); + Item[] items = new Item[]{new Item("Aged Brie", 1, 30)}; + GildedRose app = new GildedRose(items); + app.updateQuality(); + assertEquals(31, app.items[0].quality); //new Item("Aged Brie", 2, 0), + assertEquals(0, app.items[0].sellIn); + } @Test void sellInValueCanBeNegativeStartAtZero() { System.out.println("SellIn value of an Item can be negative until quality reach zero: start with a zero sellin Value"); @@ -96,7 +115,7 @@ class UpdateQualityTest { @Test void sellInValueCanNotChangeForSulfuras() { - System.out.println("SellIn value of Sulfuras Item can not change"); + System.out.println("SellIn value of Sulfuras Item can not change"); Item[] items = new Item[]{new Item("Sulfuras, Hand of Ragnaros", -1, 80)}; GildedRose app = new GildedRose(items); for (int i = 0; i < 10; i++) { From 1f1275f4db93e639175c817ffa9158dcb387c36f Mon Sep 17 00:00:00 2001 From: pierre Date: Sun, 19 Feb 2023 15:45:20 +0100 Subject: [PATCH 13/13] refactor: improving the placement of the SellIn Counter to make the placement more intuitive --- Java/src/main/java/com/gildedrose/GildedRose.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Java/src/main/java/com/gildedrose/GildedRose.java b/Java/src/main/java/com/gildedrose/GildedRose.java index 0c285a8f..cfd0cdac 100644 --- a/Java/src/main/java/com/gildedrose/GildedRose.java +++ b/Java/src/main/java/com/gildedrose/GildedRose.java @@ -34,9 +34,7 @@ class GildedRose { updateNormalAndConjuredItems(items[i]); } - items[i].sellIn = items[i].sellIn - 1; - - if (items[i].sellIn < 0) { + if (items[i].sellIn <= 0) { if (items[i].name.equals("Aged Brie") && items[i].quality < 50) { items[i].quality = items[i].quality + 1; @@ -50,6 +48,7 @@ class GildedRose { items[i].quality = items[i].quality - items[i].quality; } } + items[i].sellIn = items[i].sellIn - 1; } }