diff --git a/Java/src/main/java/com/gildedrose/GildedRose.java b/Java/src/main/java/com/gildedrose/GildedRose.java index 87a3b926..69dcda15 100644 --- a/Java/src/main/java/com/gildedrose/GildedRose.java +++ b/Java/src/main/java/com/gildedrose/GildedRose.java @@ -1,9 +1,10 @@ package com.gildedrose; class GildedRose { - Item[] items; - public GildedRose(Item[] items) { + private Item[] items; + + public GildedRose(Item... items) { this.items = items; } @@ -59,4 +60,8 @@ class GildedRose { } } } + + public Item[] getItems() { + return items; + } } diff --git a/Java/src/test/java/com/gildedrose/AgedBrieTest.java b/Java/src/test/java/com/gildedrose/AgedBrieTest.java new file mode 100644 index 00000000..321a8548 --- /dev/null +++ b/Java/src/test/java/com/gildedrose/AgedBrieTest.java @@ -0,0 +1,35 @@ +package com.gildedrose; + +import org.junit.jupiter.api.Test; + +import static com.gildedrose.ItemTestHelper.assertItemEquals; + +public class AgedBrieTest { + + @Test + public void item_AgedBrie_increasesInQuality() { + GildedRose app = new GildedRose(new Item("Aged Brie", 2, 2)); + + app.updateQuality(); + + assertItemEquals(app.getItems()[0], new Item("Aged Brie", 1, 3)); + } + + @Test + public void item_AgedBrie_increasesInQuality_DoublesWhenOff() { + GildedRose app = new GildedRose(new Item("Aged Brie", 0, 2)); + + app.updateQuality(); + + assertItemEquals(app.getItems()[0], new Item("Aged Brie", -1, 4)); + } + + @Test + public void item_AgedBrie_cannotGoOver50Quality() { + GildedRose app = new GildedRose(new Item("Aged Brie", 2, 50)); + + app.updateQuality(); + + assertItemEquals(app.getItems()[0], new Item("Aged Brie", 1, 50)); + } +} diff --git a/Java/src/test/java/com/gildedrose/BackStagePassesTest.java b/Java/src/test/java/com/gildedrose/BackStagePassesTest.java new file mode 100644 index 00000000..225cb32d --- /dev/null +++ b/Java/src/test/java/com/gildedrose/BackStagePassesTest.java @@ -0,0 +1,44 @@ +package com.gildedrose; + +import org.junit.jupiter.api.Test; + +import static com.gildedrose.ItemTestHelper.assertItemEquals; + +public class BackStagePassesTest { + + @Test + public void item_BackStagePasses_increasesInQuality_byOneOutside10Days() { + GildedRose app = new GildedRose(new Item("Backstage passes to a TAFKAL80ETC concert", 20, 2)); + + app.updateQuality(); + + assertItemEquals(app.getItems()[0], new Item("Backstage passes to a TAFKAL80ETC concert", 19, 3)); + } + + @Test + public void item_BackStagePasses_increasesInQuality_byTwoInside10Days() { + GildedRose app = new GildedRose(new Item("Backstage passes to a TAFKAL80ETC concert", 10, 2)); + + app.updateQuality(); + + assertItemEquals(app.getItems()[0], new Item("Backstage passes to a TAFKAL80ETC concert", 9, 4)); + } + + @Test + public void item_BackStagePasses_increasesInQuality_byThreeInside5Days() { + GildedRose app = new GildedRose(new Item("Backstage passes to a TAFKAL80ETC concert", 5, 2)); + + app.updateQuality(); + + assertItemEquals(app.getItems()[0], new Item("Backstage passes to a TAFKAL80ETC concert", 4, 5)); + } + + @Test + public void item_BackStagePasses_increasesInQuality_goesToZeroWhenSellInExpires() { + GildedRose app = new GildedRose(new Item("Backstage passes to a TAFKAL80ETC concert", 0, 20)); + + app.updateQuality(); + + assertItemEquals(app.getItems()[0], new Item("Backstage passes to a TAFKAL80ETC concert", -1, 0)); + } +} diff --git a/Java/src/test/java/com/gildedrose/ConjureditemTestHelper.java b/Java/src/test/java/com/gildedrose/ConjureditemTestHelper.java new file mode 100644 index 00000000..9a4f06dc --- /dev/null +++ b/Java/src/test/java/com/gildedrose/ConjureditemTestHelper.java @@ -0,0 +1,26 @@ +package com.gildedrose; + +import org.junit.jupiter.api.Test; + +import static com.gildedrose.ItemTestHelper.assertItemEquals; + +public class ConjureditemTestHelper { + + @Test + public void item_conjured_decreasesInQuality_twiceTheSpeed() { + GildedRose app = new GildedRose(new Item("Conjured Mana Cake", 3, 6)); + + app.updateQuality(); + + assertItemEquals(app.getItems()[0], new Item("Conjured Mana Cake", 2, 4)); + } + + @Test + public void item_conjured_decreasesInQuality_twiceTheSpeed_alsoWhenSellInExpired() { + GildedRose app = new GildedRose(new Item("Conjured Mana Cake", 0, 6)); + + app.updateQuality(); + + assertItemEquals(app.getItems()[0], new Item("Conjured Mana Cake", -1, 2)); + } +} diff --git a/Java/src/test/java/com/gildedrose/GildedRoseTest.java b/Java/src/test/java/com/gildedrose/GildedRoseTest.java index 7c5fc0a2..66407beb 100644 --- a/Java/src/test/java/com/gildedrose/GildedRoseTest.java +++ b/Java/src/test/java/com/gildedrose/GildedRoseTest.java @@ -2,16 +2,35 @@ package com.gildedrose; import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.assertEquals; +import static com.gildedrose.ItemTestHelper.assertItemEquals; -class GildedRoseTest { +public class GildedRoseTest { - @Test - 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 + public void sellInDateDecreases_butQualityCannotBeNegative() { + GildedRose app = new GildedRose(new Item("foo", 0, 0)); + + app.updateQuality(); + + assertItemEquals(app.getItems()[0], new Item("foo", -1, 0)); + } + + @Test + public void qualityDecreases() { + GildedRose app = new GildedRose(new Item("foo", 10, 10)); + + app.updateQuality(); + + assertItemEquals(app.getItems()[0], new Item("foo", 9, 9)); + } + + @Test + public void qualityDecreasesFasterAfterSellInDateExpired() { + GildedRose app = new GildedRose(new Item("foo", 0, 10)); + + app.updateQuality(); + + assertItemEquals(app.getItems()[0], new Item("foo", -1, 8)); + } } diff --git a/Java/src/test/java/com/gildedrose/ItemTestHelper.java b/Java/src/test/java/com/gildedrose/ItemTestHelper.java new file mode 100644 index 00000000..65e2b29d --- /dev/null +++ b/Java/src/test/java/com/gildedrose/ItemTestHelper.java @@ -0,0 +1,16 @@ + +package com.gildedrose; + +import com.gildedrose.Item; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Assertions; + +public class ItemTestHelper { + + public static void assertItemEquals(Item actual, Item expected) { + assertEquals(expected.name, actual.name); + assertEquals(expected.quality, actual.quality); + assertEquals(expected.sellIn, actual.sellIn); + } +} diff --git a/Java/src/test/java/com/gildedrose/SulfurasTest.java b/Java/src/test/java/com/gildedrose/SulfurasTest.java new file mode 100644 index 00000000..311f0cd8 --- /dev/null +++ b/Java/src/test/java/com/gildedrose/SulfurasTest.java @@ -0,0 +1,17 @@ +package com.gildedrose; + +import org.junit.jupiter.api.Test; + +import static com.gildedrose.ItemTestHelper.assertItemEquals; + +public class SulfurasTest { + + @Test + public void item_Sulfuras_neverChanges() { + GildedRose app = new GildedRose(new Item("Sulfuras, Hand of Ragnaros", 100, 100)); + + app.updateQuality(); + + assertItemEquals(app.getItems()[0], new Item("Sulfuras, Hand of Ragnaros", 100, 100)); + } +} diff --git a/Java/src/test/java/com/gildedrose/TexttestFixture.java b/Java/src/test/java/com/gildedrose/TexttestFixture.java index d059c88f..a523bc01 100644 --- a/Java/src/test/java/com/gildedrose/TexttestFixture.java +++ b/Java/src/test/java/com/gildedrose/TexttestFixture.java @@ -1,37 +1,63 @@ + package com.gildedrose; -public class TexttestFixture { - public static void main(String[] args) { - System.out.println("OMGHAI!"); +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; - 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), // +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; + +import static java.lang.String.format; + +public class TexttestFixture { + + @Test + public void checkAllIsGold() throws IOException { + String gold = new String(Files.readAllBytes(Paths.get("src/test/resources/gold.txt"))); + + String current = buildGold().toString(); + + Assertions.assertEquals(trimEachLine(gold +"\n"), trimEachLine(current)); + } + + private String trimEachLine(String string) { + return string.replaceAll("(?m)[\\s+&&[^\\n]]+$", ""); + } + + + public static void main(String[] args) throws IOException { + StringBuilder builder = buildGold(); + Files.write(Paths.get("src/test/resources/gold.txt"), builder.toString().getBytes()); + } + + private static StringBuilder buildGold() { + 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) }; + new Item("Conjured Mana Cake", 3, 6) + }; + StringBuilder builder = new StringBuilder(); GildedRose app = new GildedRose(items); - - 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 (int i = 0; i < 32; i++) { + builder.append(format("------------------------- day %s -------------------------- %n", i)); + builder.append(format("%42s %6s %-8s %n", "NAME", "SELLIN", "QUALITY")); for (Item item : items) { - System.out.println(item); + builder.append(format("%42s %6s %-8s %n", item.name, item.sellIn, item.quality)); } - System.out.println(); + builder.append(format("%n")); app.updateQuality(); } + + return builder; } } diff --git a/Java/src/test/resources/gold.txt b/Java/src/test/resources/gold.txt new file mode 100644 index 00000000..43c66c23 --- /dev/null +++ b/Java/src/test/resources/gold.txt @@ -0,0 +1,383 @@ +------------------------- day 0 -------------------------- + NAME SELLIN QUALITY + +5 Dexterity Vest 10 20 + Aged Brie 2 0 + Elixir of the Mongoose 5 7 + Sulfuras, Hand of Ragnaros 0 80 + Sulfuras, Hand of Ragnaros -1 80 + Backstage passes to a TAFKAL80ETC concert 15 20 + Backstage passes to a TAFKAL80ETC concert 10 49 + Backstage passes to a TAFKAL80ETC concert 5 49 + Conjured Mana Cake 3 6 + +------------------------- day 1 -------------------------- + NAME SELLIN QUALITY + +5 Dexterity Vest 9 19 + Aged Brie 1 1 + Elixir of the Mongoose 4 6 + Sulfuras, Hand of Ragnaros 0 80 + Sulfuras, Hand of Ragnaros -1 80 + Backstage passes to a TAFKAL80ETC concert 14 21 + Backstage passes to a TAFKAL80ETC concert 9 50 + Backstage passes to a TAFKAL80ETC concert 4 50 + Conjured Mana Cake 2 4 + +------------------------- day 2 -------------------------- + NAME SELLIN QUALITY + +5 Dexterity Vest 8 18 + Aged Brie 0 2 + Elixir of the Mongoose 3 5 + Sulfuras, Hand of Ragnaros 0 80 + Sulfuras, Hand of Ragnaros -1 80 + Backstage passes to a TAFKAL80ETC concert 13 22 + Backstage passes to a TAFKAL80ETC concert 8 50 + Backstage passes to a TAFKAL80ETC concert 3 50 + Conjured Mana Cake 1 2 + +------------------------- day 3 -------------------------- + NAME SELLIN QUALITY + +5 Dexterity Vest 7 17 + Aged Brie -1 4 + Elixir of the Mongoose 2 4 + Sulfuras, Hand of Ragnaros 0 80 + Sulfuras, Hand of Ragnaros -1 80 + Backstage passes to a TAFKAL80ETC concert 12 23 + Backstage passes to a TAFKAL80ETC concert 7 50 + Backstage passes to a TAFKAL80ETC concert 2 50 + Conjured Mana Cake 0 0 + +------------------------- day 4 -------------------------- + NAME SELLIN QUALITY + +5 Dexterity Vest 6 16 + Aged Brie -2 6 + Elixir of the Mongoose 1 3 + Sulfuras, Hand of Ragnaros 0 80 + Sulfuras, Hand of Ragnaros -1 80 + Backstage passes to a TAFKAL80ETC concert 11 24 + Backstage passes to a TAFKAL80ETC concert 6 50 + Backstage passes to a TAFKAL80ETC concert 1 50 + Conjured Mana Cake -1 0 + +------------------------- day 5 -------------------------- + NAME SELLIN QUALITY + +5 Dexterity Vest 5 15 + Aged Brie -3 8 + Elixir of the Mongoose 0 2 + Sulfuras, Hand of Ragnaros 0 80 + Sulfuras, Hand of Ragnaros -1 80 + Backstage passes to a TAFKAL80ETC concert 10 25 + Backstage passes to a TAFKAL80ETC concert 5 50 + Backstage passes to a TAFKAL80ETC concert 0 50 + Conjured Mana Cake -2 0 + +------------------------- day 6 -------------------------- + NAME SELLIN QUALITY + +5 Dexterity Vest 4 14 + Aged Brie -4 10 + Elixir of the Mongoose -1 0 + Sulfuras, Hand of Ragnaros 0 80 + Sulfuras, Hand of Ragnaros -1 80 + Backstage passes to a TAFKAL80ETC concert 9 27 + Backstage passes to a TAFKAL80ETC concert 4 50 + Backstage passes to a TAFKAL80ETC concert -1 0 + Conjured Mana Cake -3 0 + +------------------------- day 7 -------------------------- + NAME SELLIN QUALITY + +5 Dexterity Vest 3 13 + Aged Brie -5 12 + Elixir of the Mongoose -2 0 + Sulfuras, Hand of Ragnaros 0 80 + Sulfuras, Hand of Ragnaros -1 80 + Backstage passes to a TAFKAL80ETC concert 8 29 + Backstage passes to a TAFKAL80ETC concert 3 50 + Backstage passes to a TAFKAL80ETC concert -2 0 + Conjured Mana Cake -4 0 + +------------------------- day 8 -------------------------- + NAME SELLIN QUALITY + +5 Dexterity Vest 2 12 + Aged Brie -6 14 + Elixir of the Mongoose -3 0 + Sulfuras, Hand of Ragnaros 0 80 + Sulfuras, Hand of Ragnaros -1 80 + Backstage passes to a TAFKAL80ETC concert 7 31 + Backstage passes to a TAFKAL80ETC concert 2 50 + Backstage passes to a TAFKAL80ETC concert -3 0 + Conjured Mana Cake -5 0 + +------------------------- day 9 -------------------------- + NAME SELLIN QUALITY + +5 Dexterity Vest 1 11 + Aged Brie -7 16 + Elixir of the Mongoose -4 0 + Sulfuras, Hand of Ragnaros 0 80 + Sulfuras, Hand of Ragnaros -1 80 + Backstage passes to a TAFKAL80ETC concert 6 33 + Backstage passes to a TAFKAL80ETC concert 1 50 + Backstage passes to a TAFKAL80ETC concert -4 0 + Conjured Mana Cake -6 0 + +------------------------- day 10 -------------------------- + NAME SELLIN QUALITY + +5 Dexterity Vest 0 10 + Aged Brie -8 18 + Elixir of the Mongoose -5 0 + Sulfuras, Hand of Ragnaros 0 80 + Sulfuras, Hand of Ragnaros -1 80 + Backstage passes to a TAFKAL80ETC concert 5 35 + Backstage passes to a TAFKAL80ETC concert 0 50 + Backstage passes to a TAFKAL80ETC concert -5 0 + Conjured Mana Cake -7 0 + +------------------------- day 11 -------------------------- + NAME SELLIN QUALITY + +5 Dexterity Vest -1 8 + Aged Brie -9 20 + Elixir of the Mongoose -6 0 + Sulfuras, Hand of Ragnaros 0 80 + Sulfuras, Hand of Ragnaros -1 80 + Backstage passes to a TAFKAL80ETC concert 4 38 + Backstage passes to a TAFKAL80ETC concert -1 0 + Backstage passes to a TAFKAL80ETC concert -6 0 + Conjured Mana Cake -8 0 + +------------------------- day 12 -------------------------- + NAME SELLIN QUALITY + +5 Dexterity Vest -2 6 + Aged Brie -10 22 + Elixir of the Mongoose -7 0 + Sulfuras, Hand of Ragnaros 0 80 + Sulfuras, Hand of Ragnaros -1 80 + Backstage passes to a TAFKAL80ETC concert 3 41 + Backstage passes to a TAFKAL80ETC concert -2 0 + Backstage passes to a TAFKAL80ETC concert -7 0 + Conjured Mana Cake -9 0 + +------------------------- day 13 -------------------------- + NAME SELLIN QUALITY + +5 Dexterity Vest -3 4 + Aged Brie -11 24 + Elixir of the Mongoose -8 0 + Sulfuras, Hand of Ragnaros 0 80 + Sulfuras, Hand of Ragnaros -1 80 + Backstage passes to a TAFKAL80ETC concert 2 44 + Backstage passes to a TAFKAL80ETC concert -3 0 + Backstage passes to a TAFKAL80ETC concert -8 0 + Conjured Mana Cake -10 0 + +------------------------- day 14 -------------------------- + NAME SELLIN QUALITY + +5 Dexterity Vest -4 2 + Aged Brie -12 26 + Elixir of the Mongoose -9 0 + Sulfuras, Hand of Ragnaros 0 80 + Sulfuras, Hand of Ragnaros -1 80 + Backstage passes to a TAFKAL80ETC concert 1 47 + Backstage passes to a TAFKAL80ETC concert -4 0 + Backstage passes to a TAFKAL80ETC concert -9 0 + Conjured Mana Cake -11 0 + +------------------------- day 15 -------------------------- + NAME SELLIN QUALITY + +5 Dexterity Vest -5 0 + Aged Brie -13 28 + Elixir of the Mongoose -10 0 + Sulfuras, Hand of Ragnaros 0 80 + Sulfuras, Hand of Ragnaros -1 80 + Backstage passes to a TAFKAL80ETC concert 0 50 + Backstage passes to a TAFKAL80ETC concert -5 0 + Backstage passes to a TAFKAL80ETC concert -10 0 + Conjured Mana Cake -12 0 + +------------------------- day 16 -------------------------- + NAME SELLIN QUALITY + +5 Dexterity Vest -6 0 + Aged Brie -14 30 + Elixir of the Mongoose -11 0 + Sulfuras, Hand of Ragnaros 0 80 + Sulfuras, Hand of Ragnaros -1 80 + Backstage passes to a TAFKAL80ETC concert -1 0 + Backstage passes to a TAFKAL80ETC concert -6 0 + Backstage passes to a TAFKAL80ETC concert -11 0 + Conjured Mana Cake -13 0 + +------------------------- day 17 -------------------------- + NAME SELLIN QUALITY + +5 Dexterity Vest -7 0 + Aged Brie -15 32 + Elixir of the Mongoose -12 0 + Sulfuras, Hand of Ragnaros 0 80 + Sulfuras, Hand of Ragnaros -1 80 + Backstage passes to a TAFKAL80ETC concert -2 0 + Backstage passes to a TAFKAL80ETC concert -7 0 + Backstage passes to a TAFKAL80ETC concert -12 0 + Conjured Mana Cake -14 0 + +------------------------- day 18 -------------------------- + NAME SELLIN QUALITY + +5 Dexterity Vest -8 0 + Aged Brie -16 34 + Elixir of the Mongoose -13 0 + Sulfuras, Hand of Ragnaros 0 80 + Sulfuras, Hand of Ragnaros -1 80 + Backstage passes to a TAFKAL80ETC concert -3 0 + Backstage passes to a TAFKAL80ETC concert -8 0 + Backstage passes to a TAFKAL80ETC concert -13 0 + Conjured Mana Cake -15 0 + +------------------------- day 19 -------------------------- + NAME SELLIN QUALITY + +5 Dexterity Vest -9 0 + Aged Brie -17 36 + Elixir of the Mongoose -14 0 + Sulfuras, Hand of Ragnaros 0 80 + Sulfuras, Hand of Ragnaros -1 80 + Backstage passes to a TAFKAL80ETC concert -4 0 + Backstage passes to a TAFKAL80ETC concert -9 0 + Backstage passes to a TAFKAL80ETC concert -14 0 + Conjured Mana Cake -16 0 + +------------------------- day 20 -------------------------- + NAME SELLIN QUALITY + +5 Dexterity Vest -10 0 + Aged Brie -18 38 + Elixir of the Mongoose -15 0 + Sulfuras, Hand of Ragnaros 0 80 + Sulfuras, Hand of Ragnaros -1 80 + Backstage passes to a TAFKAL80ETC concert -5 0 + Backstage passes to a TAFKAL80ETC concert -10 0 + Backstage passes to a TAFKAL80ETC concert -15 0 + Conjured Mana Cake -17 0 + +------------------------- day 21 -------------------------- + NAME SELLIN QUALITY + +5 Dexterity Vest -11 0 + Aged Brie -19 40 + Elixir of the Mongoose -16 0 + Sulfuras, Hand of Ragnaros 0 80 + Sulfuras, Hand of Ragnaros -1 80 + Backstage passes to a TAFKAL80ETC concert -6 0 + Backstage passes to a TAFKAL80ETC concert -11 0 + Backstage passes to a TAFKAL80ETC concert -16 0 + Conjured Mana Cake -18 0 + +------------------------- day 22 -------------------------- + NAME SELLIN QUALITY + +5 Dexterity Vest -12 0 + Aged Brie -20 42 + Elixir of the Mongoose -17 0 + Sulfuras, Hand of Ragnaros 0 80 + Sulfuras, Hand of Ragnaros -1 80 + Backstage passes to a TAFKAL80ETC concert -7 0 + Backstage passes to a TAFKAL80ETC concert -12 0 + Backstage passes to a TAFKAL80ETC concert -17 0 + Conjured Mana Cake -19 0 + +------------------------- day 23 -------------------------- + NAME SELLIN QUALITY + +5 Dexterity Vest -13 0 + Aged Brie -21 44 + Elixir of the Mongoose -18 0 + Sulfuras, Hand of Ragnaros 0 80 + Sulfuras, Hand of Ragnaros -1 80 + Backstage passes to a TAFKAL80ETC concert -8 0 + Backstage passes to a TAFKAL80ETC concert -13 0 + Backstage passes to a TAFKAL80ETC concert -18 0 + Conjured Mana Cake -20 0 + +------------------------- day 24 -------------------------- + NAME SELLIN QUALITY + +5 Dexterity Vest -14 0 + Aged Brie -22 46 + Elixir of the Mongoose -19 0 + Sulfuras, Hand of Ragnaros 0 80 + Sulfuras, Hand of Ragnaros -1 80 + Backstage passes to a TAFKAL80ETC concert -9 0 + Backstage passes to a TAFKAL80ETC concert -14 0 + Backstage passes to a TAFKAL80ETC concert -19 0 + Conjured Mana Cake -21 0 + +------------------------- day 25 -------------------------- + NAME SELLIN QUALITY + +5 Dexterity Vest -15 0 + Aged Brie -23 48 + Elixir of the Mongoose -20 0 + Sulfuras, Hand of Ragnaros 0 80 + Sulfuras, Hand of Ragnaros -1 80 + Backstage passes to a TAFKAL80ETC concert -10 0 + Backstage passes to a TAFKAL80ETC concert -15 0 + Backstage passes to a TAFKAL80ETC concert -20 0 + Conjured Mana Cake -22 0 + +------------------------- day 26 -------------------------- + NAME SELLIN QUALITY + +5 Dexterity Vest -16 0 + Aged Brie -24 50 + Elixir of the Mongoose -21 0 + Sulfuras, Hand of Ragnaros 0 80 + Sulfuras, Hand of Ragnaros -1 80 + Backstage passes to a TAFKAL80ETC concert -11 0 + Backstage passes to a TAFKAL80ETC concert -16 0 + Backstage passes to a TAFKAL80ETC concert -21 0 + Conjured Mana Cake -23 0 + +------------------------- day 27 -------------------------- + NAME SELLIN QUALITY + +5 Dexterity Vest -17 0 + Aged Brie -25 50 + Elixir of the Mongoose -22 0 + Sulfuras, Hand of Ragnaros 0 80 + Sulfuras, Hand of Ragnaros -1 80 + Backstage passes to a TAFKAL80ETC concert -12 0 + Backstage passes to a TAFKAL80ETC concert -17 0 + Backstage passes to a TAFKAL80ETC concert -22 0 + Conjured Mana Cake -24 0 + +------------------------- day 28 -------------------------- + NAME SELLIN QUALITY + +5 Dexterity Vest -18 0 + Aged Brie -26 50 + Elixir of the Mongoose -23 0 + Sulfuras, Hand of Ragnaros 0 80 + Sulfuras, Hand of Ragnaros -1 80 + Backstage passes to a TAFKAL80ETC concert -13 0 + Backstage passes to a TAFKAL80ETC concert -18 0 + Backstage passes to a TAFKAL80ETC concert -23 0 + Conjured Mana Cake -25 0 + +------------------------- day 29 -------------------------- + NAME SELLIN QUALITY + +5 Dexterity Vest -19 0 + Aged Brie -27 50 + Elixir of the Mongoose -24 0 + Sulfuras, Hand of Ragnaros 0 80 + Sulfuras, Hand of Ragnaros -1 80 + Backstage passes to a TAFKAL80ETC concert -14 0 + Backstage passes to a TAFKAL80ETC concert -19 0 + Backstage passes to a TAFKAL80ETC concert -24 0 + Conjured Mana Cake -26 0 + +------------------------- day 30 -------------------------- + NAME SELLIN QUALITY + +5 Dexterity Vest -20 0 + Aged Brie -28 50 + Elixir of the Mongoose -25 0 + Sulfuras, Hand of Ragnaros 0 80 + Sulfuras, Hand of Ragnaros -1 80 + Backstage passes to a TAFKAL80ETC concert -15 0 + Backstage passes to a TAFKAL80ETC concert -20 0 + Backstage passes to a TAFKAL80ETC concert -25 0 + Conjured Mana Cake -27 0 + +------------------------- day 31 -------------------------- + NAME SELLIN QUALITY + +5 Dexterity Vest -21 0 + Aged Brie -29 50 + Elixir of the Mongoose -26 0 + Sulfuras, Hand of Ragnaros 0 80 + Sulfuras, Hand of Ragnaros -1 80 + Backstage passes to a TAFKAL80ETC concert -16 0 + Backstage passes to a TAFKAL80ETC concert -21 0 + Backstage passes to a TAFKAL80ETC concert -26 0 + Conjured Mana Cake -28 0