diff --git a/csharp/GildedRose.cs b/csharp/GildedRose.cs index 82f4904c..373bc7ea 100644 --- a/csharp/GildedRose.cs +++ b/csharp/GildedRose.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; namespace csharp { + #region Interface interface IUpdateInterface { void CalculateItemQuality(Item item, int decrementValue, int incrementValue); //takes 3 self explanatory params. @@ -10,15 +11,19 @@ namespace csharp void MinMaxRules(Item item); // Minimum and Maximum Rules for item quality void ReduceSellIn(Item item); // Reduce number of days left method } + #endregion public class GildedRose : IUpdateInterface { - IList Items; + #region constructor + private IList Items; public GildedRose(IList Items) { this.Items = Items; } + #endregion + #region Update Quality public void UpdateQuality() { foreach (var Item in Items) // Changed this to a simpler loop @@ -30,8 +35,7 @@ namespace csharp CalculateSpecialItemQuality(Item); break; case 2: - CalculateLegendaryItemQuality - (Item, 0, 0); + CalculateLegendaryItemQuality(Item); break; case 3: CalculateItemQuality(Item, 4, 0); @@ -40,88 +44,54 @@ namespace csharp CalculateItemQuality(Item, 2, 0); break; } - //if (Item.Name == "Aged Brie") - //{ - // CalculateSpecialItemQuality(Item); - // //MinMaxRules(Item); - // //return; - //} - //else if (Item.Name == "Sulfuras, Hand of Ragnaros") - //{ - // //CalculateQuality(Item, 0, 0); - // //return; - //} - //else if (Item.Name == "Conjured Mana Cake") - //{ - // CalculateStandardItemQuality(Item, 4, 0); - // //return; - //} - //else - //{ - // CalculateStandardItemQuality(Item, 2, 0); - // //return; - //} } } + #endregion + #region Calculate Item Quality public void CalculateItemQuality(Item item, int decrementValue, int IncrementValue) // To calculate the quality of each item { - //if (item.SellIn > 0 ) - { - item.Quality = item.Quality - decrementValue; - } + item.Quality -= decrementValue; MinMaxRules(item); ReduceSellIn(item); } - public void CalculateLegendaryItemQuality(Item item, int decrementValue, int IncrementValue) // To calculate the quality of each item + #endregion + + #region Calculate LEgendary Item Quality + public void CalculateLegendaryItemQuality(Item item) // To calculate the quality of each item { - ////if (item.SellIn > 0 ) - //{ - // item.Quality = item.Quality - decrementValue; - //} - //MinMaxRules(item); ReduceSellIn(item); } + #endregion + + #region Calculate Special Item Quality public void CalculateSpecialItemQuality(Item item) // Specific for the AgedBrie Special Item { - if (item.SellIn == 0) - { - item.Quality = 0; - } - - if (item.SellIn <= 10 && item.SellIn > 5 && item.SellIn > 0) - { - item.Quality = item.Quality + 2; - } - - if (item.SellIn <= 5 && item.SellIn > 0) - { - item.Quality = item.Quality + 3; - } + item.Quality = item.SellIn == 0 ? 0 : item.Quality; + item.Quality = (item.SellIn <= 10 && item.SellIn > 5 && item.SellIn > 0) ? item.Quality + 2 : item.Quality; + item.Quality = (item.SellIn <= 5 && item.SellIn > 0) ? item.Quality + 3 : item.Quality; + ReduceSellIn(item); MinMaxRules(item); } + #endregion + #region Minimum and Maximum Rules public void MinMaxRules(Item item) //Minimum and Maximum Rules { - if (item.Quality <= 0) - { - item.Quality = 0; - } - if (item.Quality >= 50) - { - item.Quality = 50; - } + item.Quality = (item.Quality <= 0) ? 0 : item.Quality; + item.Quality = (item.Quality >= 50) ? 50 : item.Quality; } + #endregion + #region Reduce Sell In public void ReduceSellIn(Item item) //This will take care of reducing the number of days after each day { - //if (item.SellIn >= 1) - { - item.SellIn = item.SellIn - 1; - } + item.SellIn -= 1; } + #endregion + #region Categorize Items // Here is an attempt to categorize the items since am not allowed to touch the items class public int Categorize(String itemName) //This will take care of reducing the number of days after each day { @@ -143,6 +113,6 @@ namespace csharp } return categoryID; } - + #endregion } } diff --git a/csharpTests/GildedRoseTests.cs b/csharpTests/GildedRoseTests.cs index 21740927..17e4df4d 100644 --- a/csharpTests/GildedRoseTests.cs +++ b/csharpTests/GildedRoseTests.cs @@ -1,10 +1,5 @@ using Microsoft.VisualStudio.TestTools.UnitTesting; -using csharp; -using System; using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace csharp.Tests {