Skip to content
Snippets Groups Projects
Verified Commit 0d1e3eb0 authored by Mirio Eggmann's avatar Mirio Eggmann :zap:
Browse files

add tests to ensure current behavior

parent a7eb301d
Branches
No related tags found
No related merge requests found
......@@ -6,12 +6,119 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
class GildedRoseTest {
// Once the sell by date has passed, Quality degrades twice as fast
@Test
void foo() {
Item[] items = new Item[] { new Item("foo", 0, 0) };
GildedRose app = new GildedRose(items);
app.updateQuality();
assertEquals("fixme", app.items[0].name);
void testUpdateQualityDegradesTwiceAsFast() {
var normalItem = new Item("Other Item", 0, 10);
GildedRose gildedRose = new GildedRose(new Item[]{normalItem});
gildedRose.updateQuality();
assertEquals(8, normalItem.quality);
assertEquals(-1, normalItem.sellIn);
}
// The Quality of an item is never negative
@Test
void testUpdateQualityDoesNotGetNegative() {
var normalItem = new Item("Other Item", 10, 0);
GildedRose gildedRose = new GildedRose(new Item[]{normalItem});
gildedRose.updateQuality();
assertEquals(0, normalItem.quality);
assertEquals(9, normalItem.sellIn);
}
// "Aged Brie" actually increases in Quality the older it gets
@Test
void testUpdateQualityIncreasesForAgedBrie() {
var agedBrie = new Item("Aged Brie", 10, 20);
GildedRose gildedRose = new GildedRose(new Item[]{agedBrie});
gildedRose.updateQuality();
assertEquals(21, agedBrie.quality);
assertEquals(9, agedBrie.sellIn);
}
// The Quality of an item is never more than 50
@Test
void testUpdateQualityDoesNotIncreaseMoreThan50() {
var agedBrie = new Item("Aged Brie", 10, 50);
GildedRose gildedRose = new GildedRose(new Item[]{agedBrie});
gildedRose.updateQuality();
assertEquals(50, agedBrie.quality);
assertEquals(9, agedBrie.sellIn);
}
// "Sulfuras", being a legendary item, never has to be sold or decreases in Quality
@Test
void testUpdateQualityForSulfurasWithSellIn() {
var sulfuras = new Item("Sulfuras, Hand of Ragnaros", 5, 80);
GildedRose gildedRose = new GildedRose(new Item[]{sulfuras});
gildedRose.updateQuality();
assertEquals(80, sulfuras.quality); // Sulfuras quality should never change
assertEquals(5, sulfuras.sellIn);
}
// Normal behaviour if more than 10 days to sell
@Test
void testUpdateQualityForBackstagePassesWithSellInMoreThan10() {
var backstagePasses = new Item("Backstage passes to a TAFKAL80ETC concert", 15, 20);
GildedRose gildedRose = new GildedRose(new Item[]{backstagePasses});
gildedRose.updateQuality();
assertEquals(21, backstagePasses.quality);
assertEquals(14, backstagePasses.sellIn);
}
// Quality increases by 2 when there are 10 days or less
@Test
void testUpdateQualityForBackstagePassesWithSellInLessThan10() {
var backstagePasses = new Item("Backstage passes to a TAFKAL80ETC concert", 10, 20);
GildedRose gildedRose = new GildedRose(new Item[]{backstagePasses});
gildedRose.updateQuality();
assertEquals(22, backstagePasses.quality);
assertEquals(9, backstagePasses.sellIn);
}
// Quality increases by 3 when there are 5 days or less
@Test
void testUpdateQualityForBackstagePassesWithSellInLessThan5() {
var backstagePasses = new Item("Backstage passes to a TAFKAL80ETC concert", 5, 20);
GildedRose gildedRose = new GildedRose(new Item[]{backstagePasses});
gildedRose.updateQuality();
assertEquals(23, backstagePasses.quality);
assertEquals(4, backstagePasses.sellIn);
}
// Quality drops to 0 after the concert
@Test
void testUpdateQualityForBackstagePassesWithSellInLessThan0() {
var backstagePasses = new Item("Backstage passes to a TAFKAL80ETC concert", 0, 20);
GildedRose gildedRose = new GildedRose(new Item[]{backstagePasses});
gildedRose.updateQuality();
assertEquals(0, backstagePasses.quality);
assertEquals(-1, backstagePasses.sellIn);
}
@Test
void testUpdateQualityForOtherItem() {
var normalItem = new Item("Other Item", 10, 10);
GildedRose gildedRose = new GildedRose(new Item[]{normalItem});
gildedRose.updateQuality();
assertEquals(9, normalItem.quality);
assertEquals(9, normalItem.sellIn);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment