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.

268 lines
10 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. #region UserManagement
  61. [Theory]
  62. [InlineData("Andrej")]
  63. private void SpielerErstellenTest(string spielerName)
  64. {
  65. //arrange
  66. var _spielerName = spielerName;
  67. //act
  68. UnoRegeln.SpielerErstellen(_spielerName);
  69. var ergebnis = UnoRegeln.Spieler;
  70. //assert
  71. Assert.Equal(spielerName, ergebnis[0].Name);
  72. }
  73. #endregion
  74. [Theory]
  75. [InlineData(Farbe.Rot, Farbe.Rot, true)]
  76. [InlineData(Farbe.Blau, Farbe.Rot, false)]
  77. [InlineData(Farbe.Rot, Farbe.Blau, false)]
  78. [InlineData(Farbe.Blau, Farbe.Blau, true)]
  79. [InlineData(Farbe.Gelb, Farbe.Rot, false)]
  80. [InlineData(Farbe.Gruen, Farbe.Gruen, true)]
  81. private void IstAblageStapelFarbeGleichZuLegendeKarteTest(Farbe ablegeStapelKarteFarbe, Farbe neueKarteFarbe, bool erwartet)
  82. {
  83. //arrange
  84. UnoRegeln.ZiehKartenStapelZusammenstellen();
  85. var _ablegeStabelKarteFarbe = ablegeStapelKarteFarbe.ToString();
  86. var _neueKarteFarbe = neueKarteFarbe.ToString();
  87. var _erwartet = erwartet;
  88. UnoRegeln.KartenAblageStapel.KartenModels = new();
  89. UnoRegeln.KartenAblageStapel.KartenModels.Add(BeispielKarte("Testkarten Name", _ablegeStabelKarteFarbe, false));
  90. //act
  91. var erhalten = UnoRegeln.IstAblageStapelFarbeGleichZuLegendeKarte(_neueKarteFarbe);
  92. //assert
  93. Assert.Equal(_erwartet, erhalten);
  94. }
  95. [Fact]
  96. private void ZiehEineKarteTest()
  97. {
  98. //arrange
  99. UnoRegeln.ZiehKartenStapelZusammenstellen();
  100. List<KartenModel> KartenListe = new();
  101. var beispielHand = BeispielHand();
  102. var erwartet = UnoRegeln.ZiehKartenStapel.KartenModels.FirstOrDefault();
  103. //act
  104. KartenListe = UnoRegeln.ZiehEineKarte(beispielHand.KartenModels);
  105. var erhalten = KartenListe.LastOrDefault();
  106. //assert
  107. Assert.Equal(erwartet, erhalten);
  108. }
  109. [Theory]
  110. [InlineData(Kartenbezeichnung.PlusZweiKarte, Farbe.Gelb, true)]
  111. private void PlusZweiKarteAufStapelLegenTest(Kartenbezeichnung kartenbezeichnung, Farbe farbe, bool spezial)
  112. {
  113. //arrange
  114. UnoRegeln.ZiehKartenStapelZusammenstellen();
  115. var kartenAblageStapel = UnoRegeln.KartenAblageStapel;
  116. var ziehKartenStapel = UnoRegeln.ZiehKartenStapel;
  117. var _kartenbezeichnung = kartenbezeichnung.ToString();
  118. var _farbe = farbe.ToString();
  119. var _spezial = spezial;
  120. var naechstenHand = BeispielHand();
  121. var beispielZuLegendeKarte = BeispielKarte(_kartenbezeichnung, _farbe, _spezial);
  122. //act
  123. naechstenHand.KartenModels = UnoRegeln.KarteAufStapelLegen(naechstenHand.KartenModels, beispielZuLegendeKarte);
  124. //assert
  125. }
  126. #region Stapel erstellen
  127. [Theory]
  128. [InlineData((Kartenbezeichnung)2, Farbe.Gelb, false, 19)]
  129. [InlineData((Kartenbezeichnung)7, Farbe.Blau, false, 19)]
  130. [InlineData((Kartenbezeichnung)9, Farbe.Gruen, false, 19)]
  131. [InlineData((Kartenbezeichnung)4, Farbe.Rot, false, 19)]
  132. [InlineData((Kartenbezeichnung)5, Farbe.Blau, false, 19)]
  133. [InlineData((Kartenbezeichnung)9, Farbe.Gelb, false, 19)]
  134. [InlineData((Kartenbezeichnung)6, Farbe.Gruen, false, 19)]
  135. private void ErstelleStandardKartenTest(Kartenbezeichnung kartenbezeichnung, Farbe farbe, bool spezial, int anzahl)
  136. {
  137. //arrange
  138. var _kartenbezeichnung = kartenbezeichnung.ToString();
  139. var _farbe = farbe.ToString();
  140. var _spezial = spezial;
  141. var _anzahl = anzahl;
  142. var erwartet = BeispielKarte(_kartenbezeichnung, _farbe, _spezial);
  143. //act
  144. var neuesDeck = Uno.ErstelleStandardKarten();
  145. var anzahlBlau = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Blau.ToString())).Count();
  146. var anzahlRot = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Rot.ToString())).Count();
  147. var anzahlGruen = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Gruen.ToString())).Count();
  148. var anzahlGelb = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Gelb.ToString())).Count();
  149. //assert
  150. Assert.Equal(_anzahl, anzahlBlau);
  151. Assert.Equal(_anzahl, anzahlRot);
  152. Assert.Equal(_anzahl, anzahlGruen);
  153. Assert.Equal(_anzahl, anzahlGelb);
  154. Assert.Contains(neuesDeck.KartenModels, n =>
  155. n.Name.Equals(erwartet.Name) &&
  156. n.Farbe.Equals(erwartet.Farbe) &&
  157. n.Spezial == erwartet.Spezial
  158. );
  159. }
  160. [Theory]
  161. [InlineData(Kartenbezeichnung.PlusZweiKarte, Farbe.Gelb, true, 6)]
  162. [InlineData(Kartenbezeichnung.RetoureKarte, Farbe.Rot, true, 6)]
  163. [InlineData(Kartenbezeichnung.AussetzenKarte, Farbe.Gelb, true, 6)]
  164. [InlineData(Kartenbezeichnung.PlusZweiKarte, Farbe.Blau, true, 6)]
  165. [InlineData(Kartenbezeichnung.PlusZweiKarte, Farbe.Gruen, true, 6)]
  166. [InlineData(Kartenbezeichnung.RetoureKarte, Farbe.Gelb, true, 6)]
  167. [InlineData(Kartenbezeichnung.AussetzenKarte, Farbe.Gruen, true, 6)]
  168. [InlineData(Kartenbezeichnung.PlusZweiKarte, Farbe.Rot, true, 6)]
  169. private void ErstelleFarbigeSpezialKartenTest(Kartenbezeichnung kartenbezeichnung, Farbe farbe, bool spezial, int anzahl)
  170. {
  171. //arrange
  172. var _kartenbezeichnung = kartenbezeichnung.ToString();
  173. var _farbe = farbe.ToString();
  174. var _spezial = spezial;
  175. var _anzahl = anzahl;
  176. var erwartet = BeispielKarte(_kartenbezeichnung, _farbe, _spezial);
  177. //act
  178. var neuesDeck = Uno.ErstelleFarbigeSpezialKarten();
  179. var anzahlBlau = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Blau.ToString())).Count();
  180. var anzahlRot = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Rot.ToString())).Count();
  181. var anzahlGruen = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Gruen.ToString())).Count();
  182. var anzahlGelb = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Gelb.ToString())).Count();
  183. //assert
  184. Assert.Equal(_anzahl, anzahlBlau);
  185. Assert.Equal(_anzahl, anzahlRot);
  186. Assert.Equal(_anzahl, anzahlGruen);
  187. Assert.Equal(_anzahl, anzahlGelb);
  188. Assert.Contains(neuesDeck.KartenModels, n =>
  189. n.Name.Equals(erwartet.Name) &&
  190. n.Farbe.Equals(erwartet.Farbe) &&
  191. n.Spezial == erwartet.Spezial
  192. );
  193. }
  194. [Theory]
  195. [InlineData(Kartenbezeichnung.FarbwahlKarte, Farbe.Keine, true, 4)]
  196. [InlineData(Kartenbezeichnung.ZiehVierFarbenwahlkarte, Farbe.Keine, true, 4)]
  197. private void ErstelleJokerKartenTest(Kartenbezeichnung kartenbezeichnung, Farbe farbe, bool spezial, int anzahl)
  198. {
  199. //arrange
  200. var _kartenbezeichnung = kartenbezeichnung.ToString();
  201. var _farbe = farbe.ToString();
  202. var _spezial = spezial;
  203. var _anzahl = anzahl;
  204. var erwartet = BeispielKarte(_kartenbezeichnung, _farbe, _spezial);
  205. //act
  206. var neuesDeck = Uno.ErstelleJokerKarten();
  207. var ergebnisAnzahl = neuesDeck.KartenModels.Where(x => x.Name.Equals(kartenbezeichnung.ToString())).Count();
  208. //assert
  209. Assert.Equal(_anzahl, ergebnisAnzahl);
  210. Assert.Contains(neuesDeck.KartenModels, n =>
  211. n.Name.Equals(erwartet.Name) &&
  212. n.Farbe.Equals(erwartet.Farbe) &&
  213. n.Spezial == erwartet.Spezial
  214. );
  215. }
  216. [Fact]
  217. private void AblagestapelZusammenstellenTest()
  218. {
  219. UnoRegeln.ZiehKartenStapelZusammenstellen();
  220. var ergebnis = UnoRegeln.ZiehKartenStapel;
  221. Assert.Equal(108, ergebnis.KartenModels.Count());
  222. }
  223. #endregion
  224. }
  225. }