mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-17 15:31:27 +00:00
Implement conjured
This commit is contained in:
parent
79a430019f
commit
cb1aa70657
12
Java/src/main/java/com/gildedrose/ConjuredItemHandler.java
Normal file
12
Java/src/main/java/com/gildedrose/ConjuredItemHandler.java
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
package com.gildedrose;
|
||||||
|
|
||||||
|
public class ConjuredItemHandler extends ItemHandler {
|
||||||
|
@Override
|
||||||
|
public void handleDay(Item item) {
|
||||||
|
item.quality -= 2;
|
||||||
|
item.sellIn -= 1;
|
||||||
|
if (item.sellIn < 0) {
|
||||||
|
item.quality -= 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -13,6 +13,8 @@ class GildedRose {
|
|||||||
SulfurasItemHandler.class,
|
SulfurasItemHandler.class,
|
||||||
ItemType.BACKSTAGE_PASSES,
|
ItemType.BACKSTAGE_PASSES,
|
||||||
BackstagePassesItemHandler.class,
|
BackstagePassesItemHandler.class,
|
||||||
|
ItemType.CONJURED,
|
||||||
|
ConjuredItemHandler.class,
|
||||||
ItemType.GENERIC,
|
ItemType.GENERIC,
|
||||||
GenericItemHandler.class
|
GenericItemHandler.class
|
||||||
);
|
);
|
||||||
|
|||||||
@ -2,5 +2,6 @@ package com.gildedrose;
|
|||||||
|
|
||||||
public abstract class ItemHandler {
|
public abstract class ItemHandler {
|
||||||
|
|
||||||
public void handleDay(Item item) {}
|
public void handleDay(Item item) {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -6,6 +6,7 @@ public enum ItemType {
|
|||||||
AGED_BRIE("Aged Brie"),
|
AGED_BRIE("Aged Brie"),
|
||||||
SULFURAS("Sulfuras, Hand of Ragnaros"),
|
SULFURAS("Sulfuras, Hand of Ragnaros"),
|
||||||
BACKSTAGE_PASSES("Backstage passes to a TAFKAL80ETC concert"),
|
BACKSTAGE_PASSES("Backstage passes to a TAFKAL80ETC concert"),
|
||||||
|
CONJURED("Conjured Mana Cake"),
|
||||||
GENERIC("Generic item");
|
GENERIC("Generic item");
|
||||||
|
|
||||||
private final String displayName;
|
private final String displayName;
|
||||||
|
|||||||
@ -12,9 +12,9 @@ class GildedRoseTest {
|
|||||||
Item[] items = new Item[]{new Item(ItemType.AGED_BRIE.getDisplayName(), 2, 0)};
|
Item[] items = new Item[]{new Item(ItemType.AGED_BRIE.getDisplayName(), 2, 0)};
|
||||||
GildedRose app = new GildedRose(items);
|
GildedRose app = new GildedRose(items);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).quality, 1);
|
assertEquals(1, app.items.get(0).quality);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).quality, 2);
|
assertEquals(2, app.items.get(0).quality);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -25,9 +25,9 @@ class GildedRoseTest {
|
|||||||
};
|
};
|
||||||
GildedRose app = new GildedRose(items);
|
GildedRose app = new GildedRose(items);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).sellIn, sellIn);
|
assertEquals(sellIn, app.items.get(0).sellIn);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).sellIn, sellIn);
|
assertEquals(sellIn, app.items.get(0).sellIn);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -37,9 +37,9 @@ class GildedRoseTest {
|
|||||||
};
|
};
|
||||||
GildedRose app = new GildedRose(items);
|
GildedRose app = new GildedRose(items);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).quality, SULFURAS_QUALITY);
|
assertEquals(SULFURAS_QUALITY, app.items.get(0).quality);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).quality, SULFURAS_QUALITY);
|
assertEquals(SULFURAS_QUALITY, app.items.get(0).quality);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -49,7 +49,7 @@ class GildedRoseTest {
|
|||||||
};
|
};
|
||||||
GildedRose app = new GildedRose(items);
|
GildedRose app = new GildedRose(items);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).quality, SULFURAS_QUALITY);
|
assertEquals(SULFURAS_QUALITY, app.items.get(0).quality);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -60,9 +60,9 @@ class GildedRoseTest {
|
|||||||
};
|
};
|
||||||
GildedRose app = new GildedRose(items);
|
GildedRose app = new GildedRose(items);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).quality, 2);
|
assertEquals(2, app.items.get(0).quality);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).quality, 4);
|
assertEquals(4, app.items.get(0).quality);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -73,11 +73,11 @@ class GildedRoseTest {
|
|||||||
};
|
};
|
||||||
GildedRose app = new GildedRose(items);
|
GildedRose app = new GildedRose(items);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).quality, 3);
|
assertEquals(3, app.items.get(0).quality);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).quality, 6);
|
assertEquals(6, app.items.get(0).quality);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).quality, 9);
|
assertEquals(9, app.items.get(0).quality);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -88,9 +88,9 @@ class GildedRoseTest {
|
|||||||
};
|
};
|
||||||
GildedRose app = new GildedRose(items);
|
GildedRose app = new GildedRose(items);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).quality, 13);
|
assertEquals(13, app.items.get(0).quality);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).quality, 0);
|
assertEquals(0, app.items.get(0).quality);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -100,11 +100,11 @@ class GildedRoseTest {
|
|||||||
Item[] items = new Item[]{new Item("generic item", 5, quality)};
|
Item[] items = new Item[]{new Item("generic item", 5, quality)};
|
||||||
GildedRose app = new GildedRose(items);
|
GildedRose app = new GildedRose(items);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).quality, 0);
|
assertEquals(0, app.items.get(0).quality);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).quality, 0);
|
assertEquals(0, app.items.get(0).quality);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).quality, 0);
|
assertEquals(0, app.items.get(0).quality);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -112,11 +112,11 @@ class GildedRoseTest {
|
|||||||
Item[] items = new Item[]{new Item(ItemType.AGED_BRIE.getDisplayName(), 5, 50)};
|
Item[] items = new Item[]{new Item(ItemType.AGED_BRIE.getDisplayName(), 5, 50)};
|
||||||
GildedRose app = new GildedRose(items);
|
GildedRose app = new GildedRose(items);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).quality, 50);
|
assertEquals(50, app.items.get(0).quality);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).quality, 50);
|
assertEquals(50, app.items.get(0).quality);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).quality, 50);
|
assertEquals(50, app.items.get(0).quality);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -124,11 +124,11 @@ class GildedRoseTest {
|
|||||||
Item[] items = new Item[]{new Item(ItemType.BACKSTAGE_PASSES.getDisplayName(), 5, 50)};
|
Item[] items = new Item[]{new Item(ItemType.BACKSTAGE_PASSES.getDisplayName(), 5, 50)};
|
||||||
GildedRose app = new GildedRose(items);
|
GildedRose app = new GildedRose(items);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).quality, 50);
|
assertEquals(50, app.items.get(0).quality);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).quality, 50);
|
assertEquals(50, app.items.get(0).quality);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).quality, 50);
|
assertEquals(50, app.items.get(0).quality);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -136,11 +136,11 @@ class GildedRoseTest {
|
|||||||
Item[] items = new Item[]{new Item("generic item", 5, 5)};
|
Item[] items = new Item[]{new Item("generic item", 5, 5)};
|
||||||
GildedRose app = new GildedRose(items);
|
GildedRose app = new GildedRose(items);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).quality, 4);
|
assertEquals(4, app.items.get(0).quality);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).quality, 3);
|
assertEquals(3, app.items.get(0).quality);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).quality, 2);
|
assertEquals(2, app.items.get(0).quality);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -148,11 +148,11 @@ class GildedRoseTest {
|
|||||||
Item[] items = new Item[]{new Item("generic item", 1, 6)};
|
Item[] items = new Item[]{new Item("generic item", 1, 6)};
|
||||||
GildedRose app = new GildedRose(items);
|
GildedRose app = new GildedRose(items);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).quality, 5);
|
assertEquals(5, app.items.get(0).quality);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).quality, 3);
|
assertEquals(3, app.items.get(0).quality);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).quality, 1);
|
assertEquals(1, app.items.get(0).quality);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -160,11 +160,11 @@ class GildedRoseTest {
|
|||||||
Item[] items = new Item[]{new Item(ItemType.AGED_BRIE.getDisplayName(), 5, 1)};
|
Item[] items = new Item[]{new Item(ItemType.AGED_BRIE.getDisplayName(), 5, 1)};
|
||||||
GildedRose app = new GildedRose(items);
|
GildedRose app = new GildedRose(items);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).sellIn, 4);
|
assertEquals(4, app.items.get(0).sellIn);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).sellIn, 3);
|
assertEquals(3, app.items.get(0).sellIn);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).sellIn, 2);
|
assertEquals(2, app.items.get(0).sellIn);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -172,11 +172,11 @@ class GildedRoseTest {
|
|||||||
Item[] items = new Item[]{new Item(ItemType.BACKSTAGE_PASSES.getDisplayName(), 5, 1)};
|
Item[] items = new Item[]{new Item(ItemType.BACKSTAGE_PASSES.getDisplayName(), 5, 1)};
|
||||||
GildedRose app = new GildedRose(items);
|
GildedRose app = new GildedRose(items);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).sellIn, 4);
|
assertEquals(4, app.items.get(0).sellIn);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).sellIn, 3);
|
assertEquals(3, app.items.get(0).sellIn);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).sellIn, 2);
|
assertEquals(2, app.items.get(0).sellIn);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -184,11 +184,11 @@ class GildedRoseTest {
|
|||||||
Item[] items = new Item[]{new Item("generic item", 5, 1)};
|
Item[] items = new Item[]{new Item("generic item", 5, 1)};
|
||||||
GildedRose app = new GildedRose(items);
|
GildedRose app = new GildedRose(items);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).sellIn, 4);
|
assertEquals(4, app.items.get(0).sellIn);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).sellIn, 3);
|
assertEquals(3, app.items.get(0).sellIn);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).sellIn, 2);
|
assertEquals(2, app.items.get(0).sellIn);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -196,11 +196,11 @@ class GildedRoseTest {
|
|||||||
Item[] items = new Item[]{new Item("generic item", 1, 1)};
|
Item[] items = new Item[]{new Item("generic item", 1, 1)};
|
||||||
GildedRose app = new GildedRose(items);
|
GildedRose app = new GildedRose(items);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).sellIn, 0);
|
assertEquals(0, app.items.get(0).sellIn);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).sellIn, -1);
|
assertEquals(-1, app.items.get(0).sellIn);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).sellIn, -2);
|
assertEquals(-2, app.items.get(0).sellIn);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -208,11 +208,11 @@ class GildedRoseTest {
|
|||||||
Item[] items = new Item[]{new Item(ItemType.AGED_BRIE.getDisplayName(), 1, 1)};
|
Item[] items = new Item[]{new Item(ItemType.AGED_BRIE.getDisplayName(), 1, 1)};
|
||||||
GildedRose app = new GildedRose(items);
|
GildedRose app = new GildedRose(items);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).sellIn, 0);
|
assertEquals(0, app.items.get(0).sellIn);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).sellIn, -1);
|
assertEquals(-1, app.items.get(0).sellIn);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).sellIn, -2);
|
assertEquals(-2, app.items.get(0).sellIn);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -220,11 +220,11 @@ class GildedRoseTest {
|
|||||||
Item[] items = new Item[]{new Item(ItemType.BACKSTAGE_PASSES.getDisplayName(), 1, 1)};
|
Item[] items = new Item[]{new Item(ItemType.BACKSTAGE_PASSES.getDisplayName(), 1, 1)};
|
||||||
GildedRose app = new GildedRose(items);
|
GildedRose app = new GildedRose(items);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).sellIn, 0);
|
assertEquals(0, app.items.get(0).sellIn);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).sellIn, -1);
|
assertEquals(-1, app.items.get(0).sellIn);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).sellIn, -2);
|
assertEquals(-2, app.items.get(0).sellIn);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -235,13 +235,49 @@ class GildedRoseTest {
|
|||||||
};
|
};
|
||||||
GildedRose app = new GildedRose(items);
|
GildedRose app = new GildedRose(items);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).quality, 4);
|
assertEquals(4, app.items.get(0).quality);
|
||||||
assertEquals(app.items.get(1).quality, 9);
|
assertEquals(9, app.items.get(1).quality);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).quality, 3);
|
assertEquals(3, app.items.get(0).quality);
|
||||||
assertEquals(app.items.get(1).quality, 8);
|
assertEquals(8, app.items.get(1).quality);
|
||||||
app.updateQuality();
|
app.updateQuality();
|
||||||
assertEquals(app.items.get(0).quality, 2);
|
assertEquals(2, app.items.get(0).quality);
|
||||||
assertEquals(app.items.get(1).quality, 7);
|
assertEquals(7, app.items.get(1).quality);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void conjuredItemsDecreaseByTwoEachDayBeforeSellInDate() {
|
||||||
|
Item[] items = new Item[]{new Item("Conjured Mana Cake", 10, 10)};
|
||||||
|
GildedRose app = new GildedRose(items);
|
||||||
|
app.updateQuality();
|
||||||
|
assertEquals(8, app.items.get(0).quality);
|
||||||
|
app.updateQuality();
|
||||||
|
assertEquals(6, app.items.get(0).quality);
|
||||||
|
app.updateQuality();
|
||||||
|
assertEquals(4, app.items.get(0).quality);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void sellInDateDecreasesByOneEachDayForConjuredItem() {
|
||||||
|
Item[] items = new Item[]{new Item("Conjured Mana Cake", 2, 10)};
|
||||||
|
GildedRose app = new GildedRose(items);
|
||||||
|
app.updateQuality();
|
||||||
|
assertEquals(1, app.items.get(0).sellIn);
|
||||||
|
app.updateQuality();
|
||||||
|
assertEquals(0, app.items.get(0).sellIn);
|
||||||
|
app.updateQuality();
|
||||||
|
assertEquals(-1, app.items.get(0).sellIn);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void conjuredItemsQualityDecreasesByFourEachDayAfterSellInDate() {
|
||||||
|
Item[] items = new Item[]{new Item("Conjured Mana Cake", 1, 10)};
|
||||||
|
GildedRose app = new GildedRose(items);
|
||||||
|
app.updateQuality();
|
||||||
|
assertEquals(8, app.items.get(0).quality);
|
||||||
|
app.updateQuality();
|
||||||
|
assertEquals(4, app.items.get(0).quality);
|
||||||
|
app.updateQuality();
|
||||||
|
assertEquals(0, app.items.get(0).quality);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user