mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-17 23:41:27 +00:00
- add unit tests to legacy code for each business rule
- refactor the UpdateQuality method by : * removing all static item names * strongly typing the different items * moving specific business logic inside the business object
This commit is contained in:
parent
ac8fce7557
commit
4df10d3b34
21
csharpcore-Verify.xunit/GildedRose/AgingItem.cs
Normal file
21
csharpcore-Verify.xunit/GildedRose/AgingItem.cs
Normal file
@ -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++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
31
csharpcore-Verify.xunit/GildedRose/ConcertPass.cs
Normal file
31
csharpcore-Verify.xunit/GildedRose/ConcertPass.cs
Normal file
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
6
csharpcore-Verify.xunit/GildedRose/ConjuredItem.cs
Normal file
6
csharpcore-Verify.xunit/GildedRose/ConjuredItem.cs
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
namespace GildedRoseKata
|
||||||
|
{
|
||||||
|
public class ConjuredItem : Item
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -4,7 +4,7 @@ namespace GildedRoseKata
|
|||||||
{
|
{
|
||||||
public class GildedRose
|
public class GildedRose
|
||||||
{
|
{
|
||||||
IList<Item> Items;
|
private readonly IList<Item> Items;
|
||||||
public GildedRose(IList<Item> Items)
|
public GildedRose(IList<Item> Items)
|
||||||
{
|
{
|
||||||
this.Items = Items;
|
this.Items = Items;
|
||||||
@ -14,76 +14,45 @@ namespace GildedRoseKata
|
|||||||
{
|
{
|
||||||
for (var i = 0; i < Items.Count; i++)
|
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)
|
case LegendaryItem l: break;
|
||||||
{
|
case AgingItem a:
|
||||||
if (Items[i].Name != "Sulfuras, Hand of Ragnaros")
|
a.SetAgingItemQuality();
|
||||||
{
|
break;
|
||||||
Items[i].Quality = Items[i].Quality - 1;
|
case ConjuredItem c:
|
||||||
}
|
DecreaseItemProperties(c);
|
||||||
}
|
DecreaseItemQuality(c);
|
||||||
}
|
break;
|
||||||
else
|
default:
|
||||||
{
|
DecreaseItemProperties(Items[i]);
|
||||||
if (Items[i].Quality < 50)
|
break;
|
||||||
{
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
6
csharpcore-Verify.xunit/GildedRose/LegendaryItem.cs
Normal file
6
csharpcore-Verify.xunit/GildedRose/LegendaryItem.cs
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
namespace GildedRoseKata
|
||||||
|
{
|
||||||
|
public class LegendaryItem : Item
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -11,30 +11,30 @@ namespace GildedRoseKata
|
|||||||
|
|
||||||
IList<Item> Items = new List<Item>{
|
IList<Item> Items = new List<Item>{
|
||||||
new Item {Name = "+5 Dexterity Vest", SellIn = 10, Quality = 20},
|
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 = "Elixir of the Mongoose", SellIn = 5, Quality = 7},
|
||||||
new Item {Name = "Sulfuras, Hand of Ragnaros", SellIn = 0, Quality = 80},
|
new LegendaryItem {Name = "Sulfuras, Hand of Ragnaros", SellIn = 0, Quality = 80},
|
||||||
new Item {Name = "Sulfuras, Hand of Ragnaros", SellIn = -1, Quality = 80},
|
new LegendaryItem {Name = "Sulfuras, Hand of Ragnaros", SellIn = -1, Quality = 80},
|
||||||
new Item
|
new ConcertPass
|
||||||
{
|
{
|
||||||
Name = "Backstage passes to a TAFKAL80ETC concert",
|
Name = "Backstage passes to a TAFKAL80ETC concert",
|
||||||
SellIn = 15,
|
SellIn = 15,
|
||||||
Quality = 20
|
Quality = 20
|
||||||
},
|
},
|
||||||
new Item
|
new ConcertPass
|
||||||
{
|
{
|
||||||
Name = "Backstage passes to a TAFKAL80ETC concert",
|
Name = "Backstage passes to a TAFKAL80ETC concert",
|
||||||
SellIn = 10,
|
SellIn = 10,
|
||||||
Quality = 49
|
Quality = 49
|
||||||
},
|
},
|
||||||
new Item
|
new ConcertPass
|
||||||
{
|
{
|
||||||
Name = "Backstage passes to a TAFKAL80ETC concert",
|
Name = "Backstage passes to a TAFKAL80ETC concert",
|
||||||
SellIn = 5,
|
SellIn = 5,
|
||||||
Quality = 49
|
Quality = 49
|
||||||
},
|
},
|
||||||
// this conjured item does not work properly yet
|
// 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);
|
var app = new GildedRose(Items);
|
||||||
|
|||||||
@ -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
|
||||||
|
|
||||||
@ -0,0 +1 @@
|
|||||||
|
|
||||||
@ -12,7 +12,82 @@ namespace GildedRoseTests
|
|||||||
IList<Item> Items = new List<Item> { new Item { Name = "foo", SellIn = 0, Quality = 0 } };
|
IList<Item> Items = new List<Item> { new Item { Name = "foo", SellIn = 0, Quality = 0 } };
|
||||||
GildedRose app = new GildedRose(Items);
|
GildedRose app = new GildedRose(Items);
|
||||||
app.UpdateQuality();
|
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<Item> Items = new List<Item> { 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<Item> Items = new List<Item> { 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<Item> Items = new List<Item> { 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<Item> Items = new List<Item> { 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<Item> Items = new List<Item> { 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<Item> Items = new List<Item> { 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<Item> Items = new List<Item> { 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<Item> Items = new List<Item> { new ConjuredItem { Name = "Conjured Mana Cake", SellIn = 3, Quality = 2 } };
|
||||||
|
GildedRose app = new GildedRose(Items);
|
||||||
|
app.UpdateQuality();
|
||||||
|
Assert.Equal(0, Items[0].Quality);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user