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; } StapelModel AblageStabel { get; set; }
void AblagestapelZusammenstellen();
bool IstAblageStabelFarbeGleichHand(string ablegeStapelKarte, string neueKarte); bool IstAblageStabelFarbeGleichHand(string ablegeStapelKarte, string neueKarte);
HandKartenModel ZiehEineKarte(HandKartenModel handStapel, StapelModel stapelModel); HandKartenModel ZiehEineKarte(HandKartenModel handStapel, StapelModel stapelModel);
} }

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

@ -1,13 +1,12 @@
using MiniGames.Shared.Enums; using MiniGames.Shared.Enums;
using MiniGames.Shared.Models; using MiniGames.Shared.Models;
using System;
using System.Linq; using System.Linq;
namespace MiniGames.Client.ViewModel namespace MiniGames.Client.ViewModel
{ {
public class Uno : IUno public class Uno : IUno
{ {
public StapelModel AblageStabel { get; set; }
public StapelModel AblageStabel { get; set; } = new();
public bool IstAblageStabelFarbeGleichHand(string ablegeStapelKarte, string neueKarte) public bool IstAblageStabelFarbeGleichHand(string ablegeStapelKarte, string neueKarte)
{ {
@ -37,7 +36,7 @@ namespace MiniGames.Client.ViewModel
stapelModel.KartenModels = new(); stapelModel.KartenModels = new();
for (int f = 1; f <= 4; f++) 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 kartenbezeichnung = (Kartenbezeichnung)k;
var kartenfarbe = (Farbe)f; var kartenfarbe = (Farbe)f;
@ -55,25 +54,27 @@ namespace MiniGames.Client.ViewModel
return stapelModel; return stapelModel;
} }
public static StapelModel ErstelleFarbigeSpezialKarten(string kartenbezeichnung)
public static StapelModel ErstelleFarbigeSpezialKarten()
{ {
var _kartenbezeichnung = kartenbezeichnung;
StapelModel stapelModel = new(); StapelModel stapelModel = new();
stapelModel.KartenModels = 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; 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, Eins = 1,
Zwei = 2, Zwei = 2,
Drei = 3, Drei = 3,
Vier = 4,
Fuenf = 5,
Sechs = 6,
Sieben = 7,
Acht = 8,
Vier = 4,
Fuenf = 5,
Sechs = 6,
Sieben = 7,
Acht = 8,
Neun = 9, Neun = 9,
PlusZweiKarte = 10, PlusZweiKarte = 10,
RetoureKarte = 11,
AussetzenKarte = 12,
FarbwahlKarte = 13,
RetoureKarte = 11,
AussetzenKarte = 12,
FarbwahlKarte = 13,
ZiehVierFarbenwahlkarte = 14 ZiehVierFarbenwahlkarte = 14
} }
@ -29,9 +29,19 @@ namespace MiniGames.Shared.Enums
public enum Farbe public enum Farbe
{ {
Keine = 0, Keine = 0,
Blau = 1,
Rot = 2,
Gruen = 3,
Blau = 1,
Rot = 2,
Gruen = 3,
Gelb = 4 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.Client.ViewModel;
using MiniGames.Shared.Enums; using MiniGames.Shared.Enums;
using MiniGames.Shared.Models; using MiniGames.Shared.Models;
using Moq;
using System;
using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xunit; using Xunit;
namespace MiniGamesTests namespace MiniGamesTests
@ -51,7 +46,7 @@ namespace MiniGamesTests
return HandStapel; return HandStapel;
} }
private StapelModel BeispielZiehKarten(string name, string farbe, bool spezial)
private StapelModel BeispielStapelModelKarten(string name, string farbe, bool spezial)
{ {
var _name = name; var _name = name;
var _farbe = farbe; var _farbe = farbe;
@ -106,7 +101,7 @@ namespace MiniGamesTests
var _spezial = spezial; var _spezial = spezial;
StapelModel zuFüllend = new(); StapelModel zuFüllend = new();
var beispielStapel = BeispielZiehKarten(_kartenbezeichnung, _farbe, _spezial);
var beispielStapel = BeispielStapelModelKarten(_kartenbezeichnung, _farbe, _spezial);
var beispielHand = BeispielHand(); var beispielHand = BeispielHand();
//act //act
@ -120,19 +115,20 @@ namespace MiniGamesTests
} }
[Theory] [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 //arrange
var _kartenbezeichnung = kartenbezeichnung.ToString(); var _kartenbezeichnung = kartenbezeichnung.ToString();
var _farbe = farbe.ToString(); var _farbe = farbe.ToString();
var _spezial = spezial; var _spezial = spezial;
var _anzahl = anzahl;
var erwartet = BeispielKarte(_kartenbezeichnung, _farbe, _spezial); var erwartet = BeispielKarte(_kartenbezeichnung, _farbe, _spezial);
//act //act
@ -143,10 +139,10 @@ namespace MiniGamesTests
var anzahlGelb = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Gelb.ToString())).Count(); var anzahlGelb = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Gelb.ToString())).Count();
//assert //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 => Assert.Contains(neuesDeck.KartenModels, n =>
n.Name.Equals(erwartet.Name) && n.Name.Equals(erwartet.Name) &&
@ -156,24 +152,25 @@ namespace MiniGamesTests
} }
[Theory] [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 //arrange
var _kartenbezeichnung = kartenbezeichnung.ToString(); var _kartenbezeichnung = kartenbezeichnung.ToString();
var _farbe = farbe.ToString(); var _farbe = farbe.ToString();
var _spezial = spezial; var _spezial = spezial;
var _anzahl = anzahl;
var erwartet = BeispielKarte(_kartenbezeichnung, _farbe, _spezial); var erwartet = BeispielKarte(_kartenbezeichnung, _farbe, _spezial);
//act //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 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 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 anzahlGruen = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Gruen.ToString())).Count();
@ -181,10 +178,10 @@ namespace MiniGamesTests
//assert //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 => Assert.Contains(neuesDeck.KartenModels, n =>
n.Name.Equals(erwartet.Name) && n.Name.Equals(erwartet.Name) &&
@ -194,14 +191,15 @@ namespace MiniGamesTests
} }
[Theory] [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 //arrange
var _kartenbezeichnung = kartenbezeichnung.ToString(); var _kartenbezeichnung = kartenbezeichnung.ToString();
var _farbe = farbe.ToString(); var _farbe = farbe.ToString();
var _spezial = spezial; var _spezial = spezial;
var _anzahl = anzahl;
var erwartet = BeispielKarte(_kartenbezeichnung, _farbe, _spezial); var erwartet = BeispielKarte(_kartenbezeichnung, _farbe, _spezial);
//act //act
@ -209,12 +207,25 @@ namespace MiniGamesTests
var ergebnisAnzahl = neuesDeck.KartenModels.Where(x => x.Name.Equals(kartenbezeichnung.ToString())).Count(); var ergebnisAnzahl = neuesDeck.KartenModels.Where(x => x.Name.Equals(kartenbezeichnung.ToString())).Count();
//assert //assert
Assert.Equal(4, ergebnisAnzahl);
Assert.Equal(_anzahl, ergebnisAnzahl);
Assert.Contains(neuesDeck.KartenModels, n => Assert.Contains(neuesDeck.KartenModels, n =>
n.Name.Equals(erwartet.Name) && n.Name.Equals(erwartet.Name) &&
n.Farbe.Equals(erwartet.Farbe) && n.Farbe.Equals(erwartet.Farbe) &&
n.Spezial == erwartet.Spezial n.Spezial == erwartet.Spezial
); );
} }
[Fact]
private void AblagestapelZusammenstellenTest()
{
UnoRegeln.AblagestapelZusammenstellen();
var ergebnis = UnoRegeln.AblageStabel;
Assert.Equal(108, ergebnis.KartenModels.Count());
}
#endregion
} }
} }
Loading…
Cancel
Save