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.

231 lines
8.8 KiB

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