mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-15 22:41:30 +00:00
added unit tests
This commit is contained in:
parent
bc7de77181
commit
a63115e57f
@ -5,13 +5,99 @@ import org.junit.jupiter.api.Test;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
class GildedRoseTest {
|
||||
|
||||
@Test
|
||||
void foo() {
|
||||
Item[] items = new Item[] { new Item("foo", 0, 0) };
|
||||
void qualityNeverNegative() {
|
||||
Item[] items = new Item[] { new Item("fixme", 0, 0) };
|
||||
GildedRose app = new GildedRose(items);
|
||||
app.updateQuality();
|
||||
assertEquals("fixme", app.items[0].name);
|
||||
assertEquals(0, app.items[0].quality);
|
||||
}
|
||||
|
||||
@Test
|
||||
void qualityDegrades2xAfterSellByDate() {
|
||||
Item[] items = new Item[] { new Item("fixme", 1, 10) };
|
||||
GildedRose app = new GildedRose(items);
|
||||
|
||||
// check that quality only goes down 1 while sellIn > 0
|
||||
app.updateQuality();
|
||||
assertEquals(9, app.items[0].quality);
|
||||
|
||||
// check that quality goes down 2 while sellIn <= 0
|
||||
app.updateQuality(); // <- sellIn is now 0
|
||||
assertEquals(7, app.items[0].quality);
|
||||
}
|
||||
|
||||
@Test
|
||||
void qualityIncreasesForAgedBrie() {
|
||||
Item[] items = new Item[] { new Item("Aged Brie", 1, 0) };
|
||||
GildedRose app = new GildedRose(items);
|
||||
|
||||
// NOTE: aged brie increases twice as fast after sellIn days have elapsed
|
||||
|
||||
// quality should go up 1x speed
|
||||
app.updateQuality();
|
||||
assertEquals(1, app.items[0].quality);
|
||||
|
||||
// quality should go up 2x because sellIn is 0
|
||||
app.updateQuality();
|
||||
assertEquals(3, app.items[0].quality);
|
||||
}
|
||||
|
||||
@Test
|
||||
void qualityNeverPasses50() {
|
||||
// aged brie is the only item that increases in quality (besides the pass)
|
||||
Item[] items = new Item[] { new Item("Aged Brie", 1, 49) };
|
||||
GildedRose app = new GildedRose(items);
|
||||
|
||||
// should go up 1 to 50
|
||||
app.updateQuality();
|
||||
assertEquals(50, app.items[0].quality);
|
||||
|
||||
// should stop at 50
|
||||
app.updateQuality();
|
||||
assertEquals(50, app.items[0].quality);
|
||||
}
|
||||
|
||||
@Test
|
||||
void legendaryItemsBehaveAsExpected() {
|
||||
Item[] items = new Item[] { new Item("Sulfuras, Hand of Ragnaros", 0, 80) };
|
||||
GildedRose app = new GildedRose(items);
|
||||
|
||||
app.updateQuality();
|
||||
assertEquals(80, app.items[0].quality);
|
||||
}
|
||||
|
||||
@Test
|
||||
void backstagePassesBehaveAsExpected() {
|
||||
Item[] items = new Item[] { new Item("Backstage passes to a TAFKAL80ETC concert", 10, 5) };
|
||||
GildedRose app = new GildedRose(items);
|
||||
|
||||
// 10 days or less -> grows by 2
|
||||
app.updateQuality(); // sellIn 9
|
||||
assertEquals(7, app.items[0].quality);
|
||||
|
||||
app.updateQuality(); // sellIn 8, quality = 9
|
||||
app.updateQuality(); // sellIn 7, quality = 11
|
||||
app.updateQuality(); // sellIn 6, quality = 13
|
||||
|
||||
// updateQuality
|
||||
//// it will update quality
|
||||
//// it will subtract 1 to sellIn
|
||||
//// TODO: make this clearer when we refactor the actual code
|
||||
|
||||
app.updateQuality(); // sellIn 5, quality = 16 <- is not the case, sellIn 5, quality is 15
|
||||
|
||||
// It changes quality first, and then decreases sellIn
|
||||
assertEquals(15, app.items[0].quality);
|
||||
|
||||
// -1 days -> quality is 0
|
||||
app.updateQuality(); // sellIn 4
|
||||
app.updateQuality(); // sellIn 3
|
||||
app.updateQuality(); // sellIn 2
|
||||
app.updateQuality(); // sellIn 1
|
||||
app.updateQuality(); // sellIn 0
|
||||
app.updateQuality(); // sellIn -1
|
||||
|
||||
assertEquals(0, app.items[0].quality);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user