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.

219 lines
8.3 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)]
  106. [InlineData((Kartenbezeichnung)7, Farbe.Blau, false)]
  107. [InlineData((Kartenbezeichnung)9, Farbe.Gruen, false)]
  108. [InlineData((Kartenbezeichnung)4, Farbe.Rot, false)]
  109. [InlineData((Kartenbezeichnung)5, Farbe.Blau, false)]
  110. [InlineData((Kartenbezeichnung)9, Farbe.Gelb, false)]
  111. [InlineData((Kartenbezeichnung)6, Farbe.Gruen, false)]
  112. private void ErstelleStandardKartenTest(Kartenbezeichnung kartenbezeichnung, Farbe farbe, bool spezial)
  113. {
  114. //arrange
  115. var _kartenbezeichnung = kartenbezeichnung.ToString();
  116. var _farbe = farbe.ToString();
  117. var _spezial = spezial;
  118. var erwartet = BeispielKarte(_kartenbezeichnung, _farbe, _spezial);
  119. //act
  120. var neuesDeck = Uno.ErstelleStandardKarten();
  121. var anzahlBlau = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Blau.ToString())).Count();
  122. var anzahlRot = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Rot.ToString())).Count();
  123. var anzahlGruen = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Gruen.ToString())).Count();
  124. var anzahlGelb = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Gelb.ToString())).Count();
  125. //assert
  126. Assert.Equal(9, anzahlBlau);
  127. Assert.Equal(9, anzahlRot);
  128. Assert.Equal(9, anzahlGruen);
  129. Assert.Equal(9, anzahlGelb);
  130. Assert.Contains(neuesDeck.KartenModels, n =>
  131. n.Name.Equals(erwartet.Name) &&
  132. n.Farbe.Equals(erwartet.Farbe) &&
  133. n.Spezial == erwartet.Spezial
  134. );
  135. }
  136. [Theory]
  137. [InlineData(Kartenbezeichnung.PlusZweiKarte, Farbe.Gelb, true)]
  138. [InlineData(Kartenbezeichnung.RetoureKarte, Farbe.Rot, true)]
  139. [InlineData(Kartenbezeichnung.AussetzenKarte, Farbe.Gelb, true)]
  140. [InlineData(Kartenbezeichnung.PlusZweiKarte, Farbe.Blau, true)]
  141. [InlineData(Kartenbezeichnung.PlusZweiKarte, Farbe.Gruen, true)]
  142. [InlineData(Kartenbezeichnung.RetoureKarte, Farbe.Gelb, true)]
  143. [InlineData(Kartenbezeichnung.AussetzenKarte, Farbe.Gruen, true)]
  144. [InlineData(Kartenbezeichnung.PlusZweiKarte, Farbe.Rot, true)]
  145. private void ErstelleFarbigeSpezialKartenTest(Kartenbezeichnung kartenbezeichnung, Farbe farbe, bool spezial)
  146. {
  147. //arrange
  148. var _kartenbezeichnung = kartenbezeichnung.ToString();
  149. var _farbe = farbe.ToString();
  150. var _spezial = spezial;
  151. var erwartet = BeispielKarte(_kartenbezeichnung, _farbe, _spezial);
  152. //act
  153. var neuesDeck = Uno.ErstelleFarbigeSpezialKarten(_kartenbezeichnung.ToString());
  154. var anzahlBlau = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Blau.ToString())).Count();
  155. var anzahlRot = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Rot.ToString())).Count();
  156. var anzahlGruen = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Gruen.ToString())).Count();
  157. var anzahlGelb = neuesDeck.KartenModels.Where(x => x.Farbe.Equals(Farbe.Gelb.ToString())).Count();
  158. //assert
  159. Assert.Equal(2, anzahlBlau);
  160. Assert.Equal(2, anzahlRot);
  161. Assert.Equal(2, anzahlGruen);
  162. Assert.Equal(2, anzahlGelb);
  163. Assert.Contains(neuesDeck.KartenModels, n =>
  164. n.Name.Equals(erwartet.Name) &&
  165. n.Farbe.Equals(erwartet.Farbe) &&
  166. n.Spezial == erwartet.Spezial
  167. );
  168. }
  169. [Theory]
  170. [InlineData(Kartenbezeichnung.FarbwahlKarte, Farbe.Keine, true)]
  171. private void ErstelleJokerKartenTest(Kartenbezeichnung kartenbezeichnung, Farbe farbe, bool spezial)
  172. {
  173. //arrange
  174. var _kartenbezeichnung = kartenbezeichnung.ToString();
  175. var _farbe = farbe.ToString();
  176. var _spezial = spezial;
  177. var erwartet = BeispielKarte(_kartenbezeichnung, _farbe, _spezial);
  178. //act
  179. var neuesDeck = Uno.ErstelleJokerKarten();
  180. var ergebnisAnzahl = neuesDeck.KartenModels.Where(x => x.Name.Equals(kartenbezeichnung.ToString())).Count();
  181. //assert
  182. Assert.Equal(4, ergebnisAnzahl);
  183. Assert.Contains(neuesDeck.KartenModels, n =>
  184. n.Name.Equals(erwartet.Name) &&
  185. n.Farbe.Equals(erwartet.Farbe) &&
  186. n.Spezial == erwartet.Spezial
  187. );
  188. }
  189. }
  190. }