diff --git a/GildedRose/csharp/ApprovalTest.cs b/GildedRose/csharp/ApprovalTest.cs new file mode 100644 index 00000000..ad294419 --- /dev/null +++ b/GildedRose/csharp/ApprovalTest.cs @@ -0,0 +1,28 @@ +using System; +using System.IO; +using System.Text; +using GildedRose; +using NUnit.Framework; +using ApprovalTests; +using ApprovalTests.Reporters; + +namespace GildedRoseTests +{ + [TestFixture] + [UseReporter(typeof(NUnitReporter))] + public class ApprovalTest + { + [Test] + public void ThirtyDays() + { + StringBuilder fakeoutput = new StringBuilder(); + Console.SetOut(new StringWriter(fakeoutput)); + Console.SetIn(new StringReader("a\n")); + + Program.Main(new string[] { }); + String output = fakeoutput.ToString(); + Approvals.Verify(output); + } + } + +} \ No newline at end of file diff --git a/GildedRose/csharp/GildedRose.cs b/GildedRose/csharp/GildedRose.cs new file mode 100644 index 00000000..a0017b2e --- /dev/null +++ b/GildedRose/csharp/GildedRose.cs @@ -0,0 +1,100 @@ +using System.Collections.Generic; + +namespace GildedRose +{ + class GildedRose + { + IList Items; + public GildedRose(IList Items) + { + this.Items = Items; + } + + public void UpdateQuality() + { + for (var i = 0; i < Items.Count; i++) + { + if (Items[i].Name != "Aged Brie" && Items[i].Name != "Backstage passes to a TAFKAL80ETC concert") + { + if (Items[i].Quality > 0) + { + if (Items[i].Name != "Sulfuras, Hand of Ragnaros") + { + Items[i].Quality = Items[i].Quality - 1; + } + } + } + else + { + if (Items[i].Quality < 50) + { + Items[i].Quality = Items[i].Quality + 1; + + if (Items[i].Name == "Backstage passes to a TAFKAL80ETC concert") + { + if (Items[i].SellIn < 11) + { + if (Items[i].Quality < 50) + { + Items[i].Quality = Items[i].Quality + 1; + } + } + + if (Items[i].SellIn < 6) + { + if (Items[i].Quality < 50) + { + Items[i].Quality = Items[i].Quality + 1; + } + } + } + } + } + + if (Items[i].Name != "Sulfuras, Hand of Ragnaros") + { + Items[i].SellIn = Items[i].SellIn - 1; + } + + if (Items[i].SellIn < 0) + { + if (Items[i].Name != "Aged Brie") + { + if (Items[i].Name != "Backstage passes to a TAFKAL80ETC concert") + { + if (Items[i].Quality > 0) + { + if (Items[i].Name != "Sulfuras, Hand of Ragnaros") + { + Items[i].Quality = Items[i].Quality - 1; + } + } + } + else + { + Items[i].Quality = Items[i].Quality - Items[i].Quality; + } + } + else + { + if (Items[i].Quality < 50) + { + Items[i].Quality = Items[i].Quality + 1; + } + } + } + } + } + + } + + public class Item + { + public string Name { get; set; } + + public int SellIn { get; set; } + + public int Quality { get; set; } + } + +} diff --git a/GildedRose/csharp/GildedRoseTest.cs b/GildedRose/csharp/GildedRoseTest.cs new file mode 100644 index 00000000..02fd5b21 --- /dev/null +++ b/GildedRose/csharp/GildedRoseTest.cs @@ -0,0 +1,19 @@ +using System; +using NUnit.Framework; +using System.Collections.Generic; + +namespace GildedRose +{ + [TestFixture()] + public class GildedRoseTest + { + [Test()] + public void foo() { + 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); + } + } +} + diff --git a/GildedRose/csharp/Program.cs b/GildedRose/csharp/Program.cs deleted file mode 100644 index 3ba8371e..00000000 --- a/GildedRose/csharp/Program.cs +++ /dev/null @@ -1,147 +0,0 @@ -using System.Collections.Generic; - -namespace GildedRose.Console -{ - class Program - { - IList Items; - static void Main(string[] args) - { - System.Console.WriteLine("OMGHAI!"); - - var app = new Program() - { - Items = new List - { - new Item {Name = "+5 Dexterity Vest", SellIn = 10, Quality = 20}, - new Item {Name = "Aged Brie", SellIn = 2, Quality = 0}, - new Item {Name = "Elixir of the Mongoose", SellIn = 5, Quality = 7}, - new Item {Name = "Sulfuras, Hand of Ragnaros", SellIn = 0, Quality = 80}, - new Item {Name = "Sulfuras, Hand of Ragnaros", SellIn = -1, Quality = 80}, - new Item - { - Name = "Backstage passes to a TAFKAL80ETC concert", - SellIn = 15, - Quality = 20 - }, - new Item - { - Name = "Backstage passes to a TAFKAL80ETC concert", - SellIn = 10, - Quality = 49 - }, - new Item - { - Name = "Backstage passes to a TAFKAL80ETC concert", - SellIn = 5, - Quality = 49 - }, - // this conjured item does not work properly yet - new Item {Name = "Conjured Mana Cake", SellIn = 3, Quality = 6} - } - - }; - - for (var i = 0; i < 31; i++) - { - System.Console.WriteLine("-------- day " + i + " --------"); - System.Console.WriteLine("name, sellIn, quality"); - for (var j = 0; j < app.Items.Count; j++) - { - System.Console.WriteLine(app.Items[j].Name + ", " + app.Items[j].SellIn + ", " + app.Items[j].Quality); - } - System.Console.WriteLine(""); - app.UpdateQuality(); - } - System.Console.ReadKey(); - - } - - public void UpdateQuality() - { - for (var i = 0; i < Items.Count; i++) - { - if (Items[i].Name != "Aged Brie" && Items[i].Name != "Backstage passes to a TAFKAL80ETC concert") - { - if (Items[i].Quality > 0) - { - if (Items[i].Name != "Sulfuras, Hand of Ragnaros") - { - Items[i].Quality = Items[i].Quality - 1; - } - } - } - else - { - if (Items[i].Quality < 50) - { - Items[i].Quality = Items[i].Quality + 1; - - if (Items[i].Name == "Backstage passes to a TAFKAL80ETC concert") - { - if (Items[i].SellIn < 11) - { - if (Items[i].Quality < 50) - { - Items[i].Quality = Items[i].Quality + 1; - } - } - - if (Items[i].SellIn < 6) - { - if (Items[i].Quality < 50) - { - Items[i].Quality = Items[i].Quality + 1; - } - } - } - } - } - - if (Items[i].Name != "Sulfuras, Hand of Ragnaros") - { - Items[i].SellIn = Items[i].SellIn - 1; - } - - if (Items[i].SellIn < 0) - { - if (Items[i].Name != "Aged Brie") - { - if (Items[i].Name != "Backstage passes to a TAFKAL80ETC concert") - { - if (Items[i].Quality > 0) - { - if (Items[i].Name != "Sulfuras, Hand of Ragnaros") - { - Items[i].Quality = Items[i].Quality - 1; - } - } - } - else - { - Items[i].Quality = Items[i].Quality - Items[i].Quality; - } - } - else - { - if (Items[i].Quality < 50) - { - Items[i].Quality = Items[i].Quality + 1; - } - } - } - } - } - - } - - public class Item - { - public string Name { get; set; } - - public int SellIn { get; set; } - - public int Quality { get; set; } - } - -} diff --git a/GildedRose/csharp/TextTestFixture.cs b/GildedRose/csharp/TextTestFixture.cs new file mode 100644 index 00000000..3283aba9 --- /dev/null +++ b/GildedRose/csharp/TextTestFixture.cs @@ -0,0 +1,58 @@ +using System; +using System.Collections.Generic; + +namespace GildedRose +{ + class Program + { + public static void Main(string[] args) + { + System.Console.WriteLine("OMGHAI!"); + + IList Items = new List{ + new Item {Name = "+5 Dexterity Vest", SellIn = 10, Quality = 20}, + new Item {Name = "Aged Brie", SellIn = 2, Quality = 0}, + new Item {Name = "Elixir of the Mongoose", SellIn = 5, Quality = 7}, + new Item {Name = "Sulfuras, Hand of Ragnaros", SellIn = 0, Quality = 80}, + new Item {Name = "Sulfuras, Hand of Ragnaros", SellIn = -1, Quality = 80}, + new Item + { + Name = "Backstage passes to a TAFKAL80ETC concert", + SellIn = 15, + Quality = 20 + }, + new Item + { + Name = "Backstage passes to a TAFKAL80ETC concert", + SellIn = 10, + Quality = 49 + }, + new Item + { + Name = "Backstage passes to a TAFKAL80ETC concert", + SellIn = 5, + Quality = 49 + }, + // this conjured item does not work properly yet + new Item {Name = "Conjured Mana Cake", SellIn = 3, Quality = 6} + }; + + var app = new GildedRose(Items); + + + for (var i = 0; i < 31; i++) + { + System.Console.WriteLine("-------- day " + i + " --------"); + System.Console.WriteLine("name, sellIn, quality"); + for (var j = 0; j < Items.Count; j++) + { + System.Console.WriteLine(Items[j].Name + ", " + Items[j].SellIn + ", " + Items[j].Quality); + } + System.Console.WriteLine(""); + app.UpdateQuality(); + } + + } + + } +} diff --git a/GildedRose/texttests/config.gr b/GildedRose/texttests/config.gr index e7b88344..b301079d 100755 --- a/GildedRose/texttests/config.gr +++ b/GildedRose/texttests/config.gr @@ -20,7 +20,7 @@ interpreter:java #interpreter:ruby # Settings for the C# version -#executable:${TEXTTEST_CHECKOUT}/csharp/Program.exe +#executable:${TEXTTEST_CHECKOUT}/GildedRose.exe # turn on one of these if you prefer them to notepad or emacs. [view_program]