55 lines
1.8 KiB
C#
55 lines
1.8 KiB
C#
|
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> {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> {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> {item});
|
|||
|
|
|||
|
app.UpdateQuality();
|
|||
|
app.UpdateQuality();
|
|||
|
app.UpdateQuality();
|
|||
|
app.UpdateQuality();
|
|||
|
|
|||
|
Assert.Equal(0, item.Quality);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|