using Xunit; using System.Collections.Generic; namespace csharpcore { public class BasicItemTest { [Fact] public void ShouldUpdateQuality() { const int startSellIn = 31; const int startQuality = 20; var item = new Item {Name = "+5 Dexterity Vest", SellIn = startSellIn, Quality = startQuality}; var app = new GildedRose(new List {item}); app.UpdateQuality(); Assert.Equal("+5 Dexterity Vest", item.Name); Assert.Equal(startSellIn - 1, item.SellIn); Assert.Equal(startQuality - 1, item.Quality); } [Theory] [InlineData(1, 1)] [InlineData(0, 2)] /* Once the sell by date has passed, Quality degrades twice as fast. */ [InlineData(-1, 2)] /* Once the sell by date has passed, Quality degrades twice as fast. */ public void ShouldDecrementQualityAccordingToSellInValue(int sellIn, int expectedDecrement) { const int startQuality = 20; var item = new Item {Name = "+5 Dexterity Vest", SellIn = sellIn, Quality = startQuality}; var app = new GildedRose(new List {item}); app.UpdateQuality(); Assert.Equal(startQuality - expectedDecrement, item.Quality); } [Fact] public void ShouldNotSetDecrementQualityToNegativeValue() { const int startQuality = 0; var item = new Item {Name = "+5 Dexterity Vest", SellIn = 1, Quality = startQuality}; var app = new GildedRose(new List {item}); app.UpdateQuality(); app.UpdateQuality(); app.UpdateQuality(); app.UpdateQuality(); Assert.Equal(0, item.Quality); } } }