Add new use case conjured items

Refactor Method updateQuality
This commit is contained in:
Santiago Garcia 2020-09-29 17:47:03 -05:00
parent 915afb12db
commit 724ab70dd6
2 changed files with 85 additions and 45 deletions

View File

@ -2,6 +2,8 @@ package com.gildedrose;
class GildedRose {
Item[] items;
private final int MAX_DEFAULT_QUALITY = 50;
public GildedRose(Item[] items) {
this.items = items;
@ -9,54 +11,81 @@ 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;
}
}
reduceSellInItem(i);
if (isEspecialItem(items[i])) {
valueItems(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")) {
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;
}
}
}
}
devalueItems(i);
}
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;
}
}
qualityWhenDaysAreOver(i);
}
}
}
private void valueItems(int i) {
if (canIncreaseQuality(items[i].quality)) {
if (items[i].name.equals("Backstage passes to a TAFKAL80ETC concert")) {
increaseValueBackstage(i);
} else {
increaseQuality(i);
}
}
}
private void devalueItems(int i) {
if (items[i].name.equals("Conjured Mana Cake")) {
reduceQuality(i, 2);
} else {
reduceQuality(i, 1);
}
}
private void qualityWhenDaysAreOver(int i) {
if (items[i].name.equals("Aged Brie") && canIncreaseQuality(items[i].quality)) {
increaseQuality(i);
} else if (items[i].name.equals("Backstage passes to a TAFKAL80ETC concert")) {
items[i].quality = 0;
} else {
if (items[i].quality > 0 && !items[i].name.equals("Sulfuras, Hand of Ragnaros")) {
reduceQuality(i, 1);
}
}
}
private void reduceSellInItem(int i) {
if (!items[i].name.equals("Sulfuras, Hand of Ragnaros")) {
items[i].sellIn = items[i].sellIn - 1;
}
}
private void increaseValueBackstage(int i) {
increaseQuality(i);
if (items[i].sellIn < 11 && canIncreaseQuality(items[i].quality)) {
increaseQuality(i);
}
if (items[i].sellIn < 6 && canIncreaseQuality(items[i].quality)) {
increaseQuality(i);
}
}
private void increaseQuality(int i) {
items[i].quality = ++items[i].quality;
}
private boolean canIncreaseQuality(int quality) {
return quality < MAX_DEFAULT_QUALITY;
}
private boolean isEspecialItem(Item item) {
return item.name.equals("Aged Brie")
|| item.name.equals("Backstage passes to a TAFKAL80ETC concert") || item.name.equals("Sulfuras, Hand of Ragnaros");
}
private void reduceQuality(int i, int value) {
if (items[i].quality > 0) {
items[i].quality = items[i].quality - value;
}
}
}

View File

@ -16,9 +16,13 @@ class GildedRoseTest {
new Item("Sulfuras, Hand of Ragnaros", -1, 80),
new Item("Backstage passes to a TAFKAL80ETC concert", 15, 20),
new Item("Backstage passes to a TAFKAL80ETC concert", 10, 49),
new Item("Backstage passes to a TAFKAL80ETC concert", 5, 49)};
new Item("Backstage passes to a TAFKAL80ETC concert", 5, 47),
new Item("Backstage passes to a TAFKAL80ETC concert", 0, 47),
new Item("Conjured Mana Cake", 3, 6) };
GildedRose app = new GildedRose(items);
app.updateQuality();
assertEquals("+5 Dexterity Vest", app.items[0].name);
assertEquals(9, app.items[0].sellIn);
assertEquals(19, app.items[0].quality);
@ -43,6 +47,13 @@ class GildedRoseTest {
assertEquals("Backstage passes to a TAFKAL80ETC concert", app.items[7].name);
assertEquals(4, app.items[7].sellIn);
assertEquals(50, app.items[7].quality);
assertEquals("Backstage passes to a TAFKAL80ETC concert", app.items[8].name);
assertEquals(-1, app.items[8].sellIn);
assertEquals(0, app.items[8].quality);
assertEquals("Conjured Mana Cake", app.items[9].name);
assertEquals(2, app.items[9].sellIn);
assertEquals(4, app.items[9].quality);
}
}