From 306315c2ffade074a8fbf198b83dbf232c16c637 Mon Sep 17 00:00:00 2001 From: Ismail TAHA JANAN Date: Fri, 23 Sep 2022 16:36:03 +0200 Subject: [PATCH] :zap: #59 feat:Die become abstract & add dice tipes as children --- Sources/Data/Stub.cs | 16 ++++++++-------- Sources/Model/AbstractDie.cs | 30 ++++++++++++++++++++++++++++++ Sources/Model/ColorDie.cs | 24 ++++++++++++++++++++++++ Sources/Model/Die.cs | 14 -------------- Sources/Model/ImageDie.cs | 22 ++++++++++++++++++++++ Sources/Model/NumberDie.cs | 23 +++++++++++++++++++++++ Sources/Tests/Model_UTs/DieTest.cs | 2 +- 7 files changed, 108 insertions(+), 23 deletions(-) create mode 100644 Sources/Model/AbstractDie.cs create mode 100644 Sources/Model/ColorDie.cs delete mode 100644 Sources/Model/Die.cs create mode 100644 Sources/Model/ImageDie.cs create mode 100644 Sources/Model/NumberDie.cs diff --git a/Sources/Data/Stub.cs b/Sources/Data/Stub.cs index 701eb9b..7896c10 100644 --- a/Sources/Data/Stub.cs +++ b/Sources/Data/Stub.cs @@ -29,16 +29,16 @@ namespace Data return list; } - public static List LoadDices() + public static List LoadDices() { - List list = new() + List list = new() { - new Die("Dice 1"), - new Die("Dice 1"), - new Die("Dice 1"), - new Die("Dice 1"), - new Die("Dice 1"), - new Die("Dice 1") + new AbstractDie("Dice 1"), + new AbstractDie("Dice 1"), + new AbstractDie("Dice 1"), + new AbstractDie("Dice 1"), + new AbstractDie("Dice 1"), + new AbstractDie("Dice 1") }; return list; diff --git a/Sources/Model/AbstractDie.cs b/Sources/Model/AbstractDie.cs new file mode 100644 index 0000000..88a3df8 --- /dev/null +++ b/Sources/Model/AbstractDie.cs @@ -0,0 +1,30 @@ +using System.Collections.Generic; + +namespace Model +{ + public abstract class AbstractDie where T : AbstractDieFace + { + protected string Name; + public IEnumerable ListFaces => listFaces; + + private readonly List listFaces =new(); + + public AbstractDie(string name, params T[] faces) + { + this.Name = name; + listFaces.AddRange(faces) ; + } + + + + public string GetName() => Name; + + public abstract AbstractDieFace GetRandomFace(); + + public List GetDieFaces() + { + return (List)ListFaces; + } + + } +} diff --git a/Sources/Model/ColorDie.cs b/Sources/Model/ColorDie.cs new file mode 100644 index 0000000..191e66a --- /dev/null +++ b/Sources/Model/ColorDie.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Model +{ + public class ColorDie : AbstractDie + { + public ColorDie(string name, params ColorDieFace[] faces) : base(name, faces) + { + } + + public override AbstractDieFace GetRandomFace() + { + Random rnd = new(); + int faceIndex = rnd.Next(1, ListFaces.Count() + 1); + return ListFaces.ElementAt(faceIndex); + } + } +} diff --git a/Sources/Model/Die.cs b/Sources/Model/Die.cs deleted file mode 100644 index 4074712..0000000 --- a/Sources/Model/Die.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace Model -{ - public class Die - { - private readonly string _name; - - public Die(string name) - { - _name = name; - } - - public string Name => _name; - } -} diff --git a/Sources/Model/ImageDie.cs b/Sources/Model/ImageDie.cs new file mode 100644 index 0000000..2daf6bb --- /dev/null +++ b/Sources/Model/ImageDie.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Model +{ + public class ImageDie : AbstractDie + { + + public ImageDie(string name, params ImageDieFace[] faces) : base(name, faces) + { + } + public override ImageDieFace GetRandomFace() + { + Random rnd = new(); + int faceIndex = rnd.Next(1, ListFaces.Count() + 1); + return ListFaces.ElementAt(faceIndex); + } + } +} diff --git a/Sources/Model/NumberDie.cs b/Sources/Model/NumberDie.cs new file mode 100644 index 0000000..211ac15 --- /dev/null +++ b/Sources/Model/NumberDie.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Model +{ + public class NumberDie : AbstractDie + { + + public NumberDie(string name, params NumberDieFace[] faces ) : base(name,faces) + { + } + public override NumberDieFace GetRandomFace() + { + Random rnd = new(); + int faceIndex = rnd.Next(1, ListFaces.Count()+1); + return ListFaces.ElementAt(faceIndex); + + } + } +} diff --git a/Sources/Tests/Model_UTs/DieTest.cs b/Sources/Tests/Model_UTs/DieTest.cs index b2ea67f..9b42ce0 100644 --- a/Sources/Tests/Model_UTs/DieTest.cs +++ b/Sources/Tests/Model_UTs/DieTest.cs @@ -8,7 +8,7 @@ namespace Tests.Model_UTs [Fact] public void TestConstructor() { - Die die = new Die("Ben"); + AbstractDie die = new AbstractDie("Ben"); Assert.Equal("Ben", die.Name); } }