mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-15 14:31:28 +00:00
110 lines
3.4 KiB
Java
110 lines
3.4 KiB
Java
package com.gildedrose;
|
|
|
|
import static org.junit.jupiter.api.Assertions.*;
|
|
|
|
import org.junit.jupiter.api.DisplayName;
|
|
import org.junit.jupiter.api.Test;
|
|
|
|
public class GildedRoseTest {
|
|
|
|
@Test
|
|
public void foo() {
|
|
Item[] items = new Item[] { new Item("foo", 0, 0) };
|
|
GildedRose app = new GildedRose(items);
|
|
app.updateQuality();
|
|
assertEquals("foo", app.items[0].name);
|
|
}
|
|
|
|
@Test
|
|
@DisplayName("At the end of each day our system lowers both values for every item")
|
|
public void shouldLowerBothValues(){
|
|
Item[] items = new Item[] { TestHelper.getItem("foobar", 2, 2) };
|
|
GildedRose app = new GildedRose(items);
|
|
app.updateQuality();
|
|
assertEquals(1, app.items[0].quality);
|
|
assertEquals(1, app.items[0].sellIn);
|
|
}
|
|
|
|
@Test
|
|
@DisplayName("Once the sell by date has passed (<=0), Quality degrades twice as fast")
|
|
public void shouldDowngradeTwiceAsFastAfterSellDate(){
|
|
Item[] items = new Item[] { TestHelper.getItem("foobar", 1, 5) };
|
|
GildedRose app = new GildedRose(items);
|
|
|
|
//day 1, drop by 1
|
|
app.updateQuality();
|
|
assertEquals(4, app.items[0].quality);
|
|
assertEquals(0, app.items[0].sellIn);
|
|
|
|
//day 2, drop by 2
|
|
app.updateQuality();
|
|
assertEquals(2, app.items[0].quality);
|
|
assertEquals(-1, app.items[0].sellIn);
|
|
}
|
|
|
|
@Test
|
|
@DisplayName("The Quality of an item is never negative")
|
|
public void shouldNeverHaveANegativeQuality() {
|
|
Item[] items = new Item[]{TestHelper.getItem("foobar", 0, 0)};
|
|
GildedRose app = new GildedRose(items);
|
|
|
|
//day 1, drop by 1
|
|
app.updateQuality();
|
|
assertEquals(0, app.items[0].quality);
|
|
|
|
//day 2, drop by 1 => quality is still 0
|
|
app.updateQuality();
|
|
assertEquals(0, app.items[0].quality);
|
|
}
|
|
|
|
|
|
@Test
|
|
@DisplayName("\"Aged Brie\" actually increases in Quality by 2 the older it gets")
|
|
public void shouldSeeAgedBrieIncreasedQualityDayByDay(){
|
|
Item[] items = new Item[]{TestHelper.getItem("Aged Brie", 0, 0)};
|
|
GildedRose app = new GildedRose(items);
|
|
|
|
//day 1, add 2
|
|
app.updateQuality();
|
|
assertEquals(2, app.items[0].quality);
|
|
|
|
//day 2, add 2
|
|
app.updateQuality();
|
|
assertEquals(4, app.items[0].quality);
|
|
}
|
|
|
|
@Test
|
|
@DisplayName("The Quality of an item is never more than 50")
|
|
public void shouldNeverHaveQualityHigherThan50(){
|
|
Item[] items = new Item[]{TestHelper.getItem("Aged Brie", 0, 49)};
|
|
GildedRose app = new GildedRose(items);
|
|
|
|
//day 1, add 2
|
|
app.updateQuality();
|
|
assertEquals(50, app.items[0].quality);
|
|
|
|
//day 2, add 2
|
|
app.updateQuality();
|
|
assertEquals(50, app.items[0].quality);
|
|
}
|
|
|
|
//Sulfuras, Hand of Ragnaros
|
|
@Test
|
|
@DisplayName("\"Sulfuras\", being a legendary item, never has to be sold or decreases in Quality")
|
|
public void should(){
|
|
Item[] items = new Item[]{TestHelper.getItem("Sulfuras, Hand of Ragnaros", 0, 10)};
|
|
GildedRose app = new GildedRose(items);
|
|
|
|
//day 1, don't impact quality
|
|
app.updateQuality();
|
|
assertEquals(10, app.items[0].quality);
|
|
assertEquals(0, app.items[0].sellIn);
|
|
|
|
//day 0, don't impact quality
|
|
app.updateQuality();
|
|
assertEquals(10, app.items[0].quality);
|
|
assertEquals(0, app.items[0].sellIn);
|
|
}
|
|
|
|
}
|