mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-15 22:41:30 +00:00
Refactor and add more tests
This commit is contained in:
parent
2660a46d08
commit
ace42fda3a
@ -7,30 +7,30 @@ public class GildedRose {
|
||||
public static void updateQuality(Item[] items) {
|
||||
for (Item item : items) {
|
||||
if (!item.name.equals("Sulfuras, Hand of Ragnaros")) {
|
||||
item.sellIn--;
|
||||
item.sellIn--; // Decrease sellIn for all items except Sulfuras
|
||||
|
||||
if (item.name.equals("Aged Brie")) {
|
||||
increaseQuality(item);
|
||||
if (item.sellIn < 0) {
|
||||
increaseQuality(item);
|
||||
increaseQuality(item); // Quality increases twice after sellIn passes
|
||||
}
|
||||
} else if (item.name.equals("Backstage passes to a TAFKAL80ETC concert")) {
|
||||
increaseQuality(item);
|
||||
if (item.sellIn < 11) {
|
||||
increaseQuality(item);
|
||||
increaseQuality(item); // Quality increases by 2 when sellIn is 10 or less
|
||||
}
|
||||
if (item.sellIn < 6) {
|
||||
increaseQuality(item);
|
||||
increaseQuality(item); // Quality increases by 3 when sellIn is 5 or less
|
||||
}
|
||||
if (item.sellIn < 0) {
|
||||
item.quality = MIN_QUALITY;
|
||||
item.quality = MIN_QUALITY; // Quality drops to 0 after the concert
|
||||
}
|
||||
} else if (item.name.equals("Conjured Mana Cake")) {
|
||||
decreaseQuality(item, 2);
|
||||
decreaseQuality(item, 2); // Quality decreases twice as fast for conjured items
|
||||
} else {
|
||||
decreaseQuality(item);
|
||||
decreaseQuality(item); // Normal items decrease in quality
|
||||
if (item.sellIn < 0) {
|
||||
decreaseQuality(item);
|
||||
decreaseQuality(item); // Quality decreases twice after sellIn passes
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,17 +1,93 @@
|
||||
package com.gildedrose;
|
||||
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
class GildedRoseTest {
|
||||
public class GildedRoseTest {
|
||||
|
||||
@Test
|
||||
void foo() {
|
||||
Item[] items = new Item[] { new Item("foo", 0, 0) };
|
||||
GildedRose app = new GildedRose();
|
||||
app.updateQuality(items);
|
||||
assertEquals("fixme", items[0].name);
|
||||
private Item[] items;
|
||||
|
||||
@BeforeEach
|
||||
public void setUp() {
|
||||
items = new Item[]{
|
||||
new Item("+5 Dexterity Vest", 10, 20),
|
||||
new Item("Aged Brie", 2, 0),
|
||||
new Item("Elixir of the Mongoose", 5, 7),
|
||||
new Item("Sulfuras, Hand of Ragnaros", 0, 80),
|
||||
new Item("Sulfuras, Hand of Ragnaros", -1, 80),
|
||||
new Item("Backstage passes to a TAFKAL80ETC concert", 15, 20),
|
||||
new Item("Backstage passes to a TAFKAL80ETC concert", 10, 49),
|
||||
new Item("Backstage passes to a TAFKAL80ETC concert", 5, 49),
|
||||
new Item("Conjured Mana Cake", 3, 6)
|
||||
};
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDay1() {
|
||||
GildedRose.updateQuality(items);
|
||||
|
||||
// Assertions for Day 1
|
||||
assertEquals(9, items[0].sellIn);
|
||||
assertEquals(19, items[0].quality);
|
||||
|
||||
assertEquals(1, items[1].sellIn);
|
||||
assertEquals(1, items[1].quality);
|
||||
|
||||
assertEquals(4, items[2].sellIn);
|
||||
assertEquals(6, items[2].quality);
|
||||
|
||||
assertEquals(0, items[3].sellIn);
|
||||
assertEquals(80, items[3].quality);
|
||||
|
||||
assertEquals(-1, items[4].sellIn);
|
||||
assertEquals(80, items[4].quality);
|
||||
|
||||
assertEquals(14, items[5].sellIn);
|
||||
assertEquals(21, items[5].quality);
|
||||
|
||||
assertEquals(9, items[6].sellIn);
|
||||
assertEquals(50, items[6].quality);
|
||||
|
||||
assertEquals(4, items[7].sellIn);
|
||||
assertEquals(50, items[7].quality);
|
||||
|
||||
assertEquals(2, items[8].sellIn);
|
||||
assertEquals(4, items[8].quality);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDay2() {
|
||||
GildedRose.updateQuality(items);
|
||||
GildedRose.updateQuality(items);
|
||||
|
||||
// Assertions for Day 2
|
||||
assertEquals(8, items[0].sellIn);
|
||||
assertEquals(18, items[0].quality);
|
||||
|
||||
assertEquals(0, items[1].sellIn);
|
||||
assertEquals(2, items[1].quality);
|
||||
|
||||
assertEquals(3, items[2].sellIn);
|
||||
assertEquals(5, items[2].quality);
|
||||
|
||||
assertEquals(0, items[3].sellIn);
|
||||
assertEquals(80, items[3].quality);
|
||||
|
||||
assertEquals(-1, items[4].sellIn);
|
||||
assertEquals(80, items[4].quality);
|
||||
|
||||
assertEquals(13, items[5].sellIn);
|
||||
assertEquals(22, items[5].quality);
|
||||
|
||||
assertEquals(8, items[6].sellIn);
|
||||
assertEquals(50, items[6].quality);
|
||||
|
||||
assertEquals(3, items[7].sellIn);
|
||||
assertEquals(50, items[7].quality);
|
||||
|
||||
assertEquals(1, items[8].sellIn);
|
||||
assertEquals(2, items[8].quality);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,37 +0,0 @@
|
||||
package com.gildedrose;
|
||||
|
||||
public class TexttestFixture {
|
||||
public static void main(String[] args) {
|
||||
System.out.println("OMGHAI!");
|
||||
|
||||
Item[] items = new Item[] {
|
||||
new Item("+5 Dexterity Vest", 10, 20), //
|
||||
new Item("Aged Brie", 2, 0), //
|
||||
new Item("Elixir of the Mongoose", 5, 7), //
|
||||
new Item("Sulfuras, Hand of Ragnaros", 0, 80), //
|
||||
new Item("Sulfuras, Hand of Ragnaros", -1, 80),
|
||||
new Item("Backstage passes to a TAFKAL80ETC concert", 15, 20),
|
||||
new Item("Backstage passes to a TAFKAL80ETC concert", 10, 49),
|
||||
new Item("Backstage passes to a TAFKAL80ETC concert", 5, 49),
|
||||
// this conjured item does not work properly yet
|
||||
new Item("Conjured Mana Cake", 3, 6) };
|
||||
|
||||
GildedRose app = new GildedRose();
|
||||
|
||||
int days = 2;
|
||||
if (args.length > 0) {
|
||||
days = Integer.parseInt(args[0]) + 1;
|
||||
}
|
||||
|
||||
for (int i = 0; i < days; i++) {
|
||||
System.out.println("-------- day " + i + " --------");
|
||||
System.out.println("name, sellIn, quality");
|
||||
for (Item item : items) {
|
||||
System.out.println(item);
|
||||
}
|
||||
System.out.println();
|
||||
app.updateQuality(items);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user