Refactor and add more tests

This commit is contained in:
Mahdi Malaki 2023-08-07 21:13:41 -04:00
parent 2660a46d08
commit ace42fda3a
3 changed files with 91 additions and 52 deletions

View File

@ -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
}
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}
}