mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-15 22:41:30 +00:00
Add new use case conjured items
Refactor Method updateQuality
This commit is contained in:
parent
915afb12db
commit
724ab70dd6
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user