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.

254 lines
9.7 KiB

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