Continous Integration in der Praxis Gruppenarbeit
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

251 lines
9.4 KiB

  1. using MiniGames.Client.ViewModel;
  2. using MiniGames.Shared.Enums;
  3. using MiniGames.Shared.Models;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using Xunit;
  7. namespace MiniGamesTests
  8. {
  9. public class UnoTest
  10. {
  11. public Uno UnoRegeln = new();
  12. private KartenModel BeispielKarte(string name, string farbe, bool spezial)
  13. {
  14. var _name = name;
  15. var _farbe = farbe;
  16. var _spezial = spezial;
  17. KartenModel kartenModel = new()
  18. {
  19. Name = _name,
  20. Farbe = _farbe,
  21. Spezial = _spezial
  22. };
  23. return kartenModel;
  24. }
  25. private HandKartenModel BeispielHand()
  26. {
  27. HandKartenModel HandStapel = new()
  28. {
  29. Id = 1,
  30. Name = "Andrej",
  31. KartenModels = new()
  32. {
  33. new KartenModel
  34. {
  35. Name = Kartenbezeichnung.PlusZweiKarte.ToString(),
  36. Farbe = Farbe.Gelb.ToString(),
  37. Spezial = true
  38. }
  39. }
  40. };
  41. return HandStapel;
  42. }
  43. private StapelModel BeispielStapelModelKarten(string name, string farbe, bool spezial)
  44. {
  45. var _name = name;
  46. var _farbe = farbe;
  47. var _spezial = spezial;
  48. StapelModel TestStapel = new();
  49. TestStapel.KartenModels = new()
  50. {
  51. new KartenModel
  52. {
  53. Name = _name,
  54. Farbe = _farbe,
  55. Spezial = _spezial
  56. },
  57. };
  58. return TestStapel;
  59. }
  60. [Theory]
  61. [InlineData(Farbe.Rot, Farbe.Rot, true)]
  62. [InlineData(Farbe.Blau, Farbe.Rot, false)]
  63. [InlineData(Farbe.Rot, Farbe.Blau, false)]
  64. [InlineData(Farbe.Blau, Farbe.Blau, true)]
  65. [InlineData(Farbe.Gelb, Farbe.Rot, false)]
  66. [InlineData(Farbe.Gruen, Farbe.Gruen, true)]
  67. private void IstAblageStabelFarbeGleichZuLegendeKarteTest(Farbe ablegeStapelKarteFarbe, Farbe neueKarteFarbe, bool erwartet)
  68. {
  69. //arrange
  70. UnoRegeln.ZiehKartenStapelZusammenstellen();
  71. var _ablegeStabelKarteFarbe = ablegeStapelKarteFarbe.ToString();
  72. var _neueKarteFarbe = neueKarteFarbe.ToString();
  73. var _erwartet = erwartet;
  74. UnoRegeln.KartenAblageStapel.KartenModels = new();
  75. UnoRegeln.KartenAblageStapel.KartenModels.Add(BeispielKarte("Testkarten Name", _ablegeStabelKarteFarbe, false));
  76. //act
  77. var erhalten = UnoRegeln.IstAblageStabelFarbeGleichZuLegendeKarte(_neueKarteFarbe);
  78. //assert
  79. Assert.Equal(_erwartet, erhalten);
  80. }
  81. [Fact]
  82. private void ZiehEineKarteTest()
  83. {
  84. //arrange
  85. UnoRegeln.ZiehKartenStapelZusammenstellen();
  86. List<KartenModel> KartenListe = new();
  87. var beispielHand = BeispielHand();
  88. var erwartet = UnoRegeln.ZiehKartenStapel.KartenModels.FirstOrDefault();
  89. //act
  90. KartenListe = UnoRegeln.ZiehEineKarte(beispielHand.KartenModels);
  91. var erhalten = KartenListe.LastOrDefault();
  92. //assert
  93. Assert.Equal(erwartet, erhalten);
  94. }
  95. [Theory]
  96. [InlineData(Kartenbezeichnung.PlusZweiKarte, Farbe.Gelb, true)]
  97. private void PlusZweiKarteAufStapelLegenTest(Kartenbezeichnung kartenbezeichnung, Farbe farbe, bool spezial)
  98. {
  99. //arrange
  100. UnoRegeln.ZiehKartenStapelZusammenstellen();
  101. var kartenAblageStapel = UnoRegeln.KartenAblageStapel;
  102. var ziehKartenStapel = UnoRegeln.ZiehKartenStapel;
  103. var _kartenbezeichnung = kartenbezeichnung.ToString();
  104. var _farbe = farbe.ToString();
  105. var _spezial = spezial;
  106. var naechstenHand = BeispielHand();
  107. var beispielZuLegendeKarte = BeispielKarte(_kartenbezeichnung, _farbe, _spezial);
  108. //act
  109. naechstenHand.KartenModels = UnoRegeln.KarteAufStapelLegen(naechstenHand.KartenModels, beispielZuLegendeKarte);
  110. //assert
  111. }
  112. #region Stapel erstellen
  113. [Theory]
  114. [InlineData((Kartenbezeichnung)2, Farbe.Gelb, false, 19)]
  115. [InlineData((Kartenbezeichnung)7, Farbe.Blau, false, 19)]
  116. [InlineData((Kartenbezeichnung)9, Farbe.Gruen, false, 19)]
  117. [InlineData((Kartenbezeichnung)4, Farbe.Rot, false, 19)]
  118. [InlineData((Kartenbezeichnung)5, Farbe.Blau, false, 19)]
  119. [InlineData((Kartenbezeichnung)9, Farbe.Gelb, false, 19)]
  120. [InlineData((Kartenbezeichnung)6, Farbe.Gruen, false, 19)]
  121. private void ErstelleStandardKartenTest(Kartenbezeichnung kartenbezeichnung, Farbe farbe, bool spezial, int anzahl)
  122. {
  123. //arrange
  124. var _kartenbezeichnung = kartenbezeichnung.ToString();
  125. var _farbe = farbe.ToString();
  126. var _spezial = spezial;
  127. var _anzahl = anzahl;
  128. var erwartet = BeispielKarte(_kartenbezeichnung, _farbe, _spezial);
  129. //act
  130. var neuesDeck = Uno.ErstelleStandardKarten();
  131. var anzahlBlau = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Blau.ToString())).Count();
  132. var anzahlRot = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Rot.ToString())).Count();
  133. var anzahlGruen = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Gruen.ToString())).Count();
  134. var anzahlGelb = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Gelb.ToString())).Count();
  135. //assert
  136. Assert.Equal(_anzahl, anzahlBlau);
  137. Assert.Equal(_anzahl, anzahlRot);
  138. Assert.Equal(_anzahl, anzahlGruen);
  139. Assert.Equal(_anzahl, anzahlGelb);
  140. Assert.Contains(neuesDeck.KartenModels, n =>
  141. n.Name.Equals(erwartet.Name) &&
  142. n.Farbe.Equals(erwartet.Farbe) &&
  143. n.Spezial == erwartet.Spezial
  144. );
  145. }
  146. [Theory]
  147. [InlineData(Kartenbezeichnung.PlusZweiKarte, Farbe.Gelb, true, 6)]
  148. [InlineData(Kartenbezeichnung.RetoureKarte, Farbe.Rot, true, 6)]
  149. [InlineData(Kartenbezeichnung.AussetzenKarte, Farbe.Gelb, true, 6)]
  150. [InlineData(Kartenbezeichnung.PlusZweiKarte, Farbe.Blau, true, 6)]
  151. [InlineData(Kartenbezeichnung.PlusZweiKarte, Farbe.Gruen, true, 6)]
  152. [InlineData(Kartenbezeichnung.RetoureKarte, Farbe.Gelb, true, 6)]
  153. [InlineData(Kartenbezeichnung.AussetzenKarte, Farbe.Gruen, true, 6)]
  154. [InlineData(Kartenbezeichnung.PlusZweiKarte, Farbe.Rot, true, 6)]
  155. private void ErstelleFarbigeSpezialKartenTest(Kartenbezeichnung kartenbezeichnung, Farbe farbe, bool spezial, int anzahl)
  156. {
  157. //arrange
  158. var _kartenbezeichnung = kartenbezeichnung.ToString();
  159. var _farbe = farbe.ToString();
  160. var _spezial = spezial;
  161. var _anzahl = anzahl;
  162. var erwartet = BeispielKarte(_kartenbezeichnung, _farbe, _spezial);
  163. //act
  164. var neuesDeck = Uno.ErstelleFarbigeSpezialKarten();
  165. var anzahlBlau = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Blau.ToString())).Count();
  166. var anzahlRot = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Rot.ToString())).Count();
  167. var anzahlGruen = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Gruen.ToString())).Count();
  168. var anzahlGelb = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Gelb.ToString())).Count();
  169. //assert
  170. Assert.Equal(_anzahl, anzahlBlau);
  171. Assert.Equal(_anzahl, anzahlRot);
  172. Assert.Equal(_anzahl, anzahlGruen);
  173. Assert.Equal(_anzahl, anzahlGelb);
  174. Assert.Contains(neuesDeck.KartenModels, n =>
  175. n.Name.Equals(erwartet.Name) &&
  176. n.Farbe.Equals(erwartet.Farbe) &&
  177. n.Spezial == erwartet.Spezial
  178. );
  179. }
  180. [Theory]
  181. [InlineData(Kartenbezeichnung.FarbwahlKarte, Farbe.Keine, true, 4)]
  182. [InlineData(Kartenbezeichnung.ZiehVierFarbenwahlkarte, Farbe.Keine, true, 4)]
  183. private void ErstelleJokerKartenTest(Kartenbezeichnung kartenbezeichnung, Farbe farbe, bool spezial, int anzahl)
  184. {
  185. //arrange
  186. var _kartenbezeichnung = kartenbezeichnung.ToString();
  187. var _farbe = farbe.ToString();
  188. var _spezial = spezial;
  189. var _anzahl = anzahl;
  190. var erwartet = BeispielKarte(_kartenbezeichnung, _farbe, _spezial);
  191. //act
  192. var neuesDeck = Uno.ErstelleJokerKarten();
  193. var ergebnisAnzahl = neuesDeck.KartenModels.Where(x => x.Name.Equals(kartenbezeichnung.ToString())).Count();
  194. //assert
  195. Assert.Equal(_anzahl, ergebnisAnzahl);
  196. Assert.Contains(neuesDeck.KartenModels, n =>
  197. n.Name.Equals(erwartet.Name) &&
  198. n.Farbe.Equals(erwartet.Farbe) &&
  199. n.Spezial == erwartet.Spezial
  200. );
  201. }
  202. [Fact]
  203. private void AblagestapelZusammenstellenTest()
  204. {
  205. UnoRegeln.ZiehKartenStapelZusammenstellen();
  206. var ergebnis = UnoRegeln.ZiehKartenStapel;
  207. Assert.Equal(108, ergebnis.KartenModels.Count());
  208. }
  209. #endregion
  210. }
  211. }