diff --git a/BlazorSolution/MiniGames/Client/ViewModel/Uno.cs b/BlazorSolution/MiniGames/Client/ViewModel/Uno.cs index e28619d..49acfc6 100644 --- a/BlazorSolution/MiniGames/Client/ViewModel/Uno.cs +++ b/BlazorSolution/MiniGames/Client/ViewModel/Uno.cs @@ -177,7 +177,6 @@ namespace MiniGames.Client.ViewModel ZiehKartenStapel.KartenModels.RemoveAt(0); } } - } public static StapelModel ErstelleJokerKarten() diff --git a/BlazorSolution/MiniGamesTests/UnoTest.cs b/BlazorSolution/MiniGamesTests/UnoTest.cs index a87f78b..2df4723 100644 --- a/BlazorSolution/MiniGamesTests/UnoTest.cs +++ b/BlazorSolution/MiniGamesTests/UnoTest.cs @@ -7,392 +7,432 @@ using Xunit; namespace MiniGamesTests { - public class UnoTest - { - public Uno UnoRegeln = new(); - public List SpielerModels = new(); - - private KartenModel BeispielKarte(string name, string farbe, bool spezial) - { - var _name = name; - var _farbe = farbe; - var _spezial = spezial; - - KartenModel kartenModel = new() - { - Name = _name, - Farbe = _farbe, - Spezial = _spezial - }; - - return kartenModel; - } - - private HandKartenModel BeispielHand() - { - HandKartenModel HandStapel = new() - { - SpielerModel = new() - { - Id = 1, - SpielerName = "Andrej", - }, - - KartenModels = new() - { - new KartenModel - { - Name = Kartenbezeichnung.PlusZweiKarte.ToString(), - Farbe = Farbe.Gelb.ToString(), - Spezial = true - } - } - }; - - return HandStapel; - } - - private void BeispielSpielerModelsFüllen(int id, string spielerName) + public class UnoTest + { + public Uno UnoRegeln = new(); + public List SpielerModels = new(); + + private KartenModel BeispielKarte(string name, string farbe, bool spezial) + { + var _name = name; + var _farbe = farbe; + var _spezial = spezial; + + KartenModel kartenModel = new() + { + Name = _name, + Farbe = _farbe, + Spezial = _spezial + }; + + return kartenModel; + } + + private HandKartenModel BeispielHand() + { + HandKartenModel HandStapel = new() + { + SpielerModel = new() + { + Id = 1, + SpielerName = "Andrej", + }, + + KartenModels = new() + { + new KartenModel + { + Name = Kartenbezeichnung.PlusZweiKarte.ToString(), + Farbe = Farbe.Gelb.ToString(), + Spezial = true + } + } + }; + + return HandStapel; + } + + private void BeispielSpielerModelsFüllen(int id, string spielerName) + { + int _id = id; + string _spielerName = spielerName; + + SpielerModels.Add(new SpielerModel() + { + Id = _id, + SpielerName = _spielerName, + Punkte = 0 + }); + } + + private void BeispielMultipleSpielerModelsFüllen(int anzahlSpieler) + { + switch (anzahlSpieler) + { + case 2: + BeispielSpielerModelsFüllen(1, "Hans"); + BeispielSpielerModelsFüllen(2, "Peter"); + break; + case 3: + BeispielSpielerModelsFüllen(1, "Hans"); + BeispielSpielerModelsFüllen(2, "Peter"); + BeispielSpielerModelsFüllen(3, "Anna"); + break; + case 4: + BeispielSpielerModelsFüllen(1, "Hans"); + BeispielSpielerModelsFüllen(2, "Peter"); + BeispielSpielerModelsFüllen(3, "Anna"); + BeispielSpielerModelsFüllen(4, "Klaus"); + break; + case 5: + BeispielSpielerModelsFüllen(1, "Hans"); + BeispielSpielerModelsFüllen(2, "Peter"); + BeispielSpielerModelsFüllen(3, "Anna"); + BeispielSpielerModelsFüllen(4, "Klaus"); + BeispielSpielerModelsFüllen(5, "Brigitte"); + break; + default: + break; + } + } + + private StapelModel BeispielStapelModelKarten(string name, string farbe, bool spezial) + { + var _name = name; + var _farbe = farbe; + var _spezial = spezial; + + StapelModel TestStapel = new(); + TestStapel.KartenModels = new() + { + new KartenModel + { + Name = _name, + Farbe = _farbe, + Spezial = _spezial + }, + }; + return TestStapel; + } + + #region UserManagement + [Theory] + [InlineData("Andrej", 1)] + private void SpielerErstellenTest(string spielerName, int id) + { + //arrange + var _spielerName = spielerName; + var _id = id; + + //act + UnoRegeln.SpielerErstellen(_spielerName); + var ergebnis = UnoRegeln.Spieler; + + //assert + Assert.Equal(_spielerName, ergebnis[0].SpielerModel.SpielerName); + Assert.Equal(_id, ergebnis[0].SpielerModel.Id); + } + + [Theory] + [InlineData("Andrej", 1, "Paul", 2, "Erhard", 3)] + [InlineData("Sabine", 1, "Erich", 2, "Anna", 3)] + [InlineData("Thomas", 1, "Mike", 2, "Robin", 3)] + private void MehrereSpielerErstellenTest(string spielerEinsName, int spielerEinsId, string spielerZweiName, int spielerZweiId, string spielerDreiName, int spielerDreiId) + { + //arrange + var _spielerEinsName = spielerEinsName; + var _spielerEinsId = spielerEinsId; + var _spielerZweiName = spielerZweiName; + var _spielerZweiId = spielerZweiId; + var _spielerDreiName = spielerDreiName; + var _spielerDreiId = spielerDreiId; + + //act + UnoRegeln.SpielerErstellen(_spielerEinsName); + UnoRegeln.SpielerErstellen(_spielerZweiName); + UnoRegeln.SpielerErstellen(_spielerDreiName); + var ergebnis = UnoRegeln.Spieler; + + //assert + Assert.Equal(_spielerEinsName, ergebnis[0].SpielerModel.SpielerName); + Assert.Equal(_spielerEinsId, ergebnis[0].SpielerModel.Id); + Assert.NotNull(ergebnis[0].KartenModels); + + Assert.Equal(_spielerZweiName, ergebnis[1].SpielerModel.SpielerName); + Assert.Equal(_spielerZweiId, ergebnis[1].SpielerModel.Id); + Assert.NotNull(ergebnis[1].KartenModels); + + Assert.Equal(_spielerDreiName, ergebnis[2].SpielerModel.SpielerName); + Assert.Equal(_spielerDreiId, ergebnis[2].SpielerModel.Id); + Assert.NotNull(ergebnis[2].KartenModels); + } + + [Theory] + [InlineData(2)] + [InlineData(3)] + [InlineData(4)] + [InlineData(5)] + private void InitialeKartenVerteilungTest(int anzahlSpieler) + { + //arrange + var _anzahlSpieler = anzahlSpieler; + + BeispielMultipleSpielerModelsFüllen(_anzahlSpieler); + + foreach (var spieler in SpielerModels) + { + UnoRegeln.SpielerErstellen(spieler.SpielerName); + } + + UnoRegeln.ZiehKartenStapelZusammenstellen(); + + //act + UnoRegeln.InitialeKartenVerteilung(); + + //assert + foreach (var spieler in UnoRegeln.Spieler) + { + Assert.Equal(7, spieler.KartenModels.Count()); + } + } + + [Theory] + [InlineData("Andrej", 1, "Paul", 2, "Erhard", 3, true, 2, 3)] + [InlineData("Sabine", 1, "Erich", 2, "Anna", 3, false, 3, 2)] + [InlineData("Thomas", 1, "Mike", 2, "Robin", 3, true, 2, 3)] + [InlineData("Andrej", 1, "Paul", 2, "Erhard", 3, true, 3, 1)] + [InlineData("Sabine", 1, "Erich", 2, "Anna", 3, false, 1, 3)] + private void NaechsterSpielerTest(string spielerEinsName, int spielerEinsId, string spielerZweiName, int spielerZweiId, string spielerDreiName, int spielerDreiId, bool uhrZeigerSinn, int aktuellerSpieler, int naechsterErwartung) + { + //arrange + var _spielerEinsName = spielerEinsName; + var _spielerEinsId = spielerEinsId; + var _spielerZweiName = spielerZweiName; + var _spielerZweiId = spielerZweiId; + var _spielerDreiName = spielerDreiName; + var _spielerDreiId = spielerDreiId; + var _uhrZeigerSinn = uhrZeigerSinn; + var _aktuellerSpieler = aktuellerSpieler; + var _naechsterErwartung = naechsterErwartung; + + //act + UnoRegeln.SpielerErstellen(_spielerEinsName); + UnoRegeln.SpielerErstellen(_spielerZweiName); + UnoRegeln.SpielerErstellen(_spielerDreiName); + UnoRegeln.SpielerWahl(_aktuellerSpieler, _uhrZeigerSinn); + + //assert + Assert.Equal(_naechsterErwartung, UnoRegeln.NaechsterSpielerId); + + } + + #endregion + + [Theory] + [InlineData(Farbe.Rot, Farbe.Rot, true)] + [InlineData(Farbe.Blau, Farbe.Rot, false)] + [InlineData(Farbe.Rot, Farbe.Blau, false)] + [InlineData(Farbe.Blau, Farbe.Blau, true)] + [InlineData(Farbe.Gelb, Farbe.Rot, false)] + [InlineData(Farbe.Gruen, Farbe.Gruen, true)] + private void IstAblageStapelFarbeGleichZuLegendeKarteTest(Farbe ablegeStapelKarteFarbe, Farbe neueKarteFarbe, bool erwartet) + { + //arrange + var _ablegeStabelKarteFarbe = ablegeStapelKarteFarbe.ToString(); + var _neueKarteFarbe = neueKarteFarbe.ToString(); + var _erwartet = erwartet; + + + //act + UnoRegeln.KartenAblageStapel.KartenModels = new(); + UnoRegeln.KartenAblageStapel.KartenModels.Add( + BeispielKarte("Testkarten Name", _ablegeStabelKarteFarbe, false) + ); + var erhalten = UnoRegeln.IstAblageStapelFarbeGleichZuLegendeKarte(_neueKarteFarbe); + + //assert + Assert.Equal(_erwartet, erhalten); + } + + [Theory] + [InlineData(Kartenbezeichnung.Acht, Kartenbezeichnung.Acht, true)] + [InlineData(Kartenbezeichnung.Eins, Kartenbezeichnung.Acht, false)] + [InlineData(Kartenbezeichnung.Fuenf, Kartenbezeichnung.Vier, false)] + [InlineData(Kartenbezeichnung.Sechs, Kartenbezeichnung.Sechs, true)] + [InlineData(Kartenbezeichnung.Zwei, Kartenbezeichnung.Drei, false)] + [InlineData(Kartenbezeichnung.Neun, Kartenbezeichnung.Acht, false)] + private void IstAblageStapelZahlGleichZuLegendeKarteTest(Kartenbezeichnung ablegeStapelKarteBezeichnung, Kartenbezeichnung handStapelKarteBezeichnung, bool erwartet) + { + //arrange + var _ablegeStapelKarteBezeichnung = ablegeStapelKarteBezeichnung.ToString(); + var _handStapelKarteBezeichnung = handStapelKarteBezeichnung.ToString(); + var _erwartet = erwartet; + + //act + UnoRegeln.KartenAblageStapel.KartenModels = new(); + UnoRegeln.KartenAblageStapel.KartenModels.Add( + BeispielKarte(_ablegeStapelKarteBezeichnung, Farbe.Blau.ToString(), false) + ); + var erhalten = UnoRegeln.IstAblageStapelZahlGleichZuLegendeKarte(_handStapelKarteBezeichnung); + + //assert + Assert.Equal(_erwartet, erhalten); + + } + + [Fact] + private void ZiehEineKarteTest() + { + //arrange + UnoRegeln.ZiehKartenStapelZusammenstellen(); + UnoRegeln.SpielerErstellen("Andrej"); + + var erwartet = UnoRegeln.ZiehKartenStapel.KartenModels.FirstOrDefault(); + + //act + UnoRegeln.ZiehEineKarte(1); + + var erhalten = UnoRegeln.Spieler[0].KartenModels.LastOrDefault(); + + //assert + Assert.Equal(erwartet, erhalten); + } + + [Theory] + [InlineData(Kartenbezeichnung.PlusZweiKarte, Farbe.Gelb, true)] + private void PlusZweiKarteAufStapelLegenTest(Kartenbezeichnung kartenbezeichnung, Farbe farbe, bool spezial) + { + //arrange + UnoRegeln.ZiehKartenStapelZusammenstellen(); + var kartenAblageStapel = UnoRegeln.KartenAblageStapel; + var ziehKartenStapel = UnoRegeln.ZiehKartenStapel; + + var _kartenbezeichnung = kartenbezeichnung.ToString(); + var _farbe = farbe.ToString(); + var _spezial = spezial; + var naechstenHand = BeispielHand(); + var beispielZuLegendeKarte = BeispielKarte(_kartenbezeichnung, _farbe, _spezial); + + + //act + //naechstenHand.KartenModels = UnoRegeln.KarteAufStapelLegen(naechstenHand.KartenModels, beispielZuLegendeKarte); + + //assert + } + + #region Stapel erstellen + [Theory] + [InlineData((Kartenbezeichnung)2, Farbe.Gelb, false, 19)] + [InlineData((Kartenbezeichnung)7, Farbe.Blau, false, 19)] + [InlineData((Kartenbezeichnung)9, Farbe.Gruen, false, 19)] + [InlineData((Kartenbezeichnung)4, Farbe.Rot, false, 19)] + [InlineData((Kartenbezeichnung)5, Farbe.Blau, false, 19)] + [InlineData((Kartenbezeichnung)9, Farbe.Gelb, false, 19)] + [InlineData((Kartenbezeichnung)6, Farbe.Gruen, false, 19)] + private void ErstelleStandardKartenTest(Kartenbezeichnung kartenbezeichnung, Farbe farbe, bool spezial, int anzahl) { - int _id = id; - string _spielerName = spielerName; - - SpielerModels.Add(new SpielerModel() - { - Id = _id, - SpielerName = _spielerName, - Punkte = 0 - }); + //arrange + var _kartenbezeichnung = kartenbezeichnung.ToString(); + var _farbe = farbe.ToString(); + var _spezial = spezial; + var _anzahl = anzahl; + var erwartet = BeispielKarte(_kartenbezeichnung, _farbe, _spezial); + + //act + var neuesDeck = Uno.ErstelleStandardKarten(); + var anzahlBlau = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Blau.ToString())).Count(); + var anzahlRot = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Rot.ToString())).Count(); + var anzahlGruen = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Gruen.ToString())).Count(); + var anzahlGelb = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Gelb.ToString())).Count(); + + //assert + Assert.Equal(_anzahl, anzahlBlau); + Assert.Equal(_anzahl, anzahlRot); + Assert.Equal(_anzahl, anzahlGruen); + Assert.Equal(_anzahl, anzahlGelb); + + Assert.Contains(neuesDeck.KartenModels, n => + n.Name.Equals(erwartet.Name) && + n.Farbe.Equals(erwartet.Farbe) && + n.Spezial == erwartet.Spezial + ); } - private StapelModel BeispielStapelModelKarten(string name, string farbe, bool spezial) - { - var _name = name; - var _farbe = farbe; - var _spezial = spezial; - - StapelModel TestStapel = new(); - TestStapel.KartenModels = new() - { - new KartenModel - { - Name = _name, - Farbe = _farbe, - Spezial = _spezial - }, - }; - return TestStapel; - } - - #region UserManagement - [Theory] - [InlineData("Andrej", 1)] - private void SpielerErstellenTest(string spielerName, int id) - { - //arrange - var _spielerName = spielerName; - var _id = id; - - //act - UnoRegeln.SpielerErstellen(_spielerName); - var ergebnis = UnoRegeln.Spieler; - - //assert - Assert.Equal(_spielerName, ergebnis[0].SpielerModel.SpielerName); - Assert.Equal(_id, ergebnis[0].SpielerModel.Id); - } - - [Theory] - [InlineData("Andrej", 1, "Paul", 2, "Erhard", 3)] - [InlineData("Sabine", 1, "Erich", 2, "Anna", 3)] - [InlineData("Thomas", 1, "Mike", 2, "Robin", 3)] - private void MehrereSpielerErstellenTest(string spielerEinsName, int spielerEinsId, string spielerZweiName, int spielerZweiId, string spielerDreiName, int spielerDreiId) - { - //arrange - var _spielerEinsName = spielerEinsName; - var _spielerEinsId = spielerEinsId; - var _spielerZweiName = spielerZweiName; - var _spielerZweiId = spielerZweiId; - var _spielerDreiName = spielerDreiName; - var _spielerDreiId = spielerDreiId; - - //act - UnoRegeln.SpielerErstellen(_spielerEinsName); - UnoRegeln.SpielerErstellen(_spielerZweiName); - UnoRegeln.SpielerErstellen(_spielerDreiName); - var ergebnis = UnoRegeln.Spieler; - - //assert - Assert.Equal(_spielerEinsName, ergebnis[0].SpielerModel.SpielerName); - Assert.Equal(_spielerEinsId, ergebnis[0].SpielerModel.Id); - Assert.NotNull(ergebnis[0].KartenModels); - - Assert.Equal(_spielerZweiName, ergebnis[1].SpielerModel.SpielerName); - Assert.Equal(_spielerZweiId, ergebnis[1].SpielerModel.Id); - Assert.NotNull(ergebnis[1].KartenModels); - - Assert.Equal(_spielerDreiName, ergebnis[2].SpielerModel.SpielerName); - Assert.Equal(_spielerDreiId, ergebnis[2].SpielerModel.Id); - Assert.NotNull(ergebnis[2].KartenModels); - } - - [Fact] - private void InitialeKartenVerteilungTest() + [Theory] + [InlineData(Kartenbezeichnung.PlusZweiKarte, Farbe.Gelb, true, 6)] + [InlineData(Kartenbezeichnung.RetoureKarte, Farbe.Rot, true, 6)] + [InlineData(Kartenbezeichnung.AussetzenKarte, Farbe.Gelb, true, 6)] + [InlineData(Kartenbezeichnung.PlusZweiKarte, Farbe.Blau, true, 6)] + [InlineData(Kartenbezeichnung.PlusZweiKarte, Farbe.Gruen, true, 6)] + [InlineData(Kartenbezeichnung.RetoureKarte, Farbe.Gelb, true, 6)] + [InlineData(Kartenbezeichnung.AussetzenKarte, Farbe.Gruen, true, 6)] + [InlineData(Kartenbezeichnung.PlusZweiKarte, Farbe.Rot, true, 6)] + private void ErstelleFarbigeSpezialKartenTest(Kartenbezeichnung kartenbezeichnung, Farbe farbe, bool spezial, int anzahl) { - //arrange - BeispielSpielerModelsFüllen(1, "Klaus"); - BeispielSpielerModelsFüllen(2, "Peter"); - BeispielSpielerModelsFüllen(3, "Hans"); - - UnoRegeln.SpielerErstellen(SpielerModels[0].SpielerName); - UnoRegeln.SpielerErstellen(SpielerModels[1].SpielerName); - UnoRegeln.SpielerErstellen(SpielerModels[2].SpielerName); - UnoRegeln.ZiehKartenStapelZusammenstellen(); - - //act - UnoRegeln.InitialeKartenVerteilung(); - - //assert - Assert.Equal(7, UnoRegeln.Spieler[0].KartenModels.Count()); + //arrange + var _kartenbezeichnung = kartenbezeichnung.ToString(); + var _farbe = farbe.ToString(); + var _spezial = spezial; + var _anzahl = anzahl; + var erwartet = BeispielKarte(_kartenbezeichnung, _farbe, _spezial); + + //act + var neuesDeck = Uno.ErstelleFarbigeSpezialKarten(); + var anzahlBlau = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Blau.ToString())).Count(); + var anzahlRot = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Rot.ToString())).Count(); + var anzahlGruen = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Gruen.ToString())).Count(); + var anzahlGelb = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Gelb.ToString())).Count(); + + + //assert + Assert.Equal(_anzahl, anzahlBlau); + Assert.Equal(_anzahl, anzahlRot); + Assert.Equal(_anzahl, anzahlGruen); + Assert.Equal(_anzahl, anzahlGelb); + + Assert.Contains(neuesDeck.KartenModels, n => + n.Name.Equals(erwartet.Name) && + n.Farbe.Equals(erwartet.Farbe) && + n.Spezial == erwartet.Spezial + ); + } + + [Theory] + [InlineData(Kartenbezeichnung.FarbwahlKarte, Farbe.Keine, true, 4)] + [InlineData(Kartenbezeichnung.ZiehVierFarbenwahlkarte, Farbe.Keine, true, 4)] + private void ErstelleJokerKartenTest(Kartenbezeichnung kartenbezeichnung, Farbe farbe, bool spezial, int anzahl) + { + //arrange + var _kartenbezeichnung = kartenbezeichnung.ToString(); + var _farbe = farbe.ToString(); + var _spezial = spezial; + var _anzahl = anzahl; + var erwartet = BeispielKarte(_kartenbezeichnung, _farbe, _spezial); + + //act + var neuesDeck = Uno.ErstelleJokerKarten(); + var ergebnisAnzahl = neuesDeck.KartenModels.Where(x => x.Name.Equals(kartenbezeichnung.ToString())).Count(); + + //assert + Assert.Equal(_anzahl, ergebnisAnzahl); + Assert.Contains(neuesDeck.KartenModels, n => + n.Name.Equals(erwartet.Name) && + n.Farbe.Equals(erwartet.Farbe) && + n.Spezial == erwartet.Spezial + ); + } + + [Fact] + private void AblagestapelZusammenstellenTest() + { + + UnoRegeln.ZiehKartenStapelZusammenstellen(); + + var ergebnis = UnoRegeln.ZiehKartenStapel; + + Assert.Equal(108, ergebnis.KartenModels.Count()); } - [Theory] - [InlineData("Andrej", 1, "Paul", 2, "Erhard", 3, true, 2, 3)] - [InlineData("Sabine", 1, "Erich", 2, "Anna", 3, false, 3, 2)] - [InlineData("Thomas", 1, "Mike", 2, "Robin", 3, true, 2, 3)] - [InlineData("Andrej", 1, "Paul", 2, "Erhard", 3, true, 3, 1)] - [InlineData("Sabine", 1, "Erich", 2, "Anna", 3, false, 1, 3)] - private void NaechsterSpielerTest(string spielerEinsName, int spielerEinsId, string spielerZweiName, int spielerZweiId, string spielerDreiName, int spielerDreiId, bool uhrZeigerSinn, int aktuellerSpieler, int naechsterErwartung) - { - //arrange - var _spielerEinsName = spielerEinsName; - var _spielerEinsId = spielerEinsId; - var _spielerZweiName = spielerZweiName; - var _spielerZweiId = spielerZweiId; - var _spielerDreiName = spielerDreiName; - var _spielerDreiId = spielerDreiId; - var _uhrZeigerSinn = uhrZeigerSinn; - var _aktuellerSpieler = aktuellerSpieler; - var _naechsterErwartung = naechsterErwartung; - - //act - UnoRegeln.SpielerErstellen(_spielerEinsName); - UnoRegeln.SpielerErstellen(_spielerZweiName); - UnoRegeln.SpielerErstellen(_spielerDreiName); - UnoRegeln.SpielerWahl(_aktuellerSpieler, _uhrZeigerSinn); - - //assert - Assert.Equal(_naechsterErwartung, UnoRegeln.NaechsterSpielerId); - - } - - #endregion - - [Theory] - [InlineData(Farbe.Rot, Farbe.Rot, true)] - [InlineData(Farbe.Blau, Farbe.Rot, false)] - [InlineData(Farbe.Rot, Farbe.Blau, false)] - [InlineData(Farbe.Blau, Farbe.Blau, true)] - [InlineData(Farbe.Gelb, Farbe.Rot, false)] - [InlineData(Farbe.Gruen, Farbe.Gruen, true)] - private void IstAblageStapelFarbeGleichZuLegendeKarteTest(Farbe ablegeStapelKarteFarbe, Farbe neueKarteFarbe, bool erwartet) - { - //arrange - var _ablegeStabelKarteFarbe = ablegeStapelKarteFarbe.ToString(); - var _neueKarteFarbe = neueKarteFarbe.ToString(); - var _erwartet = erwartet; - - - //act - UnoRegeln.KartenAblageStapel.KartenModels = new(); - UnoRegeln.KartenAblageStapel.KartenModels.Add( - BeispielKarte("Testkarten Name", _ablegeStabelKarteFarbe, false) - ); - var erhalten = UnoRegeln.IstAblageStapelFarbeGleichZuLegendeKarte(_neueKarteFarbe); - - //assert - Assert.Equal(_erwartet, erhalten); - } - - [Theory] - [InlineData(Kartenbezeichnung.Acht, Kartenbezeichnung.Acht, true)] - [InlineData(Kartenbezeichnung.Eins, Kartenbezeichnung.Acht, false)] - [InlineData(Kartenbezeichnung.Fuenf, Kartenbezeichnung.Vier, false)] - [InlineData(Kartenbezeichnung.Sechs, Kartenbezeichnung.Sechs, true)] - [InlineData(Kartenbezeichnung.Zwei, Kartenbezeichnung.Drei, false)] - [InlineData(Kartenbezeichnung.Neun, Kartenbezeichnung.Acht, false)] - private void IstAblageStapelZahlGleichZuLegendeKarteTest(Kartenbezeichnung ablegeStapelKarteBezeichnung, Kartenbezeichnung handStapelKarteBezeichnung, bool erwartet) - { - //arrange - var _ablegeStapelKarteBezeichnung = ablegeStapelKarteBezeichnung.ToString(); - var _handStapelKarteBezeichnung = handStapelKarteBezeichnung.ToString(); - var _erwartet = erwartet; - - //act - UnoRegeln.KartenAblageStapel.KartenModels = new(); - UnoRegeln.KartenAblageStapel.KartenModels.Add( - BeispielKarte(_ablegeStapelKarteBezeichnung, Farbe.Blau.ToString(), false) - ); - var erhalten = UnoRegeln.IstAblageStapelZahlGleichZuLegendeKarte(_handStapelKarteBezeichnung); - - //assert - Assert.Equal(_erwartet, erhalten); - - } - - [Fact] - private void ZiehEineKarteTest() - { - //arrange - UnoRegeln.ZiehKartenStapelZusammenstellen(); - UnoRegeln.SpielerErstellen("Andrej"); - - var erwartet = UnoRegeln.ZiehKartenStapel.KartenModels.FirstOrDefault(); - - //act - UnoRegeln.ZiehEineKarte(1); - - var erhalten = UnoRegeln.Spieler[0].KartenModels.LastOrDefault(); - - //assert - Assert.Equal(erwartet, erhalten); - } - - [Theory] - [InlineData(Kartenbezeichnung.PlusZweiKarte, Farbe.Gelb, true)] - private void PlusZweiKarteAufStapelLegenTest(Kartenbezeichnung kartenbezeichnung, Farbe farbe, bool spezial) - { - //arrange - UnoRegeln.ZiehKartenStapelZusammenstellen(); - var kartenAblageStapel = UnoRegeln.KartenAblageStapel; - var ziehKartenStapel = UnoRegeln.ZiehKartenStapel; - - var _kartenbezeichnung = kartenbezeichnung.ToString(); - var _farbe = farbe.ToString(); - var _spezial = spezial; - var naechstenHand = BeispielHand(); - var beispielZuLegendeKarte = BeispielKarte(_kartenbezeichnung, _farbe, _spezial); - - - //act - //naechstenHand.KartenModels = UnoRegeln.KarteAufStapelLegen(naechstenHand.KartenModels, beispielZuLegendeKarte); - - //assert - } - - #region Stapel erstellen - [Theory] - [InlineData((Kartenbezeichnung)2, Farbe.Gelb, false, 19)] - [InlineData((Kartenbezeichnung)7, Farbe.Blau, false, 19)] - [InlineData((Kartenbezeichnung)9, Farbe.Gruen, false, 19)] - [InlineData((Kartenbezeichnung)4, Farbe.Rot, false, 19)] - [InlineData((Kartenbezeichnung)5, Farbe.Blau, false, 19)] - [InlineData((Kartenbezeichnung)9, Farbe.Gelb, false, 19)] - [InlineData((Kartenbezeichnung)6, Farbe.Gruen, false, 19)] - private void ErstelleStandardKartenTest(Kartenbezeichnung kartenbezeichnung, Farbe farbe, bool spezial, int anzahl) - { - //arrange - var _kartenbezeichnung = kartenbezeichnung.ToString(); - var _farbe = farbe.ToString(); - var _spezial = spezial; - var _anzahl = anzahl; - var erwartet = BeispielKarte(_kartenbezeichnung, _farbe, _spezial); - - //act - var neuesDeck = Uno.ErstelleStandardKarten(); - var anzahlBlau = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Blau.ToString())).Count(); - var anzahlRot = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Rot.ToString())).Count(); - var anzahlGruen = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Gruen.ToString())).Count(); - var anzahlGelb = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Gelb.ToString())).Count(); - - //assert - Assert.Equal(_anzahl, anzahlBlau); - Assert.Equal(_anzahl, anzahlRot); - Assert.Equal(_anzahl, anzahlGruen); - Assert.Equal(_anzahl, anzahlGelb); - - Assert.Contains(neuesDeck.KartenModels, n => - n.Name.Equals(erwartet.Name) && - n.Farbe.Equals(erwartet.Farbe) && - n.Spezial == erwartet.Spezial - ); - } - - [Theory] - [InlineData(Kartenbezeichnung.PlusZweiKarte, Farbe.Gelb, true, 6)] - [InlineData(Kartenbezeichnung.RetoureKarte, Farbe.Rot, true, 6)] - [InlineData(Kartenbezeichnung.AussetzenKarte, Farbe.Gelb, true, 6)] - [InlineData(Kartenbezeichnung.PlusZweiKarte, Farbe.Blau, true, 6)] - [InlineData(Kartenbezeichnung.PlusZweiKarte, Farbe.Gruen, true, 6)] - [InlineData(Kartenbezeichnung.RetoureKarte, Farbe.Gelb, true, 6)] - [InlineData(Kartenbezeichnung.AussetzenKarte, Farbe.Gruen, true, 6)] - [InlineData(Kartenbezeichnung.PlusZweiKarte, Farbe.Rot, true, 6)] - private void ErstelleFarbigeSpezialKartenTest(Kartenbezeichnung kartenbezeichnung, Farbe farbe, bool spezial, int anzahl) - { - //arrange - var _kartenbezeichnung = kartenbezeichnung.ToString(); - var _farbe = farbe.ToString(); - var _spezial = spezial; - var _anzahl = anzahl; - var erwartet = BeispielKarte(_kartenbezeichnung, _farbe, _spezial); - - //act - var neuesDeck = Uno.ErstelleFarbigeSpezialKarten(); - var anzahlBlau = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Blau.ToString())).Count(); - var anzahlRot = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Rot.ToString())).Count(); - var anzahlGruen = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Gruen.ToString())).Count(); - var anzahlGelb = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Gelb.ToString())).Count(); - - - //assert - Assert.Equal(_anzahl, anzahlBlau); - Assert.Equal(_anzahl, anzahlRot); - Assert.Equal(_anzahl, anzahlGruen); - Assert.Equal(_anzahl, anzahlGelb); - - Assert.Contains(neuesDeck.KartenModels, n => - n.Name.Equals(erwartet.Name) && - n.Farbe.Equals(erwartet.Farbe) && - n.Spezial == erwartet.Spezial - ); - } - - [Theory] - [InlineData(Kartenbezeichnung.FarbwahlKarte, Farbe.Keine, true, 4)] - [InlineData(Kartenbezeichnung.ZiehVierFarbenwahlkarte, Farbe.Keine, true, 4)] - private void ErstelleJokerKartenTest(Kartenbezeichnung kartenbezeichnung, Farbe farbe, bool spezial, int anzahl) - { - //arrange - var _kartenbezeichnung = kartenbezeichnung.ToString(); - var _farbe = farbe.ToString(); - var _spezial = spezial; - var _anzahl = anzahl; - var erwartet = BeispielKarte(_kartenbezeichnung, _farbe, _spezial); - - //act - var neuesDeck = Uno.ErstelleJokerKarten(); - var ergebnisAnzahl = neuesDeck.KartenModels.Where(x => x.Name.Equals(kartenbezeichnung.ToString())).Count(); - - //assert - Assert.Equal(_anzahl, ergebnisAnzahl); - Assert.Contains(neuesDeck.KartenModels, n => - n.Name.Equals(erwartet.Name) && - n.Farbe.Equals(erwartet.Farbe) && - n.Spezial == erwartet.Spezial - ); - } - - [Fact] - private void AblagestapelZusammenstellenTest() - { - - UnoRegeln.ZiehKartenStapelZusammenstellen(); - - var ergebnis = UnoRegeln.ZiehKartenStapel; - - Assert.Equal(108, ergebnis.KartenModels.Count()); - } - - #endregion - } + #endregion + } }