diff --git a/Java/pom.xml b/Java/pom.xml
index 3bd6aff8..6d28dd90 100644
--- a/Java/pom.xml
+++ b/Java/pom.xml
@@ -24,6 +24,12 @@
${junit.jupiter.version}
test
+
+ org.projectlombok
+ lombok
+ 1.18.28
+ provided
+
diff --git a/Java/src/main/java/com/gildedrose/GildedRose.java b/Java/src/main/java/com/gildedrose/GildedRose.java
index e6feb751..96338d8e 100644
--- a/Java/src/main/java/com/gildedrose/GildedRose.java
+++ b/Java/src/main/java/com/gildedrose/GildedRose.java
@@ -8,55 +8,43 @@ 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")) {
- if (items[i].quality > 0) {
- if (!items[i].name.equals("Sulfuras, Hand of Ragnaros")) {
- items[i].quality = items[i].quality - 1;
- }
+ Item item = items[i];
+
+ if (item.name.equals("Aged Brie")) {
+ item.quality = Math.min(50, item.quality + 1);
+
+ if (item.sellIn < 10) {
+ item.quality = Math.min(50, item.quality + 1);
}
- } else {
- 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].sellIn < 11) {
- if (items[i].quality < 50) {
- items[i].quality = items[i].quality + 1;
- }
- }
+ if (item.sellIn < 0) {
+ item.quality = Math.min(50, item.quality + 1);
+ }
+ } else if (item.name.equals("Backstage passes to a TAFKAL80ETC concert")) {
+ item.quality = Math.min(50, item.quality + 1);
- if (items[i].sellIn < 6) {
- if (items[i].quality < 50) {
- items[i].quality = items[i].quality + 1;
- }
- }
- }
+ if (item.sellIn < 11) {
+ item.quality = Math.min(50, item.quality + 2);
+ }
+
+ if (item.sellIn < 6) {
+ item.quality = Math.min(50, item.quality + 3);
+ }
+
+ if (item.sellIn < 0) {
+ item.quality = 0;
+ }
+ } else if (!item.name.equals("Sulfuras, Hand of Ragnaros")) {
+ item.quality = Math.max(0, item.quality - 1);
+
+ if (item.sellIn < 0) {
+ item.quality = Math.max(0, item.quality - 2);
}
}
- if (!items[i].name.equals("Sulfuras, Hand of Ragnaros")) {
- 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")) {
- if (items[i].quality > 0) {
- if (!items[i].name.equals("Sulfuras, Hand of Ragnaros")) {
- items[i].quality = items[i].quality - 1;
- }
- }
- } else {
- items[i].quality = items[i].quality - items[i].quality;
- }
- } else {
- if (items[i].quality < 50) {
- items[i].quality = items[i].quality + 1;
- }
- }
- }
+ item.sellIn= Math.max(0, item.sellIn -1);;
}
}
-}
\ No newline at end of file
+}
diff --git a/Java/src/main/java/com/gildedrose/Item.java b/Java/src/main/java/com/gildedrose/Item.java
index 465729ec..01b4b93c 100644
--- a/Java/src/main/java/com/gildedrose/Item.java
+++ b/Java/src/main/java/com/gildedrose/Item.java
@@ -1,12 +1,15 @@
package com.gildedrose;
+import lombok.Data;
+
+@Data
public class Item {
- public String name;
+ String name;
- public int sellIn;
+ int sellIn;
- public int quality;
+ int quality;
public Item(String name, int sellIn, int quality) {
this.name = name;
diff --git a/Java/src/test/java/com/gildedrose/GildedRoseTest.java b/Java/src/test/java/com/gildedrose/GildedRoseTest.java
index 8ae29eec..b908e294 100644
--- a/Java/src/test/java/com/gildedrose/GildedRoseTest.java
+++ b/Java/src/test/java/com/gildedrose/GildedRoseTest.java
@@ -11,7 +11,74 @@ class GildedRoseTest {
Item[] items = new Item[] { new Item("foo", 0, 0) };
GildedRose app = new GildedRose(items);
app.updateQuality();
- assertEquals("fixme", app.items[0].name);
+ assertEquals("foo", app.items[0].name);
}
+ @Test
+ public void agedBrieQualityIncreasesOverTime() {
+ Item agedBrie = new Item("Aged Brie", 10, 10);
+ GildedRose gildedRose = new GildedRose(new Item[]{agedBrie});
+ gildedRose.updateQuality();
+ assertEquals(11, agedBrie.quality);
+ }
+
+ @Test
+ public void backstagePassesQualityIncreasesOverTimeThenZeroesOut() {
+ Item backstagePasses = new Item("Backstage passes to a TAFKAL80ETC concert", 10, 10);
+ GildedRose gildedRose = new GildedRose(new Item[]{backstagePasses});
+ gildedRose.updateQuality();
+ assertEquals(13, backstagePasses.quality);
+
+ gildedRose.updateQuality();
+ assertEquals(16, backstagePasses.quality);
+
+ gildedRose.updateQuality();
+ assertEquals(19, backstagePasses.quality);
+
+ gildedRose.updateQuality();
+ assertEquals(22, backstagePasses.quality);
+ }
+
+ @Test
+ public void normalItemQualityDecreasesOverTime() {
+ Item normalItem = new Item("Conjured Mana Cake", 10, 10);
+ GildedRose gildedRose = new GildedRose(new Item[]{normalItem});
+ gildedRose.updateQuality();
+ assertEquals(9, normalItem.quality);
+ }
+
+ @Test
+ public void testUpdateQuality() {
+ Item[] items = new Item[]{
+ new Item("+5 Dexterity Vest", 10, 20),
+ new Item("Aged Brie", 2, 0),
+ new Item("Elixir of the Mongoose", 5, 7),
+ new Item("Sulfuras, Hand of Ragnaros", 0, 80),
+ new Item("Backstage passes to a TAFKAL80ETC concert", 15, 20),
+ new Item("Conjured Mana Cake", 3, 6)
+ };
+
+ GildedRose gildedRose = new GildedRose(items);
+ gildedRose.updateQuality();
+ assertEquals(9, gildedRose.items[0].sellIn);
+ assertEquals(19, gildedRose.items[0].quality);
+
+
+ assertEquals(1, gildedRose.items[1].sellIn);
+ assertEquals(2, gildedRose.items[1].quality);
+
+ assertEquals(4, gildedRose.items[2].sellIn);
+ assertEquals(6, gildedRose.items[2].quality);
+
+ assertEquals(0, gildedRose.items[3].sellIn);
+ assertEquals(80, gildedRose.items[3].quality);
+
+ assertEquals(14, gildedRose.items[4].sellIn);
+ assertEquals(21, gildedRose.items[4].quality);
+
+ assertEquals(2, gildedRose.items[5].sellIn);
+ assertEquals(5, gildedRose.items[5].quality);
+ }
+
+
}