Implement conjured

This commit is contained in:
Richard Xu 2022-12-22 16:47:59 -05:00
parent 79a430019f
commit cb1aa70657
5 changed files with 106 additions and 54 deletions

View 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;
}
}
}

View File

@ -13,6 +13,8 @@ class GildedRose {
SulfurasItemHandler.class,
ItemType.BACKSTAGE_PASSES,
BackstagePassesItemHandler.class,
ItemType.CONJURED,
ConjuredItemHandler.class,
ItemType.GENERIC,
GenericItemHandler.class
);

View File

@ -2,5 +2,6 @@ package com.gildedrose;
public abstract class ItemHandler {
public void handleDay(Item item) {}
public void handleDay(Item item) {
}
}

View File

@ -6,6 +6,7 @@ public enum ItemType {
AGED_BRIE("Aged Brie"),
SULFURAS("Sulfuras, Hand of Ragnaros"),
BACKSTAGE_PASSES("Backstage passes to a TAFKAL80ETC concert"),
CONJURED("Conjured Mana Cake"),
GENERIC("Generic item");
private final String displayName;

View File

@ -12,9 +12,9 @@ class GildedRoseTest {
Item[] items = new Item[]{new Item(ItemType.AGED_BRIE.getDisplayName(), 2, 0)};
GildedRose app = new GildedRose(items);
app.updateQuality();
assertEquals(app.items.get(0).quality, 1);
assertEquals(1, app.items.get(0).quality);
app.updateQuality();
assertEquals(app.items.get(0).quality, 2);
assertEquals(2, app.items.get(0).quality);
}
@Test
@ -25,9 +25,9 @@ class GildedRoseTest {
};
GildedRose app = new GildedRose(items);
app.updateQuality();
assertEquals(app.items.get(0).sellIn, sellIn);
assertEquals(sellIn, app.items.get(0).sellIn);
app.updateQuality();
assertEquals(app.items.get(0).sellIn, sellIn);
assertEquals(sellIn, app.items.get(0).sellIn);
}
@Test
@ -37,9 +37,9 @@ class GildedRoseTest {
};
GildedRose app = new GildedRose(items);
app.updateQuality();
assertEquals(app.items.get(0).quality, SULFURAS_QUALITY);
assertEquals(SULFURAS_QUALITY, app.items.get(0).quality);
app.updateQuality();
assertEquals(app.items.get(0).quality, SULFURAS_QUALITY);
assertEquals(SULFURAS_QUALITY, app.items.get(0).quality);
}
@Test
@ -49,7 +49,7 @@ class GildedRoseTest {
};
GildedRose app = new GildedRose(items);
app.updateQuality();
assertEquals(app.items.get(0).quality, SULFURAS_QUALITY);
assertEquals(SULFURAS_QUALITY, app.items.get(0).quality);
}
@Test
@ -60,9 +60,9 @@ class GildedRoseTest {
};
GildedRose app = new GildedRose(items);
app.updateQuality();
assertEquals(app.items.get(0).quality, 2);
assertEquals(2, app.items.get(0).quality);
app.updateQuality();
assertEquals(app.items.get(0).quality, 4);
assertEquals(4, app.items.get(0).quality);
}
@Test
@ -73,11 +73,11 @@ class GildedRoseTest {
};
GildedRose app = new GildedRose(items);
app.updateQuality();
assertEquals(app.items.get(0).quality, 3);
assertEquals(3, app.items.get(0).quality);
app.updateQuality();
assertEquals(app.items.get(0).quality, 6);
assertEquals(6, app.items.get(0).quality);
app.updateQuality();
assertEquals(app.items.get(0).quality, 9);
assertEquals(9, app.items.get(0).quality);
}
@Test
@ -88,9 +88,9 @@ class GildedRoseTest {
};
GildedRose app = new GildedRose(items);
app.updateQuality();
assertEquals(app.items.get(0).quality, 13);
assertEquals(13, app.items.get(0).quality);
app.updateQuality();
assertEquals(app.items.get(0).quality, 0);
assertEquals(0, app.items.get(0).quality);
}
@Test
@ -100,11 +100,11 @@ class GildedRoseTest {
Item[] items = new Item[]{new Item("generic item", 5, quality)};
GildedRose app = new GildedRose(items);
app.updateQuality();
assertEquals(app.items.get(0).quality, 0);
assertEquals(0, app.items.get(0).quality);
app.updateQuality();
assertEquals(app.items.get(0).quality, 0);
assertEquals(0, app.items.get(0).quality);
app.updateQuality();
assertEquals(app.items.get(0).quality, 0);
assertEquals(0, app.items.get(0).quality);
}
@Test
@ -112,11 +112,11 @@ class GildedRoseTest {
Item[] items = new Item[]{new Item(ItemType.AGED_BRIE.getDisplayName(), 5, 50)};
GildedRose app = new GildedRose(items);
app.updateQuality();
assertEquals(app.items.get(0).quality, 50);
assertEquals(50, app.items.get(0).quality);
app.updateQuality();
assertEquals(app.items.get(0).quality, 50);
assertEquals(50, app.items.get(0).quality);
app.updateQuality();
assertEquals(app.items.get(0).quality, 50);
assertEquals(50, app.items.get(0).quality);
}
@Test
@ -124,11 +124,11 @@ class GildedRoseTest {
Item[] items = new Item[]{new Item(ItemType.BACKSTAGE_PASSES.getDisplayName(), 5, 50)};
GildedRose app = new GildedRose(items);
app.updateQuality();
assertEquals(app.items.get(0).quality, 50);
assertEquals(50, app.items.get(0).quality);
app.updateQuality();
assertEquals(app.items.get(0).quality, 50);
assertEquals(50, app.items.get(0).quality);
app.updateQuality();
assertEquals(app.items.get(0).quality, 50);
assertEquals(50, app.items.get(0).quality);
}
@Test
@ -136,11 +136,11 @@ class GildedRoseTest {
Item[] items = new Item[]{new Item("generic item", 5, 5)};
GildedRose app = new GildedRose(items);
app.updateQuality();
assertEquals(app.items.get(0).quality, 4);
assertEquals(4, app.items.get(0).quality);
app.updateQuality();
assertEquals(app.items.get(0).quality, 3);
assertEquals(3, app.items.get(0).quality);
app.updateQuality();
assertEquals(app.items.get(0).quality, 2);
assertEquals(2, app.items.get(0).quality);
}
@Test
@ -148,11 +148,11 @@ class GildedRoseTest {
Item[] items = new Item[]{new Item("generic item", 1, 6)};
GildedRose app = new GildedRose(items);
app.updateQuality();
assertEquals(app.items.get(0).quality, 5);
assertEquals(5, app.items.get(0).quality);
app.updateQuality();
assertEquals(app.items.get(0).quality, 3);
assertEquals(3, app.items.get(0).quality);
app.updateQuality();
assertEquals(app.items.get(0).quality, 1);
assertEquals(1, app.items.get(0).quality);
}
@Test
@ -160,11 +160,11 @@ class GildedRoseTest {
Item[] items = new Item[]{new Item(ItemType.AGED_BRIE.getDisplayName(), 5, 1)};
GildedRose app = new GildedRose(items);
app.updateQuality();
assertEquals(app.items.get(0).sellIn, 4);
assertEquals(4, app.items.get(0).sellIn);
app.updateQuality();
assertEquals(app.items.get(0).sellIn, 3);
assertEquals(3, app.items.get(0).sellIn);
app.updateQuality();
assertEquals(app.items.get(0).sellIn, 2);
assertEquals(2, app.items.get(0).sellIn);
}
@Test
@ -172,11 +172,11 @@ class GildedRoseTest {
Item[] items = new Item[]{new Item(ItemType.BACKSTAGE_PASSES.getDisplayName(), 5, 1)};
GildedRose app = new GildedRose(items);
app.updateQuality();
assertEquals(app.items.get(0).sellIn, 4);
assertEquals(4, app.items.get(0).sellIn);
app.updateQuality();
assertEquals(app.items.get(0).sellIn, 3);
assertEquals(3, app.items.get(0).sellIn);
app.updateQuality();
assertEquals(app.items.get(0).sellIn, 2);
assertEquals(2, app.items.get(0).sellIn);
}
@Test
@ -184,11 +184,11 @@ class GildedRoseTest {
Item[] items = new Item[]{new Item("generic item", 5, 1)};
GildedRose app = new GildedRose(items);
app.updateQuality();
assertEquals(app.items.get(0).sellIn, 4);
assertEquals(4, app.items.get(0).sellIn);
app.updateQuality();
assertEquals(app.items.get(0).sellIn, 3);
assertEquals(3, app.items.get(0).sellIn);
app.updateQuality();
assertEquals(app.items.get(0).sellIn, 2);
assertEquals(2, app.items.get(0).sellIn);
}
@Test
@ -196,11 +196,11 @@ class GildedRoseTest {
Item[] items = new Item[]{new Item("generic item", 1, 1)};
GildedRose app = new GildedRose(items);
app.updateQuality();
assertEquals(app.items.get(0).sellIn, 0);
assertEquals(0, app.items.get(0).sellIn);
app.updateQuality();
assertEquals(app.items.get(0).sellIn, -1);
assertEquals(-1, app.items.get(0).sellIn);
app.updateQuality();
assertEquals(app.items.get(0).sellIn, -2);
assertEquals(-2, app.items.get(0).sellIn);
}
@Test
@ -208,11 +208,11 @@ class GildedRoseTest {
Item[] items = new Item[]{new Item(ItemType.AGED_BRIE.getDisplayName(), 1, 1)};
GildedRose app = new GildedRose(items);
app.updateQuality();
assertEquals(app.items.get(0).sellIn, 0);
assertEquals(0, app.items.get(0).sellIn);
app.updateQuality();
assertEquals(app.items.get(0).sellIn, -1);
assertEquals(-1, app.items.get(0).sellIn);
app.updateQuality();
assertEquals(app.items.get(0).sellIn, -2);
assertEquals(-2, app.items.get(0).sellIn);
}
@Test
@ -220,11 +220,11 @@ class GildedRoseTest {
Item[] items = new Item[]{new Item(ItemType.BACKSTAGE_PASSES.getDisplayName(), 1, 1)};
GildedRose app = new GildedRose(items);
app.updateQuality();
assertEquals(app.items.get(0).sellIn, 0);
assertEquals(0, app.items.get(0).sellIn);
app.updateQuality();
assertEquals(app.items.get(0).sellIn, -1);
assertEquals(-1, app.items.get(0).sellIn);
app.updateQuality();
assertEquals(app.items.get(0).sellIn, -2);
assertEquals(-2, app.items.get(0).sellIn);
}
@Test
@ -235,13 +235,49 @@ class GildedRoseTest {
};
GildedRose app = new GildedRose(items);
app.updateQuality();
assertEquals(app.items.get(0).quality, 4);
assertEquals(app.items.get(1).quality, 9);
assertEquals(4, app.items.get(0).quality);
assertEquals(9, app.items.get(1).quality);
app.updateQuality();
assertEquals(app.items.get(0).quality, 3);
assertEquals(app.items.get(1).quality, 8);
assertEquals(3, app.items.get(0).quality);
assertEquals(8, app.items.get(1).quality);
app.updateQuality();
assertEquals(app.items.get(0).quality, 2);
assertEquals(app.items.get(1).quality, 7);
assertEquals(2, app.items.get(0).quality);
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);
}
}