GildedRose-Refactoring-Kata/csharp.NUnit/GildedRoseTests/GildedRoseTest.cs
2025-04-01 14:10:32 +02:00

148 lines
4.3 KiB
C#
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System.Collections.Generic;
using GildedRoseKata;
using NUnit.Framework;
namespace GildedRoseTests;
public class GildedRoseTest
{
[Test]
public void StandardItem_QualityDegradesByOne()
{
var items = new List<Item> { new Item { Name = "Standard Item", SellIn = 5, Quality = 10 } };
var app = new GildedRose(items);
app.UpdateQuality();
Assert.That(items[0].Quality, Is.EqualTo(9));
Assert.That(items[0].SellIn, Is.EqualTo(4));
}
[Test]
public void StandardItem_QualityDegradesTwiceAsFastAfterSellIn()
{
var items = new List<Item> { new Item { Name = "Standard Item", SellIn = 0, Quality = 10 } };
var app = new GildedRose(items);
app.UpdateQuality();
Assert.That(items[0].Quality, Is.EqualTo(8));
}
[Test]
public void AgedBrie_IncreasesInQuality()
{
var items = new List<Item> { new Item { Name = ItemCategory.AgedBrie, SellIn = 5, Quality = 10 } };
var app = new GildedRose(items);
app.UpdateQuality();
Assert.That(items[0].Quality, Is.EqualTo(11));
}
[Test]
public void AgedBrie_QualityNeverExceedsFifty()
{
var items = new List<Item> { new Item { Name = ItemCategory.AgedBrie, SellIn = 5, Quality = 50 } };
var app = new GildedRose(items);
app.UpdateQuality();
Assert.That(items[0].Quality, Is.EqualTo(50));
}
[Test]
public void Sulfuras_NeverChanges()
{
var items = new List<Item> { new Item { Name = ItemCategory.Sulfuras, SellIn = 5, Quality = 80 } };
var app = new GildedRose(items);
app.UpdateQuality();
Assert.That(items[0].Quality, Is.EqualTo(80));
Assert.That(items[0].SellIn, Is.EqualTo(5));
}
[Test]
public void BackstagePasses_IncreasesInQuality()
{
var items = new List<Item> { new Item { Name = ItemCategory.BackstagePasses, SellIn = 15, Quality = 20 } };
var app = new GildedRose(items);
app.UpdateQuality();
Assert.That(items[0].Quality, Is.EqualTo(21));
}
[Test]
public void BackstagePasses_IncreasesByTwoWhenTenDaysOrLess()
{
var items = new List<Item> { new Item { Name = ItemCategory.BackstagePasses, SellIn = 10, Quality = 20 } };
var app = new GildedRose(items);
app.UpdateQuality();
Assert.That(items[0].Quality, Is.EqualTo(22));
}
[Test]
public void BackstagePasses_IncreasesByThreeWhenFiveDaysOrLess()
{
var items = new List<Item> { new Item { Name = ItemCategory.BackstagePasses, SellIn = 5, Quality = 20 } };
var app = new GildedRose(items);
app.UpdateQuality();
Assert.That(items[0].Quality, Is.EqualTo(23));
}
[Test]
public void BackstagePasses_QualityDropsToZeroAfterConcert()
{
var items = new List<Item> { new Item { Name = ItemCategory.BackstagePasses, SellIn = 0, Quality = 20 } };
var app = new GildedRose(items);
app.UpdateQuality();
Assert.That(items[0].Quality, Is.EqualTo(0));
}
[Test]
public void ConjuredItem_DegradesAtNormalRate()
{
var items = new List<Item> { new Item { Name = ItemCategory.Conjured, SellIn = 5, Quality = 20 } };
var app = new GildedRose(items);
app.UpdateQuality();
Assert.That(items[0].Quality, Is.EqualTo(19));
}
[Test]
public void ConjuredItem_DegradesAtNormalRateAfterSellIn()
{
var items = new List<Item> { new Item { Name = ItemCategory.Conjured, SellIn = 0, Quality = 20 } };
var app = new GildedRose(items);
app.UpdateQuality();
Assert.That(items[0].Quality, Is.EqualTo(18));
}
[Test]
public void QualityIsNeverNegative()
{
var items = new List<Item>
{
new Item { Name = "Standard Item", SellIn = 5, Quality = 0 },
new Item { Name = ItemCategory.Conjured, SellIn = 5, Quality = 0 }
};
var app = new GildedRose(items);
app.UpdateQuality();
Assert.That(items[0].Quality, Is.EqualTo(0));
Assert.That(items[1].Quality, Is.EqualTo(0));
}
}