From e625aed95aaa801e62365e1f1b8699c05d7e7441 Mon Sep 17 00:00:00 2001 From: Adefolarin Adeniji Date: Fri, 27 Aug 2021 15:01:36 +0100 Subject: [PATCH] Updates - Updated CustomMethod - Updated implementation of update quality and sellin in derived classes --- .../GildedRose/Abstraction/GlidedRoseItem.cs | 6 --- .../GildedRose/Abstraction/ICustomMethod.cs | 10 +++++ csharpcore/GildedRose/Item.cs | 4 +- csharpcore/GildedRose/Models/AgedBrie.cs | 22 +++++++++-- .../GildedRose/Models/BackStagePasses.cs | 33 +++++++++++++++-- csharpcore/GildedRose/Models/Conjured.cs | 21 +++++++++-- csharpcore/GildedRose/Models/DexterityVest.cs | 21 +++++++++-- csharpcore/GildedRose/Models/Elixir.cs | 22 +++++++++++ csharpcore/GildedRose/Models/Sulfuras.cs | 20 ++++++++++ csharpcore/GildedRose/Program.cs | 37 +++++++++++-------- csharpcore/GildedRose/Sulfuras.cs | 9 ----- csharpcore/GildedRoseTests/GildedRoseTest.cs | 2 +- 12 files changed, 159 insertions(+), 48 deletions(-) delete mode 100644 csharpcore/GildedRose/Abstraction/GlidedRoseItem.cs create mode 100644 csharpcore/GildedRose/Abstraction/ICustomMethod.cs create mode 100644 csharpcore/GildedRose/Models/Elixir.cs create mode 100644 csharpcore/GildedRose/Models/Sulfuras.cs delete mode 100644 csharpcore/GildedRose/Sulfuras.cs diff --git a/csharpcore/GildedRose/Abstraction/GlidedRoseItem.cs b/csharpcore/GildedRose/Abstraction/GlidedRoseItem.cs deleted file mode 100644 index 70dc31d3..00000000 --- a/csharpcore/GildedRose/Abstraction/GlidedRoseItem.cs +++ /dev/null @@ -1,6 +0,0 @@ -public abstract class GuidedRoseItem { - - abstract void UpdateQuality(); - abstract void UpdateSellIn(); - -} \ No newline at end of file diff --git a/csharpcore/GildedRose/Abstraction/ICustomMethod.cs b/csharpcore/GildedRose/Abstraction/ICustomMethod.cs new file mode 100644 index 00000000..568e1f3b --- /dev/null +++ b/csharpcore/GildedRose/Abstraction/ICustomMethod.cs @@ -0,0 +1,10 @@ +namespace GildedRose.Abstraction +{ + public interface ICustomMethod + { + public int SellDaysGone { get; set; } + public abstract void UpdateQuality(); + public abstract void UpdateSellIn(); + + } +} \ No newline at end of file diff --git a/csharpcore/GildedRose/Item.cs b/csharpcore/GildedRose/Item.cs index 3d87cab4..cf34d5a1 100644 --- a/csharpcore/GildedRose/Item.cs +++ b/csharpcore/GildedRose/Item.cs @@ -1,4 +1,6 @@ -namespace GildedRoseKata +using System; + +namespace GildedRoseKata { public class Item { diff --git a/csharpcore/GildedRose/Models/AgedBrie.cs b/csharpcore/GildedRose/Models/AgedBrie.cs index 522b1c34..f4592595 100644 --- a/csharpcore/GildedRose/Models/AgedBrie.cs +++ b/csharpcore/GildedRose/Models/AgedBrie.cs @@ -1,9 +1,23 @@ -public class AgedBrie : Item, GuidedRoseItem { - - public override void UpdateQuality() { +using GildedRose.Abstraction; +using GildedRoseKata; +namespace GildedRose.Models +{ + public class AgedBrie : Item, ICustomMethod + { + public int SellDaysGone { get; set; } + public void UpdateQuality() { + if (this.Quality < 51) + { + this.Quality++; + } + } + public void UpdateSellIn() + { + if (this.SellIn > 0) + this.SellIn--; + } } - } \ No newline at end of file diff --git a/csharpcore/GildedRose/Models/BackStagePasses.cs b/csharpcore/GildedRose/Models/BackStagePasses.cs index f7a818e2..1e415177 100644 --- a/csharpcore/GildedRose/Models/BackStagePasses.cs +++ b/csharpcore/GildedRose/Models/BackStagePasses.cs @@ -1,9 +1,36 @@ -public class BackStagePasses : Item, GuidedRoseItem { +using GildedRose.Abstraction; +using GildedRoseKata; - public override void UpdateQuality() { +namespace GildedRose.Models +{ + public class BackStagePasses : Item, ICustomMethod + { + public int SellDaysGone { get; set; } + public void UpdateQuality() + { + if (this.SellDaysGone > this.SellIn) + { + this.Quality = 0; + } + if ((this.SellIn - this.SellDaysGone) <= 5) + { + if (this.Quality < 51) + this.Quality += 3; + } + if ((this.SellIn - this.SellDaysGone) <= 10) + { + if (this.Quality < 51) + this.Quality += 2; + } + } + + public void UpdateSellIn() + { + if (this.SellIn > 0) + this.SellIn--; + } } - } \ No newline at end of file diff --git a/csharpcore/GildedRose/Models/Conjured.cs b/csharpcore/GildedRose/Models/Conjured.cs index 4a16640c..a7a4344e 100644 --- a/csharpcore/GildedRose/Models/Conjured.cs +++ b/csharpcore/GildedRose/Models/Conjured.cs @@ -1,9 +1,22 @@ -public class Conjured : Item, GuidedRoseItem { - - public override void UpdateQuality() { +using GildedRose.Abstraction; +using GildedRoseKata; +namespace GildedRose.Models +{ + public class Conjured : Item, ICustomMethod + { + public int SellDaysGone { get; set; } + public void UpdateQuality() + { + if (this.SellDaysGone > this.SellIn && this.Quality > 1) + this.Quality -= 2; + } + public void UpdateSellIn() + { + if (this.SellIn > 0) + this.SellIn--; + } } - } \ No newline at end of file diff --git a/csharpcore/GildedRose/Models/DexterityVest.cs b/csharpcore/GildedRose/Models/DexterityVest.cs index cb01cc0d..95e4c1b5 100644 --- a/csharpcore/GildedRose/Models/DexterityVest.cs +++ b/csharpcore/GildedRose/Models/DexterityVest.cs @@ -1,9 +1,22 @@ -public class Dexterity : Item, GuidedRoseItem { - - public override void UpdateQuality() { +using GildedRose.Abstraction; +using GildedRoseKata; +namespace GildedRose.Models +{ + public class Dexterity : Item, ICustomMethod + { + public int SellDaysGone { get; set; } + public void UpdateQuality() + { + if (this.SellDaysGone > this.SellIn && this.Quality > 0) + this.Quality--; + } + public void UpdateSellIn() + { + if (this.SellIn > 0) + this.SellIn--; + } } - } \ No newline at end of file diff --git a/csharpcore/GildedRose/Models/Elixir.cs b/csharpcore/GildedRose/Models/Elixir.cs new file mode 100644 index 00000000..e1c8fb00 --- /dev/null +++ b/csharpcore/GildedRose/Models/Elixir.cs @@ -0,0 +1,22 @@ +using GildedRose.Abstraction; +using GildedRoseKata; + +namespace GildedRose.Models +{ + public class Elixir : Item, ICustomMethod + { + public int SellDaysGone { get; set; } + + public void UpdateQuality() + { + if (this.SellDaysGone > this.SellIn && this.Quality > 0) + this.Quality --; + } + + public void UpdateSellIn() + { + if (this.SellIn > 0) + this.SellIn--; + } + } +} diff --git a/csharpcore/GildedRose/Models/Sulfuras.cs b/csharpcore/GildedRose/Models/Sulfuras.cs new file mode 100644 index 00000000..62fc1319 --- /dev/null +++ b/csharpcore/GildedRose/Models/Sulfuras.cs @@ -0,0 +1,20 @@ +using GildedRose.Abstraction; +using GildedRoseKata; + +namespace GildedRose.Models +{ + public class Sulfuras : Item, ICustomMethod + { + public int SellDaysGone { get; set; } + + public void UpdateQuality() + { + // do thing + } + + public void UpdateSellIn() + { + // do nothing + } + } +} diff --git a/csharpcore/GildedRose/Program.cs b/csharpcore/GildedRose/Program.cs index 1367fe73..a0c9c13f 100644 --- a/csharpcore/GildedRose/Program.cs +++ b/csharpcore/GildedRose/Program.cs @@ -1,5 +1,8 @@ using System; using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using GildedRose.Models; namespace GildedRoseKata { @@ -9,45 +12,47 @@ namespace GildedRoseKata { 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 + IList items = new List{ + new Dexterity() {Name = "+5 Dexterity Vest", SellIn = 10, Quality = 20}, + new AgedBrie() {Name = "Aged Brie", SellIn = 2, Quality = 0}, + new Elixir() {Name = "Elixir of the Mongoose", SellIn = 5, Quality = 7}, + new Sulfuras() {Name = "Sulfuras, Hand of Ragnaros", SellIn = 0, Quality = 80}, + new Sulfuras {Name = "Sulfuras, Hand of Ragnaros", SellIn = -1, Quality = 80}, + new BackStagePasses() { Name = "Backstage passes to a TAFKAL80ETC concert", SellIn = 15, Quality = 20 }, - new Item + new BackStagePasses { Name = "Backstage passes to a TAFKAL80ETC concert", SellIn = 10, Quality = 49 }, - new Item + new BackStagePasses { 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} + new Conjured() {Name = "Conjured Mana Cake", SellIn = 3, Quality = 6} }; - - var app = new GildedRose(Items); - - + + var app = new GildedRose(items); + for (var i = 0; i < 31; i++) { Console.WriteLine("-------- day " + i + " --------"); Console.WriteLine("name, sellIn, quality"); - for (var j = 0; j < Items.Count; j++) + + foreach (Item t in items) { - System.Console.WriteLine(Items[j].Name + ", " + Items[j].SellIn + ", " + Items[j].Quality); + Console.WriteLine(t.Name + ", " + t.SellIn + ", " + t.Quality); + } + Console.WriteLine(""); app.UpdateQuality(); } diff --git a/csharpcore/GildedRose/Sulfuras.cs b/csharpcore/GildedRose/Sulfuras.cs deleted file mode 100644 index c56c767a..00000000 --- a/csharpcore/GildedRose/Sulfuras.cs +++ /dev/null @@ -1,9 +0,0 @@ -public class Sulfuras : Item, GuidedRoseItem { - - public override void UpdateQuality() { - - - - } - -} \ No newline at end of file diff --git a/csharpcore/GildedRoseTests/GildedRoseTest.cs b/csharpcore/GildedRoseTests/GildedRoseTest.cs index 6e5d24b6..ec5c2262 100644 --- a/csharpcore/GildedRoseTests/GildedRoseTest.cs +++ b/csharpcore/GildedRoseTests/GildedRoseTest.cs @@ -10,7 +10,7 @@ namespace GildedRoseTests public void foo() { IList Items = new List { new Item { Name = "foo", SellIn = 0, Quality = 0 } }; - GildedRose app = new GildedRose(Items); + GildedRoseKata.GildedRose app = new GildedRoseKata.GildedRose(Items); app.UpdateQuality(); Assert.Equal("fixme", Items[0].Name); }