3 Commits

  1. 1
      BlazorSolution/MiniGames/Client/ViewModel/IUno.cs
  2. 50
      BlazorSolution/MiniGames/Client/ViewModel/Uno.cs
  3. 32
      BlazorSolution/MiniGames/Shared/Enums/Enums.cs
  4. 85
      BlazorSolution/MiniGamesTests/UnoTest.cs

1
BlazorSolution/MiniGames/Client/ViewModel/IUno.cs

@ -6,6 +6,7 @@ namespace MiniGames.Client.ViewModel
{
StapelModel AblageStabel { get; set; }
void AblagestapelZusammenstellen();
bool IstAblageStabelFarbeGleichHand(string ablegeStapelKarte, string neueKarte);
HandKartenModel ZiehEineKarte(HandKartenModel handStapel, StapelModel stapelModel);
}

50
BlazorSolution/MiniGames/Client/ViewModel/Uno.cs

@ -1,13 +1,12 @@
using MiniGames.Shared.Enums;
using MiniGames.Shared.Models;
using System;
using System.Linq;
namespace MiniGames.Client.ViewModel
{
public class Uno : IUno
{
public StapelModel AblageStabel { get; set; }
public StapelModel AblageStabel { get; set; } = new();
public bool IstAblageStabelFarbeGleichHand(string ablegeStapelKarte, string neueKarte)
{
@ -37,7 +36,7 @@ namespace MiniGames.Client.ViewModel
stapelModel.KartenModels = new();
for (int f = 1; f <= 4; f++)
{
for (int k = 1; k <= 9; k++)
for (int k = 1; k <= 19; k++)
{
var kartenbezeichnung = (Kartenbezeichnung)k;
var kartenfarbe = (Farbe)f;
@ -55,25 +54,27 @@ namespace MiniGames.Client.ViewModel
return stapelModel;
}
public static StapelModel ErstelleFarbigeSpezialKarten(string kartenbezeichnung)
public static StapelModel ErstelleFarbigeSpezialKarten()
{
var _kartenbezeichnung = kartenbezeichnung;
StapelModel stapelModel = new();
stapelModel.KartenModels = new();
for (int f = 1; f <= 4; f++)
for (int k = 10; k <= 12; k++)
{
for (int i = 0; i < 2; i++)
for (int f = 1; f <= 4; f++)
{
var kartenfarbe = (Farbe)f;
stapelModel.KartenModels.Add(
new KartenModel
{
Name = _kartenbezeichnung.ToString(),
Farbe = kartenfarbe.ToString(),
Spezial = true
}
);
for (int i = 0; i < 2; i++)
{
var _kartenbezeichnung = (Kartenbezeichnung)k;
var kartenfarbe = (Farbe)f;
stapelModel.KartenModels.Add(
new KartenModel
{
Name = _kartenbezeichnung.ToString(),
Farbe = kartenfarbe.ToString(),
Spezial = true
}
);
}
}
}
@ -104,5 +105,20 @@ namespace MiniGames.Client.ViewModel
return stapelModel;
}
public void AblagestapelZusammenstellen()
{
var standardKarten = Uno.ErstelleStandardKarten();
var spezialKarten = Uno.ErstelleFarbigeSpezialKarten();
var jokerKarten = Uno.ErstelleJokerKarten();
AblageStabel.KartenModels = new();
AblageStabel.KartenModels.AddRange(standardKarten.KartenModels);
AblageStabel.KartenModels.AddRange(spezialKarten.KartenModels);
AblageStabel.KartenModels.AddRange(jokerKarten.KartenModels);
}
#endregion
}
}

32
BlazorSolution/MiniGames/Shared/Enums/Enums.cs

@ -12,16 +12,16 @@ namespace MiniGames.Shared.Enums
Eins = 1,
Zwei = 2,
Drei = 3,
Vier = 4,
Fuenf = 5,
Sechs = 6,
Sieben = 7,
Acht = 8,
Vier = 4,
Fuenf = 5,
Sechs = 6,
Sieben = 7,
Acht = 8,
Neun = 9,
PlusZweiKarte = 10,
RetoureKarte = 11,
AussetzenKarte = 12,
FarbwahlKarte = 13,
RetoureKarte = 11,
AussetzenKarte = 12,
FarbwahlKarte = 13,
ZiehVierFarbenwahlkarte = 14
}
@ -29,9 +29,19 @@ namespace MiniGames.Shared.Enums
public enum Farbe
{
Keine = 0,
Blau = 1,
Rot = 2,
Gruen = 3,
Blau = 1,
Rot = 2,
Gruen = 3,
Gelb = 4
}
public enum Action
{
Naechster,
Farbwechsel,
EineZiehen,
ZweiZiehen,
VierZiehen,
Aussetzen
}
}

