-
-
Save franreyes/91a807ff3deff3927d31215b21a17642 to your computer and use it in GitHub Desktop.
TDD Gilded Rose Kata test solution in C# without add changes to the Item
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using NUnit.Framework; | |
namespace Gilded_rose.Test; | |
public class GildRoseTest | |
{ | |
private const int MinQuality = 0; | |
private const int MaxQuality = 50; | |
[Test] | |
public void regular_items_quality_decreases_every_day() | |
{ | |
Item item = RegularItem(1, 3); | |
GildedRose shop = new GildedRose(new[] { item }); | |
shop.UpdateQuality(); | |
Assert.That(item.SellIn, Is.EqualTo(0)); | |
Assert.That(item.Quality, Is.EqualTo(2)); | |
} | |
[Test] | |
public void expired_regular_items_quality_decreases_twice_as_fast_once_sellIn_has_passed() | |
{ | |
Item item = RegularItem(0, 3); | |
GildedRose shop = new GildedRose(new[] { item }); | |
shop.UpdateQuality(); | |
Assert.That(item.SellIn, Is.EqualTo(-1)); | |
Assert.That(item.Quality, Is.EqualTo(1)); | |
} | |
[Test] | |
public void regular_items_quality_never_decreases_below_the_minimum_quality() | |
{ | |
Item item = RegularItem(5, 0); | |
GildedRose shop = new GildedRose(new[] { item }); | |
shop.UpdateQuality(); | |
Assert.That(item.SellIn, Is.EqualTo(4)); | |
Assert.That(item.Quality, Is.EqualTo(MinQuality)); | |
} | |
[Test] | |
public void expired_regular_items_quality_never_decreases_below_the_minimum_quality() | |
{ | |
Item item = RegularItem(0, 1); | |
GildedRose shop = new GildedRose(new[] { item }); | |
shop.UpdateQuality(); | |
Assert.That(item.SellIn, Is.EqualTo(-1)); | |
Assert.That(item.Quality, Is.EqualTo(MinQuality)); | |
} | |
[Test] | |
public void aged_brie_increases_quality_by_1() | |
{ | |
Item item = AgedBrie(5, 8); | |
GildedRose shop = new GildedRose(new[] { item }); | |
shop.UpdateQuality(); | |
Assert.That(item.SellIn, Is.EqualTo(4)); | |
Assert.That(item.Quality, Is.EqualTo(9)); | |
} | |
[Test] | |
public void aged_brie_quality_never_increases_over_the_maximun_quality() | |
{ | |
Item item = AgedBrie(5, MaxQuality); | |
GildedRose shop = new GildedRose(new[] { item }); | |
shop.UpdateQuality(); | |
Assert.That(item.SellIn, Is.EqualTo(4)); | |
Assert.That(item.Quality, Is.EqualTo(MaxQuality)); | |
} | |
[Test] | |
public void expired_aged_brie_quality_never_increases_over_the_maximun_quality() | |
{ | |
Item item = AgedBrie(0, MaxQuality - 1); | |
GildedRose shop = new GildedRose(new[] { item }); | |
shop.UpdateQuality(); | |
Assert.That(item.SellIn, Is.EqualTo(-1)); | |
Assert.That(item.Quality, Is.EqualTo(MaxQuality)); | |
} | |
[Test] | |
public void expired_aged_brie_increases_quality_by_2() | |
{ | |
Item item = AgedBrie(0, 8); | |
GildedRose shop = new GildedRose(new[] { item }); | |
shop.UpdateQuality(); | |
Assert.That(item.SellIn, Is.EqualTo(-1)); | |
Assert.That(item.Quality, Is.EqualTo(10)); | |
} | |
[Test] | |
public void sulfuras_never_changes() | |
{ | |
Item item = Sulfuras(1, 80); | |
GildedRose shop = new GildedRose(new[] { item }); | |
shop.UpdateQuality(); | |
Assert.That(item.SellIn, Is.EqualTo(1)); | |
Assert.That(item.Quality, Is.EqualTo(80)); | |
} | |
[Test] | |
public void expired_sulfuras_never_changes() | |
{ | |
Item item = Sulfuras(-1, 80); | |
GildedRose shop = new GildedRose(new[] { item }); | |
shop.UpdateQuality(); | |
Assert.That(item.SellIn, Is.EqualTo(-1)); | |
Assert.That(item.Quality, Is.EqualTo(80)); | |
} | |
[Test] | |
public void backstage_increase_quality_by_1_when_sellIn_is_greater_than_10() | |
{ | |
Item item = BackstagePasses(11, 6); | |
GildedRose shop = new GildedRose(new[] { item }); | |
shop.UpdateQuality(); | |
Assert.That(item.SellIn, Is.EqualTo(10)); | |
Assert.That(item.Quality, Is.EqualTo(7)); | |
} | |
[Test] | |
public void backstage_increase_quality_by_2_when_sellIn_is_between_10_and_6() | |
{ | |
Item item1 = BackstagePasses(10, 6); | |
Item item2 = BackstagePasses(6, 20); | |
GildedRose shop = new GildedRose(new[] { item1, item2 }); | |
shop.UpdateQuality(); | |
Assert.That(item1.SellIn, Is.EqualTo(9)); | |
Assert.That(item1.Quality, Is.EqualTo(8)); | |
Assert.That(item2.SellIn, Is.EqualTo(5)); | |
Assert.That(item2.Quality, Is.EqualTo(22)); | |
} | |
[Test] | |
public void backstage_increase_quality_by_3_when_sellIn_is_between_5_and_1() | |
{ | |
Item item1 = BackstagePasses(5, 6); | |
Item item2 = BackstagePasses(1, 20); | |
GildedRose shop = new GildedRose(new[] { item1, item2 }); | |
shop.UpdateQuality(); | |
Assert.That(item1.SellIn, Is.EqualTo(4)); | |
Assert.That(item1.Quality, Is.EqualTo(9)); | |
Assert.That(item2.SellIn, Is.EqualTo(0)); | |
Assert.That(item2.Quality, Is.EqualTo(23)); | |
} | |
[Test] | |
public void backstage_quality_drops_to_0_after_the_concert() | |
{ | |
Item item = BackstagePasses(0, 6); | |
GildedRose shop = new GildedRose(new[] { item }); | |
shop.UpdateQuality(); | |
Assert.That(item.SellIn, Is.EqualTo(-1)); | |
Assert.That(item.Quality, Is.EqualTo(MinQuality)); | |
} | |
[Test] | |
public void backstage_quality_never_increases_over_the_maximun_quality_when_increasing_by_1() | |
{ | |
Item item = BackstagePasses(11, MaxQuality); | |
GildedRose shop = new GildedRose(new[] { item }); | |
shop.UpdateQuality(); | |
Assert.That(item.SellIn, Is.EqualTo(10)); | |
Assert.That(item.Quality, Is.EqualTo(MaxQuality)); | |
} | |
[Test] | |
public void backstage_quality_never_increases_over_the_maximun_quality_when_increasing_by_2() | |
{ | |
Item item = BackstagePasses(8, MaxQuality - 1); | |
GildedRose shop = new GildedRose(new[] { item }); | |
shop.UpdateQuality(); | |
Assert.That(item.SellIn, Is.EqualTo(7)); | |
Assert.That(item.Quality, Is.EqualTo(MaxQuality)); | |
} | |
[Test] | |
public void backstage_quality_never_increases_over_the_maximun_quality_when_increasing_by_3() | |
{ | |
Item item = BackstagePasses(4, MaxQuality - 2); | |
GildedRose shop = new GildedRose(new[] { item }); | |
shop.UpdateQuality(); | |
Assert.That(item.SellIn, Is.EqualTo(3)); | |
Assert.That(item.Quality, Is.EqualTo(MaxQuality)); | |
} | |
[Test] | |
public void update_several_items() | |
{ | |
Item item1 = RegularItem(1, 3); | |
Item item2 = AgedBrie(2, 3); | |
GildedRose shop = new GildedRose(new[] { item1, item2 }); | |
shop.UpdateQuality(); | |
Assert.That(item1.SellIn, Is.EqualTo(0)); | |
Assert.That(item1.Quality, Is.EqualTo(2)); | |
Assert.That(item2.SellIn, Is.EqualTo(1)); | |
Assert.That(item2.Quality, Is.EqualTo(4)); | |
} | |
private Item RegularItem(int sellIn, int quality) | |
{ | |
return new Item("foo", sellIn, quality); | |
} | |
private Item AgedBrie(int sellIn, int quality) | |
{ | |
return new Item("Aged Brie", sellIn, quality); | |
} | |
private Item Sulfuras(int sellIn, int quality) | |
{ | |
return new Item("Sulfuras, Hand of Ragnaros", sellIn, quality); | |
} | |
private Item BackstagePasses(int sellIn, int quality) | |
{ | |
return new Item("Backstage passes to a TAFKAL80ETC concert", sellIn, quality); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment