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.

331 lines
13 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", 1)]
  63. private void SpielerErstellenTest(string spielerName, int id)
  64. {
  65. //arrange
  66. var _spielerName = spielerName;
  67. var _id = id;
  68. //act
  69. UnoRegeln.SpielerErstellen(_spielerName);
  70. var ergebnis = UnoRegeln.Spieler;
  71. //assert
  72. Assert.Equal(_spielerName, ergebnis[0].Name);
  73. Assert.Equal(_id, ergebnis[0].Id);
  74. }
  75. [Theory]
  76. [InlineData("Andrej", 1, "Paul", 2, "Erhard", 3)]
  77. [InlineData("Sabine", 1, "Erich", 2, "Anna", 3)]
  78. [InlineData("Thomas", 1, "Mike", 2, "Robin", 3)]
  79. private void MehrereSpielerErstellenTest(string spielerEinsName, int spielerEinsId, string spielerZweiName, int spielerZweiId, string spielerDreiName, int spielerDreiId)
  80. {
  81. //arrange
  82. var _spielerEinsName = spielerEinsName;
  83. var _spielerEinsId = spielerEinsId;
  84. var _spielerZweiName = spielerZweiName;
  85. var _spielerZweiId = spielerZweiId;
  86. var _spielerDreiName = spielerDreiName;
  87. var _spielerDreiId = spielerDreiId;
  88. //act
  89. UnoRegeln.SpielerErstellen(_spielerEinsName);
  90. UnoRegeln.SpielerErstellen(_spielerZweiName);
  91. UnoRegeln.SpielerErstellen(_spielerDreiName);
  92. var ergebnis = UnoRegeln.Spieler;
  93. //assert
  94. Assert.Equal(_spielerEinsName, ergebnis[0].Name);
  95. Assert.Equal(_spielerEinsId, ergebnis[0].Id);
  96. Assert.NotNull(ergebnis[0].KartenModels);
  97. Assert.Equal(_spielerZweiName, ergebnis[1].Name);
  98. Assert.Equal(_spielerZweiId, ergebnis[1].Id);
  99. Assert.NotNull(ergebnis[1].KartenModels);
  100. Assert.Equal(_spielerDreiName, ergebnis[2].Name);
  101. Assert.Equal(_spielerDreiId, ergebnis[2].Id);
  102. Assert.NotNull(ergebnis[2].KartenModels);
  103. }
  104. #endregion
  105. [Theory]
  106. [InlineData(Farbe.Rot, Farbe.Rot, true)]
  107. [InlineData(Farbe.Blau, Farbe.Rot, false)]
  108. [InlineData(Farbe.Rot, Farbe.Blau, false)]
  109. [InlineData(Farbe.Blau, Farbe.Blau, true)]
  110. [InlineData(Farbe.Gelb, Farbe.Rot, false)]
  111. [InlineData(Farbe.Gruen, Farbe.Gruen, true)]
  112. private void IstAblageStapelFarbeGleichZuLegendeKarteTest(Farbe ablegeStapelKarteFarbe, Farbe neueKarteFarbe, bool erwartet)
  113. {
  114. //arrange
  115. var _ablegeStabelKarteFarbe = ablegeStapelKarteFarbe.ToString();
  116. var _neueKarteFarbe = neueKarteFarbe.ToString();
  117. var _erwartet = erwartet;
  118. //act
  119. UnoRegeln.KartenAblageStapel.KartenModels = new();
  120. UnoRegeln.KartenAblageStapel.KartenModels.Add(
  121. BeispielKarte("Testkarten Name", _ablegeStabelKarteFarbe, false)
  122. );
  123. var erhalten = UnoRegeln.IstAblageStapelFarbeGleichZuLegendeKarte(_neueKarteFarbe);
  124. //assert
  125. Assert.Equal(_erwartet, erhalten);
  126. }
  127. [Theory]
  128. [InlineData(Kartenbezeichnung.Acht, Kartenbezeichnung.Acht, true)]
  129. [InlineData(Kartenbezeichnung.Eins, Kartenbezeichnung.Acht, false)]
  130. [InlineData(Kartenbezeichnung.Fuenf, Kartenbezeichnung.Vier, false)]
  131. [InlineData(Kartenbezeichnung.Sechs, Kartenbezeichnung.Sechs, true)]
  132. [InlineData(Kartenbezeichnung.Zwei, Kartenbezeichnung.Drei, false)]
  133. [InlineData(Kartenbezeichnung.Neun, Kartenbezeichnung.Acht, false)]
  134. private void IstAblageStapelZahlGleichZuLegendeKarteTest(Kartenbezeichnung ablegeStapelKarteBezeichnung, Kartenbezeichnung handStapelKarteBezeichnung, bool erwartet)
  135. {
  136. //arrange
  137. var _ablegeStapelKarteBezeichnung = ablegeStapelKarteBezeichnung.ToString();
  138. var _handStapelKarteBezeichnung = handStapelKarteBezeichnung.ToString();
  139. var _erwartet = erwartet;
  140. //act
  141. UnoRegeln.KartenAblageStapel.KartenModels = new();
  142. UnoRegeln.KartenAblageStapel.KartenModels.Add(
  143. BeispielKarte(_ablegeStapelKarteBezeichnung, Farbe.Blau.ToString(), false)
  144. );
  145. var erhalten = UnoRegeln.IstAblageStapelZahlGleichZuLegendeKarte(_handStapelKarteBezeichnung);
  146. //assert
  147. Assert.Equal(_erwartet, erhalten);
  148. }
  149. [Fact]
  150. private void ZiehEineKarteTest()
  151. {
  152. //arrange
  153. UnoRegeln.ZiehKartenStapelZusammenstellen();
  154. UnoRegeln.SpielerErstellen("Andrej");
  155. var erwartet = UnoRegeln.ZiehKartenStapel.KartenModels.FirstOrDefault();
  156. //act
  157. UnoRegeln.ZiehEineKarte(1);
  158. var erhalten = UnoRegeln.Spieler[0].KartenModels.LastOrDefault();
  159. //assert
  160. Assert.Equal(erwartet, erhalten);
  161. }
  162. [Theory]
  163. [InlineData(Kartenbezeichnung.PlusZweiKarte, Farbe.Gelb, true)]
  164. private void PlusZweiKarteAufStapelLegenTest(Kartenbezeichnung kartenbezeichnung, Farbe farbe, bool spezial)
  165. {
  166. //arrange
  167. UnoRegeln.ZiehKartenStapelZusammenstellen();
  168. var kartenAblageStapel = UnoRegeln.KartenAblageStapel;
  169. var ziehKartenStapel = UnoRegeln.ZiehKartenStapel;
  170. var _kartenbezeichnung = kartenbezeichnung.ToString();
  171. var _farbe = farbe.ToString();
  172. var _spezial = spezial;
  173. var naechstenHand = BeispielHand();
  174. var beispielZuLegendeKarte = BeispielKarte(_kartenbezeichnung, _farbe, _spezial);
  175. //act
  176. //naechstenHand.KartenModels = UnoRegeln.KarteAufStapelLegen(naechstenHand.KartenModels, beispielZuLegendeKarte);
  177. //assert
  178. }
  179. #region Stapel erstellen
  180. [Theory]
  181. [InlineData((Kartenbezeichnung)2, Farbe.Gelb, false, 19)]
  182. [InlineData((Kartenbezeichnung)7, Farbe.Blau, false, 19)]
  183. [InlineData((Kartenbezeichnung)9, Farbe.Gruen, false, 19)]
  184. [InlineData((Kartenbezeichnung)4, Farbe.Rot, false, 19)]
  185. [InlineData((Kartenbezeichnung)5, Farbe.Blau, false, 19)]
  186. [InlineData((Kartenbezeichnung)9, Farbe.Gelb, false, 19)]
  187. [InlineData((Kartenbezeichnung)6, Farbe.Gruen, false, 19)]
  188. private void ErstelleStandardKartenTest(Kartenbezeichnung kartenbezeichnung, Farbe farbe, bool spezial, int anzahl)
  189. {
  190. //arrange
  191. var _kartenbezeichnung = kartenbezeichnung.ToString();
  192. var _farbe = farbe.ToString();
  193. var _spezial = spezial;
  194. var _anzahl = anzahl;
  195. var erwartet = BeispielKarte(_kartenbezeichnung, _farbe, _spezial);
  196. //act
  197. var neuesDeck = Uno.ErstelleStandardKarten();
  198. var anzahlBlau = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Blau.ToString())).Count();
  199. var anzahlRot = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Rot.ToString())).Count();
  200. var anzahlGruen = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Gruen.ToString())).Count();
  201. var anzahlGelb = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Gelb.ToString())).Count();
  202. //assert
  203. Assert.Equal(_anzahl, anzahlBlau);
  204. Assert.Equal(_anzahl, anzahlRot);
  205. Assert.Equal(_anzahl, anzahlGruen);
  206. Assert.Equal(_anzahl, anzahlGelb);
  207. Assert.Contains(neuesDeck.KartenModels, n =>
  208. n.Name.Equals(erwartet.Name) &&
  209. n.Farbe.Equals(erwartet.Farbe) &&
  210. n.Spezial == erwartet.Spezial
  211. );
  212. }
  213. [Theory]
  214. [InlineData(Kartenbezeichnung.PlusZweiKarte, Farbe.Gelb, true, 6)]
  215. [InlineData(Kartenbezeichnung.RetoureKarte, Farbe.Rot, true, 6)]
  216. [InlineData(Kartenbezeichnung.AussetzenKarte, Farbe.Gelb, true, 6)]
  217. [InlineData(Kartenbezeichnung.PlusZweiKarte, Farbe.Blau, true, 6)]
  218. [InlineData(Kartenbezeichnung.PlusZweiKarte, Farbe.Gruen, true, 6)]
  219. [InlineData(Kartenbezeichnung.RetoureKarte, Farbe.Gelb, true, 6)]
  220. [InlineData(Kartenbezeichnung.AussetzenKarte, Farbe.Gruen, true, 6)]
  221. [InlineData(Kartenbezeichnung.PlusZweiKarte, Farbe.Rot, true, 6)]
  222. private void ErstelleFarbigeSpezialKartenTest(Kartenbezeichnung kartenbezeichnung, Farbe farbe, bool spezial, int anzahl)
  223. {
  224. //arrange
  225. var _kartenbezeichnung = kartenbezeichnung.ToString();
  226. var _farbe = farbe.ToString();
  227. var _spezial = spezial;
  228. var _anzahl = anzahl;
  229. var erwartet = BeispielKarte(_kartenbezeichnung, _farbe, _spezial);
  230. //act
  231. var neuesDeck = Uno.ErstelleFarbigeSpezialKarten();
  232. var anzahlBlau = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Blau.ToString())).Count();
  233. var anzahlRot = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Rot.ToString())).Count();
  234. var anzahlGruen = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Gruen.ToString())).Count();
  235. var anzahlGelb = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Gelb.ToString())).Count();
  236. //assert
  237. Assert.Equal(_anzahl, anzahlBlau);
  238. Assert.Equal(_anzahl, anzahlRot);
  239. Assert.Equal(_anzahl, anzahlGruen);
  240. Assert.Equal(_anzahl, anzahlGelb);
  241. Assert.Contains(neuesDeck.KartenModels, n =>
  242. n.Name.Equals(erwartet.Name) &&
  243. n.Farbe.Equals(erwartet.Farbe) &&
  244. n.Spezial == erwartet.Spezial
  245. );
  246. }
  247. [Theory]
  248. [InlineData(Kartenbezeichnung.FarbwahlKarte, Farbe.Keine, true, 4)]
  249. [InlineData(Kartenbezeichnung.ZiehVierFarbenwahlkarte, Farbe.Keine, true, 4)]
  250. private void ErstelleJokerKartenTest(Kartenbezeichnung kartenbezeichnung, Farbe farbe, bool spezial, int anzahl)
  251. {
  252. //arrange
  253. var _kartenbezeichnung = kartenbezeichnung.ToString();
  254. var _farbe = farbe.ToString();
  255. var _spezial = spezial;
  256. var _anzahl = anzahl;
  257. var erwartet = BeispielKarte(_kartenbezeichnung, _farbe, _spezial);
  258. //act
  259. var neuesDeck = Uno.ErstelleJokerKarten();
  260. var ergebnisAnzahl = neuesDeck.KartenModels.Where(x => x.Name.Equals(kartenbezeichnung.ToString())).Count();
  261. //assert
  262. Assert.Equal(_anzahl, ergebnisAnzahl);
  263. Assert.Contains(neuesDeck.KartenModels, n =>
  264. n.Name.Equals(erwartet.Name) &&
  265. n.Farbe.Equals(erwartet.Farbe) &&
  266. n.Spezial == erwartet.Spezial
  267. );
  268. }
  269. [Fact]
  270. private void AblagestapelZusammenstellenTest()
  271. {
  272. UnoRegeln.ZiehKartenStapelZusammenstellen();
  273. var ergebnis = UnoRegeln.ZiehKartenStapel;
  274. Assert.Equal(108, ergebnis.KartenModels.Count());
  275. }
  276. #endregion
  277. }
  278. }