Add initial tests according to spec for standard items

This commit is contained in:
rverlind 2023-12-05 21:46:48 +01:00
parent 2e30c563d8
commit 31d2cb5a7b

View File

@ -3,15 +3,70 @@ package com.gildedrose;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.fail;
class GildedRoseTest {
@Test
void foo() {
Item[] items = new Item[] { new Item("foo", 0, 0) };
GildedRose app = new GildedRose(items);
void updateQuality_standardItem_normalStep() {
GildedRose app = createApp(createItem("standard", 10, 15));
app.updateQuality();
assertEquals("fixme", app.items[0].name);
assertEquals(9, app.items[0].sellIn);
assertEquals(14, app.items[0].quality);
}
@Test
void updateQuality_standardItem_sellInTo0() {
GildedRose app = createApp(createItem("standard", 1, 15));
app.updateQuality();
assertEquals(0, app.items[0].sellIn);
assertEquals(14, app.items[0].quality);
}
@Test
void updateQuality_standardItem_minQualityO() {
GildedRose app = createApp(createItem("standard", 1, 0));
app.updateQuality();
assertEquals(0, app.items[0].sellIn);
assertEquals(0, app.items[0].quality);
}
@Test
void updateQuality_standardItem_doubleDecayAfterLastSellDate() {
GildedRose app = createApp(createItem("standard", 0, 10));
app.updateQuality();
assertEquals(-1, app.items[0].sellIn);
assertEquals(8, app.items[0].quality);
}
@Test
void updateQuality_standardItem_maxQuality50() {
GildedRose app = createApp(createItem("standard", 10, 60));
app.updateQuality();
assertEquals(49, app.items[0].quality);
}
@Test
void updateQuality_legendaryItem() {
fail("NYI");
}
@Test
void updateQuality_agingItem() {
fail("NYI");
}
@Test
void updateQuality_conjuredItem() {
fail("NYI");
}
private GildedRose createApp(Item[] items) {
return new GildedRose(items);
}
private Item[] createItem(String name, int sellIn, int quality) {
return new Item[] { new Item(name, sellIn, quality) };
}
}