diff --git a/csharpcore-Verify.xunit/GildedRose/AgingItem.cs b/csharpcore-Verify.xunit/GildedRose/AgingItem.cs new file mode 100644 index 00000000..eb20490e --- /dev/null +++ b/csharpcore-Verify.xunit/GildedRose/AgingItem.cs @@ -0,0 +1,21 @@ +namespace GildedRoseKata +{ + public class AgingItem : Item + { + + public virtual void SetAgingItemQuality() + { + if (Quality < 50) + { + Quality++; + + SellIn--; + + if (SellIn < 0 && Quality < 50) + { + Quality++; + } + } + } + } +} diff --git a/csharpcore-Verify.xunit/GildedRose/ConcertPass.cs b/csharpcore-Verify.xunit/GildedRose/ConcertPass.cs new file mode 100644 index 00000000..eaca13fe --- /dev/null +++ b/csharpcore-Verify.xunit/GildedRose/ConcertPass.cs @@ -0,0 +1,31 @@ +using GildedRoseKata; + +namespace GildedRoseKata +{ + public class ConcertPass : AgingItem + { + public override void SetAgingItemQuality() + { + if (Quality < 50) + { + Quality++; + + if (SellIn < 11 && Quality < 50) + { + Quality++; + } + + if (SellIn < 6 && Quality < 50) + { + Quality++; + } + + SellIn--; + if (SellIn < 0) + { + Quality = 0; + } + } + } + } +} diff --git a/csharpcore-Verify.xunit/GildedRose/ConjuredItem.cs b/csharpcore-Verify.xunit/GildedRose/ConjuredItem.cs new file mode 100644 index 00000000..13ab5007 --- /dev/null +++ b/csharpcore-Verify.xunit/GildedRose/ConjuredItem.cs @@ -0,0 +1,6 @@ +namespace GildedRoseKata +{ + public class ConjuredItem : Item + { + } +} diff --git a/csharpcore-Verify.xunit/GildedRose/GildedRose.cs b/csharpcore-Verify.xunit/GildedRose/GildedRose.cs index ed7dc428..bb3bf65e 100644 --- a/csharpcore-Verify.xunit/GildedRose/GildedRose.cs +++ b/csharpcore-Verify.xunit/GildedRose/GildedRose.cs @@ -4,7 +4,7 @@ namespace GildedRoseKata { public class GildedRose { - IList Items; + private readonly IList Items; public GildedRose(IList Items) { this.Items = Items; @@ -14,76 +14,45 @@ namespace GildedRoseKata { for (var i = 0; i < Items.Count; i++) { - if (Items[i].Name != "Aged Brie" && Items[i].Name != "Backstage passes to a TAFKAL80ETC concert") + switch (Items[i]) { - if (Items[i].Quality > 0) - { - if (Items[i].Name != "Sulfuras, Hand of Ragnaros") - { - Items[i].Quality = Items[i].Quality - 1; - } - } - } - else - { - if (Items[i].Quality < 50) - { - Items[i].Quality = Items[i].Quality + 1; - - if (Items[i].Name == "Backstage passes to a TAFKAL80ETC concert") - { - if (Items[i].SellIn < 11) - { - if (Items[i].Quality < 50) - { - Items[i].Quality = Items[i].Quality + 1; - } - } - - if (Items[i].SellIn < 6) - { - if (Items[i].Quality < 50) - { - Items[i].Quality = Items[i].Quality + 1; - } - } - } - } - } - - if (Items[i].Name != "Sulfuras, Hand of Ragnaros") - { - Items[i].SellIn = Items[i].SellIn - 1; - } - - if (Items[i].SellIn < 0) - { - if (Items[i].Name != "Aged Brie") - { - if (Items[i].Name != "Backstage passes to a TAFKAL80ETC concert") - { - if (Items[i].Quality > 0) - { - if (Items[i].Name != "Sulfuras, Hand of Ragnaros") - { - Items[i].Quality = Items[i].Quality - 1; - } - } - } - else - { - Items[i].Quality = Items[i].Quality - Items[i].Quality; - } - } - else - { - if (Items[i].Quality < 50) - { - Items[i].Quality = Items[i].Quality + 1; - } - } + case LegendaryItem l: break; + case AgingItem a: + a.SetAgingItemQuality(); + break; + case ConjuredItem c: + DecreaseItemProperties(c); + DecreaseItemQuality(c); + break; + default: + DecreaseItemProperties(Items[i]); + break; } } } + + private void DecreaseItemProperties(Item item) + { + DecreaseItemQuality(item); + DecreateItemSellIn(item); + DecreaseItemQuality(item); + } + + private void DecreaseItemQuality(Item item) + { + if (item.Quality > 0) + { + item.Quality--; + } + } + + private void DecreateItemSellIn(Item item) + { + if (item is not LegendaryItem) + { + item.SellIn--; + } + } + } } diff --git a/csharpcore-Verify.xunit/GildedRose/LegendaryItem.cs b/csharpcore-Verify.xunit/GildedRose/LegendaryItem.cs new file mode 100644 index 00000000..1c1f998d --- /dev/null +++ b/csharpcore-Verify.xunit/GildedRose/LegendaryItem.cs @@ -0,0 +1,6 @@ +namespace GildedRoseKata +{ + public class LegendaryItem : Item + { + } +} diff --git a/csharpcore-Verify.xunit/GildedRose/Program.cs b/csharpcore-Verify.xunit/GildedRose/Program.cs index 1367fe73..99af1173 100644 --- a/csharpcore-Verify.xunit/GildedRose/Program.cs +++ b/csharpcore-Verify.xunit/GildedRose/Program.cs @@ -11,30 +11,30 @@ namespace GildedRoseKata IList Items = new List{ new Item {Name = "+5 Dexterity Vest", SellIn = 10, Quality = 20}, - new Item {Name = "Aged Brie", SellIn = 2, Quality = 0}, + new AgingItem {Name = "Aged Brie", SellIn = 2, Quality = 0}, new Item {Name = "Elixir of the Mongoose", SellIn = 5, Quality = 7}, - new Item {Name = "Sulfuras, Hand of Ragnaros", SellIn = 0, Quality = 80}, - new Item {Name = "Sulfuras, Hand of Ragnaros", SellIn = -1, Quality = 80}, - new Item + new LegendaryItem {Name = "Sulfuras, Hand of Ragnaros", SellIn = 0, Quality = 80}, + new LegendaryItem {Name = "Sulfuras, Hand of Ragnaros", SellIn = -1, Quality = 80}, + new ConcertPass { Name = "Backstage passes to a TAFKAL80ETC concert", SellIn = 15, Quality = 20 }, - new Item + new ConcertPass { Name = "Backstage passes to a TAFKAL80ETC concert", SellIn = 10, Quality = 49 }, - new Item + new ConcertPass { Name = "Backstage passes to a TAFKAL80ETC concert", SellIn = 5, Quality = 49 }, // this conjured item does not work properly yet - new Item {Name = "Conjured Mana Cake", SellIn = 3, Quality = 6} + new ConjuredItem {Name = "Conjured Mana Cake", SellIn = 3, Quality = 6} }; var app = new GildedRose(Items); diff --git a/csharpcore-Verify.xunit/GildedRoseTests/ApprovalTest.ThirtyDays.received.txt b/csharpcore-Verify.xunit/GildedRoseTests/ApprovalTest.ThirtyDays.received.txt new file mode 100644 index 00000000..82003c20 --- /dev/null +++ b/csharpcore-Verify.xunit/GildedRoseTests/ApprovalTest.ThirtyDays.received.txt @@ -0,0 +1,373 @@ +OMGHAI! +-------- 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, 18 +Aged Brie, 1, 1 +Elixir of the Mongoose, 4, 5 +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, 3 + +-------- day 2 -------- +name, sellIn, quality ++5 Dexterity Vest, 8, 16 +Aged Brie, 0, 2 +Elixir of the Mongoose, 3, 3 +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, 9, 50 +Backstage passes to a TAFKAL80ETC concert, 4, 50 +Conjured Mana Cake, 1, 0 + +-------- day 3 -------- +name, sellIn, quality ++5 Dexterity Vest, 7, 14 +Aged Brie, -1, 4 +Elixir of the Mongoose, 2, 1 +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, 9, 50 +Backstage passes to a TAFKAL80ETC concert, 4, 50 +Conjured Mana Cake, 0, 0 + +-------- day 4 -------- +name, sellIn, quality ++5 Dexterity Vest, 6, 12 +Aged Brie, -2, 6 +Elixir of the Mongoose, 1, 0 +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, 9, 50 +Backstage passes to a TAFKAL80ETC concert, 4, 50 +Conjured Mana Cake, -1, 0 + +-------- day 5 -------- +name, sellIn, quality ++5 Dexterity Vest, 5, 10 +Aged Brie, -3, 8 +Elixir of the Mongoose, 0, 0 +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, 9, 50 +Backstage passes to a TAFKAL80ETC concert, 4, 50 +Conjured Mana Cake, -2, 0 + +-------- day 6 -------- +name, sellIn, quality ++5 Dexterity Vest, 4, 8 +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, 9, 50 +Backstage passes to a TAFKAL80ETC concert, 4, 50 +Conjured Mana Cake, -3, 0 + +-------- day 7 -------- +name, sellIn, quality ++5 Dexterity Vest, 3, 6 +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, 9, 50 +Backstage passes to a TAFKAL80ETC concert, 4, 50 +Conjured Mana Cake, -4, 0 + +-------- day 8 -------- +name, sellIn, quality ++5 Dexterity Vest, 2, 4 +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, 9, 50 +Backstage passes to a TAFKAL80ETC concert, 4, 50 +Conjured Mana Cake, -5, 0 + +-------- day 9 -------- +name, sellIn, quality ++5 Dexterity Vest, 1, 2 +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, 9, 50 +Backstage passes to a TAFKAL80ETC concert, 4, 50 +Conjured Mana Cake, -6, 0 + +-------- day 10 -------- +name, sellIn, quality ++5 Dexterity Vest, 0, 0 +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, 9, 50 +Backstage passes to a TAFKAL80ETC concert, 4, 50 +Conjured Mana Cake, -7, 0 + +-------- day 11 -------- +name, sellIn, quality ++5 Dexterity Vest, -1, 0 +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, 9, 50 +Backstage passes to a TAFKAL80ETC concert, 4, 50 +Conjured Mana Cake, -8, 0 + +-------- day 12 -------- +name, sellIn, quality ++5 Dexterity Vest, -2, 0 +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, 9, 50 +Backstage passes to a TAFKAL80ETC concert, 4, 50 +Conjured Mana Cake, -9, 0 + +-------- day 13 -------- +name, sellIn, quality ++5 Dexterity Vest, -3, 0 +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, 9, 50 +Backstage passes to a TAFKAL80ETC concert, 4, 50 +Conjured Mana Cake, -10, 0 + +-------- day 14 -------- +name, sellIn, quality ++5 Dexterity Vest, -4, 0 +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, 9, 50 +Backstage passes to a TAFKAL80ETC concert, 4, 50 +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, 9, 50 +Backstage passes to a TAFKAL80ETC concert, 4, 50 +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, 0, 50 +Backstage passes to a TAFKAL80ETC concert, 9, 50 +Backstage passes to a TAFKAL80ETC concert, 4, 50 +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, 0, 50 +Backstage passes to a TAFKAL80ETC concert, 9, 50 +Backstage passes to a TAFKAL80ETC concert, 4, 50 +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, 0, 50 +Backstage passes to a TAFKAL80ETC concert, 9, 50 +Backstage passes to a TAFKAL80ETC concert, 4, 50 +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, 0, 50 +Backstage passes to a TAFKAL80ETC concert, 9, 50 +Backstage passes to a TAFKAL80ETC concert, 4, 50 +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, 0, 50 +Backstage passes to a TAFKAL80ETC concert, 9, 50 +Backstage passes to a TAFKAL80ETC concert, 4, 50 +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, 0, 50 +Backstage passes to a TAFKAL80ETC concert, 9, 50 +Backstage passes to a TAFKAL80ETC concert, 4, 50 +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, 0, 50 +Backstage passes to a TAFKAL80ETC concert, 9, 50 +Backstage passes to a TAFKAL80ETC concert, 4, 50 +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, 0, 50 +Backstage passes to a TAFKAL80ETC concert, 9, 50 +Backstage passes to a TAFKAL80ETC concert, 4, 50 +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, 0, 50 +Backstage passes to a TAFKAL80ETC concert, 9, 50 +Backstage passes to a TAFKAL80ETC concert, 4, 50 +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, 0, 50 +Backstage passes to a TAFKAL80ETC concert, 9, 50 +Backstage passes to a TAFKAL80ETC concert, 4, 50 +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, 0, 50 +Backstage passes to a TAFKAL80ETC concert, 9, 50 +Backstage passes to a TAFKAL80ETC concert, 4, 50 +Conjured Mana Cake, -23, 0 + +-------- day 27 -------- +name, sellIn, quality ++5 Dexterity Vest, -17, 0 +Aged Brie, -24, 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, 0, 50 +Backstage passes to a TAFKAL80ETC concert, 9, 50 +Backstage passes to a TAFKAL80ETC concert, 4, 50 +Conjured Mana Cake, -24, 0 + +-------- day 28 -------- +name, sellIn, quality ++5 Dexterity Vest, -18, 0 +Aged Brie, -24, 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, 0, 50 +Backstage passes to a TAFKAL80ETC concert, 9, 50 +Backstage passes to a TAFKAL80ETC concert, 4, 50 +Conjured Mana Cake, -25, 0 + +-------- day 29 -------- +name, sellIn, quality ++5 Dexterity Vest, -19, 0 +Aged Brie, -24, 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, 0, 50 +Backstage passes to a TAFKAL80ETC concert, 9, 50 +Backstage passes to a TAFKAL80ETC concert, 4, 50 +Conjured Mana Cake, -26, 0 + +-------- day 30 -------- +name, sellIn, quality ++5 Dexterity Vest, -20, 0 +Aged Brie, -24, 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, 0, 50 +Backstage passes to a TAFKAL80ETC concert, 9, 50 +Backstage passes to a TAFKAL80ETC concert, 4, 50 +Conjured Mana Cake, -27, 0 + diff --git a/csharpcore-Verify.xunit/GildedRoseTests/ApprovalTest.ThirtyDays.verified.txt b/csharpcore-Verify.xunit/GildedRoseTests/ApprovalTest.ThirtyDays.verified.txt new file mode 100644 index 00000000..5f282702 --- /dev/null +++ b/csharpcore-Verify.xunit/GildedRoseTests/ApprovalTest.ThirtyDays.verified.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/csharpcore-Verify.xunit/GildedRoseTests/GildedRoseTest.cs b/csharpcore-Verify.xunit/GildedRoseTests/GildedRoseTest.cs index 16b7dd95..6f772abd 100644 --- a/csharpcore-Verify.xunit/GildedRoseTests/GildedRoseTest.cs +++ b/csharpcore-Verify.xunit/GildedRoseTests/GildedRoseTest.cs @@ -12,7 +12,82 @@ namespace GildedRoseTests IList Items = new List { new Item { Name = "foo", SellIn = 0, Quality = 0 } }; GildedRose app = new GildedRose(Items); app.UpdateQuality(); - Assert.Equal("fixme", Items[0].Name); + Assert.Equal("foo", Items[0].Name); } + //Once the sell by date has passed, Quality degrades twice as fast + [Fact] + public void UpdateQuality_Should_Return_ExpiredItem_Quality4_Become_Quality2() + { + IList Items = new List { new Item { Name = "BigStuff", SellIn = -1, Quality = 4 } }; + GildedRose app = new GildedRose(Items); + app.UpdateQuality(); + Assert.Equal(2,Items[0].Quality); + } + //The Quality of an item is never negative + [Fact] + public void UpdateQuality_Should_Return_Item_Quality_Never_Negative() + { + IList Items = new List { new Item { Name = "BigStuff", SellIn = 1, Quality = 0 } }; + GildedRose app = new GildedRose(Items); + app.UpdateQuality(); + Assert.False(Items[0].Quality < 0); + } + //“Aged Brie” actually increases in Quality the older it gets + [Fact] + public void UpdateQuality_Should_Return_AgedBrie_Quality1() + { + IList Items = new List { new AgingItem { Name = "Aged Brie", SellIn = 2, Quality = 0 } }; + GildedRose app = new GildedRose(Items); + app.UpdateQuality(); + Assert.Equal(1, Items[0].Quality); + } + //“Sulfuras”, being a legendary item, never has to be sold or decreases in Quality + [Fact] + public void UpdateQuality_Should_Return_LegendaryItem_Unchanged() + { + IList Items = new List { new LegendaryItem { Name = "Sulfuras, Hand of Ragnaros", SellIn = 0, Quality = 80 } }; + GildedRose app = new GildedRose(Items); + app.UpdateQuality(); + Assert.Equal(80, Items[0].Quality); + Assert.Equal(0, Items[0].SellIn); + } + //“Backstage passes” Quality increases by 2 when there are 10 days or less + [Fact] + public void UpdateQuality_Should_Return_Passes_IncreasesBy2_When_SellinLessThen10() + { + IList Items = new List { new ConcertPass { Name = "Backstage passes to a TAFKAL80ETC concert", SellIn = 9, Quality = 20 } }; + GildedRose app = new GildedRose(Items); + app.UpdateQuality(); + Assert.Equal(22, Items[0].Quality); + } + //“Backstage passes” Quality increases by 3 when there are 5 days or less + [Fact] + public void UpdateQuality_Should_Return_Passes_IncreasesBy3_When_SellinLessThen5() + { + IList Items = new List { new ConcertPass { Name = "Backstage passes to a TAFKAL80ETC concert", SellIn = 4, Quality = 20 } }; + GildedRose app = new GildedRose(Items); + app.UpdateQuality(); + Assert.Equal(23, Items[0].Quality); + } + //“Backstage passes” Quality drops to 0 after the concert + [Fact] + public void UpdateQuality_Should_Return_PassesQuality0_When_Sellin_LessThan0() + { + IList Items = new List { new ConcertPass { Name = "Backstage passes to a TAFKAL80ETC concert", SellIn = -1, Quality = 20 } }; + GildedRose app = new GildedRose(Items); + app.UpdateQuality(); + Assert.Equal(0, Items[0].Quality); + } + //“Conjured” items degrade in Quality twice as fast as normal items + [Fact] + public void UpdateQuality_Should_Return_ConjuredQuality0_When_Quality2() + { + IList Items = new List { new ConjuredItem { Name = "Conjured Mana Cake", SellIn = 3, Quality = 2 } }; + GildedRose app = new GildedRose(Items); + app.UpdateQuality(); + Assert.Equal(0, Items[0].Quality); + } + + } }