85
BlazorSolution/MiniGamesTests/UnoTest.cs

@ -1,12 +1,7 @@
using MiniGames.Client.ViewModel;
using MiniGames.Shared.Enums;
using MiniGames.Shared.Models;
using Moq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xunit;
namespace MiniGamesTests
@ -51,7 +46,7 @@ namespace MiniGamesTests
return HandStapel;
}
private StapelModel BeispielZiehKarten(string name, string farbe, bool spezial)
private StapelModel BeispielStapelModelKarten(string name, string farbe, bool spezial)
{
var _name = name;
var _farbe = farbe;
@ -106,7 +101,7 @@ namespace MiniGamesTests
var _spezial = spezial;
StapelModel zuFüllend = new();
var beispielStapel = BeispielZiehKarten(_kartenbezeichnung, _farbe, _spezial);
var beispielStapel = BeispielStapelModelKarten(_kartenbezeichnung, _farbe, _spezial);
var beispielHand = BeispielHand();
//act
@ -120,19 +115,20 @@ namespace MiniGamesTests
}
[Theory]
[InlineData((Kartenbezeichnung)2, Farbe.Gelb, false)]
[InlineData((Kartenbezeichnung)7, Farbe.Blau, false)]
[InlineData((Kartenbezeichnung)9, Farbe.Gruen, false)]
[InlineData((Kartenbezeichnung)4, Farbe.Rot, false)]
[InlineData((Kartenbezeichnung)5, Farbe.Blau, false)]
[InlineData((Kartenbezeichnung)9, Farbe.Gelb, false)]
[InlineData((Kartenbezeichnung)6, Farbe.Gruen, false)]
private void ErstelleStandardKartenTest(Kartenbezeichnung kartenbezeichnung, Farbe farbe, bool spezial)
[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
@ -143,10 +139,10 @@ namespace MiniGamesTests
var anzahlGelb = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Gelb.ToString())).Count();
//assert
Assert.Equal(9, anzahlBlau);
Assert.Equal(9, anzahlRot);
Assert.Equal(9, anzahlGruen);
Assert.Equal(9, anzahlGelb);
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) &&
@ -156,24 +152,25 @@ namespace MiniGamesTests
}
[Theory]
[InlineData(Kartenbezeichnung.PlusZweiKarte, Farbe.Gelb, true)]
[InlineData(Kartenbezeichnung.RetoureKarte, Farbe.Rot, true)]
[InlineData(Kartenbezeichnung.AussetzenKarte, Farbe.Gelb, true)]
[InlineData(Kartenbezeichnung.PlusZweiKarte, Farbe.Blau, true)]
[InlineData(Kartenbezeichnung.PlusZweiKarte, Farbe.Gruen, true)]
[InlineData(Kartenbezeichnung.RetoureKarte, Farbe.Gelb, true)]
[InlineData(Kartenbezeichnung.AussetzenKarte, Farbe.Gruen, true)]
[InlineData(Kartenbezeichnung.PlusZweiKarte, Farbe.Rot, true)]
private void ErstelleFarbigeSpezialKartenTest(Kartenbezeichnung kartenbezeichnung, Farbe farbe, bool spezial)
[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(_kartenbezeichnung.ToString());
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();
@ -181,10 +178,10 @@ namespace MiniGamesTests
//assert
Assert.Equal(2, anzahlBlau);
Assert.Equal(2, anzahlRot);
Assert.Equal(2, anzahlGruen);
Assert.Equal(2, anzahlGelb);
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) &&
@ -194,14 +191,15 @@ namespace MiniGamesTests
}
[Theory]
[InlineData(Kartenbezeichnung.FarbwahlKarte, Farbe.Keine, true)]
[InlineData(Kartenbezeichnung.ZiehVierFarbenwahlkarte, Farbe.Keine, true)]
private void ErstelleJokerKartenTest(Kartenbezeichnung kartenbezeichnung, Farbe farbe, bool spezial)
[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
@ -209,12 +207,25 @@ namespace MiniGamesTests
var ergebnisAnzahl = neuesDeck.KartenModels.Where(x => x.Name.Equals(kartenbezeichnung.ToString())).Count();
//assert
Assert.Equal(4, ergebnisAnzahl);
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.AblagestapelZusammenstellen();
var ergebnis = UnoRegeln.AblageStabel;
Assert.Equal(108, ergebnis.KartenModels.Count());
}
#endregion
}
}
Loading…
Cancel
Save