diff --git a/csharp/GildedRoseTest.cs b/csharp/GildedRoseTest.cs index 911df1be..d8ddd99c 100644 --- a/csharp/GildedRoseTest.cs +++ b/csharp/GildedRoseTest.cs @@ -7,12 +7,219 @@ namespace csharp public class GildedRoseTest { [Test] - public void foo() + public void UpdateQuality_LowersItemQualityBy1() { - IList Items = new List { new Item { Name = "foo", SellIn = 0, Quality = 0 } }; - GildedRose app = new GildedRose(Items); - app.UpdateQuality(); - Assert.AreEqual("fixme", Items[0].Name); + var item = new Item + { + Name = "test", + Quality = 5, + SellIn = 30 + }; + + var items = new List(new[] { item }); + var gRose = new GildedRose(items); + + gRose.UpdateQuality(); + + Assert.That(item.Quality, Is.EqualTo(4)); + } + + [Test] + public void UpdateQuality_LowersItemSellInBy1() + { + var item = new Item + { + Name = "test", + Quality = 5, + SellIn = 30 + }; + + var items = new List(new[] { item }); + var gRose = new GildedRose(items); + + gRose.UpdateQuality(); + + Assert.That(item.SellIn, Is.EqualTo(29)); + } + + [Test] + public void UpdateQuality_ItemWithZeroSellIn_LowersItemQualityBy2() + { + var item = new Item + { + Name = "test", + Quality = 5, + SellIn = 0 + }; + + var items = new List(new[] { item }); + var gRose = new GildedRose(items); + + gRose.UpdateQuality(); + + Assert.That(item.Quality, Is.EqualTo(3)); + } + + [Test] + public void UpdateQuality_ItemWithZeroQuality_StayAtZeroQuality() + { + var item = new Item + { + Name = "test", + Quality = 0, + SellIn = 30 + }; + + var items = new List(new[] { item }); + var gRose = new GildedRose(items); + + gRose.UpdateQuality(); + + Assert.That(item.Quality, Is.EqualTo(0)); + } + + [Test] + public void UpdateQuality_AgedBrie_IncreaseQualityBy1() + { + var item = new Item + { + Name = "Aged Brie", + Quality = 0, + SellIn = 30 + }; + + var items = new List(new[] { item }); + var gRose = new GildedRose(items); + + gRose.UpdateQuality(); + + Assert.That(item.Quality, Is.EqualTo(1)); + } + + [Test] + public void UpdateQuality_AgedBrieWith50Quality_StayAt50Quality() + { + var item = new Item + { + Name = "Aged Brie", + Quality = 50, + SellIn = 30 + }; + + var items = new List(new[] { item }); + var gRose = new GildedRose(items); + + gRose.UpdateQuality(); + + Assert.That(item.Quality, Is.EqualTo(50)); + } + + [Test] + public void UpdateQuality_Sulfuras_DoesNotDecreaseQuality() + { + var item = new Item + { + Name = "Sulfuras, Hand of Ragnaros", + Quality = 80, + SellIn = 30 + }; + + var items = new List(new[] { item }); + var gRose = new GildedRose(items); + + gRose.UpdateQuality(); + + Assert.That(item.Quality, Is.EqualTo(80)); + } + + [Test] + public void UpdateQuality_Sulfuras_DoesNotDecreaseSellIn() + { + var item = new Item + { + Name = "Sulfuras, Hand of Ragnaros", + Quality = 80, + SellIn = 30 + }; + + var items = new List(new[] { item }); + var gRose = new GildedRose(items); + + gRose.UpdateQuality(); + + Assert.That(item.SellIn, Is.EqualTo(30)); + } + + [Test] + public void UpdateQuality_BackstagePassesWithMoreThan10DaysLeft_IncreasesQualityBy1() + { + var item = new Item + { + Name = "Backstage passes to a TAFKAL80ETC concert", + Quality = 35, + SellIn = 11 + }; + + var items = new List(new[] { item }); + var gRose = new GildedRose(items); + + gRose.UpdateQuality(); + + Assert.That(item.Quality, Is.EqualTo(36)); + } + + [Test] + public void UpdateQuality_BackstagePassesWith10DaysLeft_IncreasesQualityBy2() + { + var item = new Item + { + Name = "Backstage passes to a TAFKAL80ETC concert", + Quality = 35, + SellIn = 10 + }; + + var items = new List(new[] { item }); + var gRose = new GildedRose(items); + + gRose.UpdateQuality(); + + Assert.That(item.Quality, Is.EqualTo(37)); + } + + [Test] + public void UpdateQuality_BackstagePassesWith5DaysLeft_IncreasesQualityBy3() + { + var item = new Item + { + Name = "Backstage passes to a TAFKAL80ETC concert", + Quality = 35, + SellIn = 5 + }; + + var items = new List(new[] { item }); + var gRose = new GildedRose(items); + + gRose.UpdateQuality(); + + Assert.That(item.Quality, Is.EqualTo(38)); + } + + [Test] + public void UpdateQuality_BackstagePassesWith0DaysLeft_SetQualityToZero() + { + var item = new Item + { + Name = "Backstage passes to a TAFKAL80ETC concert", + Quality = 35, + SellIn = 0 + }; + + var items = new List(new[] { item }); + var gRose = new GildedRose(items); + + gRose.UpdateQuality(); + + Assert.That(item.Quality, Is.EqualTo(0)); } } }