mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-17 15:31:27 +00:00
initial
This commit is contained in:
parent
b104d7e343
commit
d88538009f
@ -1,17 +1,166 @@
|
|||||||
package com.gildedrose;
|
package com.gildedrose;
|
||||||
|
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
class GildedRoseTest {
|
class GildedRoseTest {
|
||||||
|
|
||||||
@Test
|
private GildedRose gildedRose;
|
||||||
void foo() {
|
|
||||||
Item[] items = new Item[] { new Item("foo", 0, 0) };
|
|
||||||
GildedRose app = new GildedRose(items);
|
|
||||||
app.updateQuality();
|
|
||||||
assertEquals("fixme", app.items[0].name);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
void setup() {
|
||||||
|
gildedRose = new GildedRose(new Item[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void qualityDegradesWhenDateHasPassed() {
|
||||||
|
Item item = new ItemBuilder().name("standard item").sellIn(2).quality(30).build();
|
||||||
|
|
||||||
|
gildedRose.updateQuality(item);
|
||||||
|
assertEquals(1, item.sellIn);
|
||||||
|
assertEquals(29, item.quality);
|
||||||
|
|
||||||
|
gildedRose.updateQuality(item);
|
||||||
|
assertEquals(0, item.sellIn);
|
||||||
|
assertEquals(28, item.quality);
|
||||||
|
|
||||||
|
gildedRose.updateQuality(item);
|
||||||
|
assertEquals(-1, item.sellIn);
|
||||||
|
assertEquals(26, item.quality);
|
||||||
|
|
||||||
|
gildedRose.updateQuality(item);
|
||||||
|
assertEquals(-2, item.sellIn);
|
||||||
|
assertEquals(24, item.quality);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void conjuredItemsDegradesTwiceAsFast() {
|
||||||
|
Item item = ItemFixture.conjured().sellIn(2).quality(30).build();
|
||||||
|
|
||||||
|
gildedRose.updateQuality(item);
|
||||||
|
assertEquals(1, item.sellIn);
|
||||||
|
assertEquals(28, item.quality);
|
||||||
|
|
||||||
|
gildedRose.updateQuality(item);
|
||||||
|
assertEquals(0, item.sellIn);
|
||||||
|
assertEquals(26, item.quality);
|
||||||
|
|
||||||
|
gildedRose.updateQuality(item);
|
||||||
|
assertEquals(-1, item.sellIn);
|
||||||
|
assertEquals(24, item.quality);
|
||||||
|
|
||||||
|
gildedRose.updateQuality(item);
|
||||||
|
assertEquals(-2, item.sellIn);
|
||||||
|
assertEquals(22, item.quality);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void qualityNeverNegative() {
|
||||||
|
Item item = ItemFixture.standard().sellIn(1).quality(1).build();
|
||||||
|
|
||||||
|
gildedRose.updateQuality(item);
|
||||||
|
assertEquals(0, item.sellIn);
|
||||||
|
assertEquals(0, item.quality);
|
||||||
|
|
||||||
|
gildedRose.updateQuality(item);
|
||||||
|
assertEquals(-1, item.sellIn);
|
||||||
|
assertEquals(0, item.quality);
|
||||||
|
|
||||||
|
gildedRose.updateQuality(item);
|
||||||
|
assertEquals(-2, item.sellIn);
|
||||||
|
assertEquals(0, item.quality);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void agedBrieIncreasesQuality() {
|
||||||
|
Item item = ItemFixture.agedBrie().sellIn(5).quality(10).build();
|
||||||
|
|
||||||
|
gildedRose.updateQuality(item);
|
||||||
|
assertEquals(4, item.sellIn);
|
||||||
|
assertEquals(11, item.quality);
|
||||||
|
|
||||||
|
gildedRose.updateQuality(item);
|
||||||
|
assertEquals(3, item.sellIn);
|
||||||
|
assertEquals(12, item.quality);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void qualityNeverBiggerThan50() {
|
||||||
|
Item item = ItemFixture.agedBrie().sellIn(5).quality(49).build();
|
||||||
|
gildedRose.updateQuality(item);
|
||||||
|
assertEquals(50, item.quality);
|
||||||
|
|
||||||
|
gildedRose.updateQuality(item);
|
||||||
|
assertEquals(50, item.quality);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void qualityNeverBiggerThan50AtConstruction() {
|
||||||
|
assertThrows(
|
||||||
|
IllegalArgumentException.class, () -> ItemFixture.agedBrie().sellIn(5).quality(51).build());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void qualityNeverBiggerThan50AtConstructionUnlessSulfuras() {
|
||||||
|
ItemFixture.sulfuras().sellIn(5).build();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void sulfurasIsNotSellable() {
|
||||||
|
Item item = ItemFixture.sulfuras().sellIn(5).build();
|
||||||
|
gildedRose.updateQuality(item);
|
||||||
|
assertEquals(80, item.quality);
|
||||||
|
assertEquals(5, item.sellIn);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void backStagePasses() {
|
||||||
|
Item item = ItemFixture.backstagePass().sellIn(12).quality(20).build();
|
||||||
|
|
||||||
|
gildedRose.updateQuality(item);
|
||||||
|
assertEquals(21, item.quality);
|
||||||
|
|
||||||
|
gildedRose.updateQuality(item);
|
||||||
|
assertEquals(22, item.quality);
|
||||||
|
|
||||||
|
gildedRose.updateQuality(item);
|
||||||
|
assertEquals(24, item.quality);
|
||||||
|
|
||||||
|
gildedRose.updateQuality(item);
|
||||||
|
assertEquals(26, item.quality);
|
||||||
|
|
||||||
|
gildedRose.updateQuality(item);
|
||||||
|
assertEquals(28, item.quality);
|
||||||
|
|
||||||
|
gildedRose.updateQuality(item);
|
||||||
|
assertEquals(30, item.quality);
|
||||||
|
|
||||||
|
gildedRose.updateQuality(item);
|
||||||
|
assertEquals(32, item.quality);
|
||||||
|
|
||||||
|
item.quality = 20;
|
||||||
|
gildedRose.updateQuality(item);
|
||||||
|
assertEquals(23, item.quality);
|
||||||
|
|
||||||
|
gildedRose.updateQuality(item);
|
||||||
|
assertEquals(26, item.quality);
|
||||||
|
|
||||||
|
gildedRose.updateQuality(item);
|
||||||
|
assertEquals(29, item.quality);
|
||||||
|
|
||||||
|
gildedRose.updateQuality(item);
|
||||||
|
assertEquals(32, item.quality);
|
||||||
|
|
||||||
|
gildedRose.updateQuality(item);
|
||||||
|
assertEquals(35, item.quality);
|
||||||
|
|
||||||
|
gildedRose.updateQuality(item);
|
||||||
|
assertEquals(0, item.quality);
|
||||||
|
|
||||||
|
gildedRose.updateQuality(item);
|
||||||
|
assertEquals(0, item.quality);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user