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.

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