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.

267 lines
8.0 KiB

  1. using MiniGames.Shared.Models;
  2. using Xunit;
  3. namespace MiniGamesTests
  4. {
  5. public class TicTacToeBrettTest
  6. {
  7. public TicTacToeBrett TestBrett(
  8. int a = TicTacToeBrett.LEER, int b = TicTacToeBrett.LEER, int c = TicTacToeBrett.LEER,
  9. int d = TicTacToeBrett.LEER, int e = TicTacToeBrett.LEER, int f = TicTacToeBrett.LEER,
  10. int g = TicTacToeBrett.LEER, int h = TicTacToeBrett.LEER, int i = TicTacToeBrett.LEER
  11. )
  12. {
  13. return new(
  14. new int[,]
  15. {
  16. { a, b, c, },
  17. { d, e, f, },
  18. { g, h, i, },
  19. }
  20. );
  21. }
  22. [Fact]
  23. public void Set_FreiesFeldBelegenTest()
  24. {
  25. // arrange
  26. TicTacToeBrett brett = new();
  27. TicTacToeBrett erwartetesBrett = TestBrett(
  28. TicTacToeBrett.LEER,
  29. TicTacToeBrett.LEER,
  30. TicTacToeBrett.LEER,
  31. TicTacToeBrett.LEER,
  32. 0
  33. );
  34. int pos = 4;
  35. int wert = 0;
  36. bool erwartetGesetzt = true;
  37. // act
  38. bool erhaltenGesetzt = brett.Set(pos, wert);
  39. // assert
  40. Assert.Equal(erwartetGesetzt, erhaltenGesetzt);
  41. Assert.True(brett.Gleich(erwartetesBrett));
  42. }
  43. [Fact]
  44. public void Set_BelegtesFeldBelegenTest()
  45. {
  46. // arrange
  47. TicTacToeBrett brett = TestBrett(1);
  48. TicTacToeBrett erwartetesBrett = TestBrett(1);
  49. int pos = 0;
  50. int wert = 1;
  51. bool erwartetGesetzt = false;
  52. // act
  53. bool erhaltenGesetzt = brett.Set(pos, wert);
  54. // assert
  55. Assert.Equal(erwartetGesetzt, erhaltenGesetzt);
  56. Assert.True(brett.Gleich(erwartetesBrett));
  57. }
  58. [Theory]
  59. [InlineData(-1)]
  60. [InlineData(9)]
  61. public void Set_OutOfBoundsTest(int pos)
  62. {
  63. // arrange
  64. TicTacToeBrett brett = new();
  65. TicTacToeBrett erwartetesBrett = new();
  66. int wert = 0;
  67. bool erwartetGesetzt = false;
  68. // act
  69. bool erhaltenGesetzt = brett.Set(pos, wert);
  70. // assert
  71. Assert.Equal(erwartetGesetzt, erhaltenGesetzt);
  72. Assert.True(brett.Gleich(erwartetesBrett));
  73. }
  74. [Fact]
  75. public void Gleich_LeereBretterGleichTest()
  76. {
  77. // arrange
  78. TicTacToeBrett b1 = new();
  79. TicTacToeBrett b2 = new();
  80. bool erwartetGleich = true;
  81. // act
  82. bool erhaltenGleich = b1.Gleich(b2);
  83. // assert
  84. Assert.Equal(erwartetGleich, erhaltenGleich);
  85. }
  86. [Fact]
  87. public void Gleich_NichtLeereBretterGleichTest()
  88. {
  89. // arrange
  90. TicTacToeBrett b1 = TestBrett(1, 2, 3, 4, 5, 6, 7, 8, 9);
  91. TicTacToeBrett b2 = TestBrett(1, 2, 3, 4, 5, 6, 7, 8, 9);
  92. bool erwartetGleich = true;
  93. // act
  94. bool erhaltenGleich = b1.Gleich(b2);
  95. // assert
  96. Assert.Equal(erwartetGleich, erhaltenGleich);
  97. }
  98. [Fact]
  99. public void Gleich_ErsteUngleichTest()
  100. {
  101. // arrange
  102. TicTacToeBrett b1 = TestBrett(1);
  103. TicTacToeBrett b2 = TestBrett(2);
  104. bool erwartetGleich = false;
  105. // act
  106. bool erhaltenGleich = b1.Gleich(b2);
  107. // assert
  108. Assert.Equal(erwartetGleich, erhaltenGleich);
  109. }
  110. [Fact]
  111. public void Gleich_LetzteUngleichTest()
  112. {
  113. // arrange
  114. TicTacToeBrett b1 = TestBrett(1, 2, 3, 4, 5, 6, 7, 8, 9);
  115. TicTacToeBrett b2 = TestBrett(1, 2, 3, 4, 5, 6, 7, 8, 10);
  116. bool erwartetGleich = false;
  117. // act
  118. bool erhaltenGleich = b1.Gleich(b2);
  119. // assert
  120. Assert.Equal(erwartetGleich, erhaltenGleich);
  121. }
  122. [Fact]
  123. public void Voll_LeeresBrettTest()
  124. {
  125. // arrange
  126. TicTacToeBrett brett = TestBrett();
  127. bool erwartetVoll = false;
  128. // act
  129. bool erhaltenVoll = brett.Voll();
  130. // assert
  131. Assert.Equal(erwartetVoll, erhaltenVoll);
  132. }
  133. [Fact]
  134. public void Voll_VollesBrettTest()
  135. {
  136. // arrange
  137. TicTacToeBrett brett = TestBrett(1, 2, 3, 4, 5, 6, 7, 8, 9);
  138. bool erwartetVoll = true;
  139. // act
  140. bool erhaltenVoll = brett.Voll();
  141. // assert
  142. Assert.Equal(erwartetVoll, erhaltenVoll);
  143. }
  144. [Fact]
  145. public void Voll_FastVollesBrettTest()
  146. {
  147. // arrange
  148. TicTacToeBrett brett = TestBrett(1, 2, 3, 4, 5, 6, 7, 8);
  149. bool erwartetVoll = false;
  150. // act
  151. bool erhaltenVoll = brett.Voll();
  152. // assert
  153. Assert.Equal(erwartetVoll, erhaltenVoll);
  154. }
  155. [Fact]
  156. public void Gewinner_LeeresFeldTest()
  157. {
  158. // arrange
  159. TicTacToeBrett brett = TestBrett();
  160. int erwarteterGewinner = TicTacToeBrett.LEER;
  161. // act
  162. int erhaltenerGewinner = brett.Gewinner();
  163. // assert
  164. Assert.Equal(erwarteterGewinner, erhaltenerGewinner);
  165. }
  166. [Theory]
  167. // Vertikale Reihe 1
  168. [InlineData(0,
  169. 0, 0, 0,
  170. TicTacToeBrett.LEER, TicTacToeBrett.LEER, TicTacToeBrett.LEER,
  171. TicTacToeBrett.LEER, TicTacToeBrett.LEER, TicTacToeBrett.LEER
  172. )]
  173. // Vertikale Reihe 2
  174. [InlineData(1,
  175. TicTacToeBrett.LEER, TicTacToeBrett.LEER, TicTacToeBrett.LEER,
  176. 1, 1, 1,
  177. TicTacToeBrett.LEER, TicTacToeBrett.LEER, TicTacToeBrett.LEER
  178. )]
  179. // Vertikale Reihe 3
  180. [InlineData(2,
  181. TicTacToeBrett.LEER, TicTacToeBrett.LEER, TicTacToeBrett.LEER,
  182. TicTacToeBrett.LEER, TicTacToeBrett.LEER, TicTacToeBrett.LEER,
  183. 2, 2, 2
  184. )]
  185. // Horizontale Reihe 1
  186. [InlineData(3,
  187. 3, TicTacToeBrett.LEER, TicTacToeBrett.LEER,
  188. 3, TicTacToeBrett.LEER, TicTacToeBrett.LEER,
  189. 3, TicTacToeBrett.LEER, TicTacToeBrett.LEER
  190. )]
  191. // Horizontale Reihe 2
  192. [InlineData(4,
  193. TicTacToeBrett.LEER, 4, TicTacToeBrett.LEER,
  194. TicTacToeBrett.LEER, 4, TicTacToeBrett.LEER,
  195. TicTacToeBrett.LEER, 4, TicTacToeBrett.LEER
  196. )]
  197. // Horizontale Reihe 3
  198. [InlineData(5,
  199. TicTacToeBrett.LEER, TicTacToeBrett.LEER, 5,
  200. TicTacToeBrett.LEER, TicTacToeBrett.LEER, 5,
  201. TicTacToeBrett.LEER, TicTacToeBrett.LEER, 5
  202. )]
  203. // Diagonale Reihe links oben nach rechts unten
  204. [InlineData(6,
  205. 6, TicTacToeBrett.LEER, TicTacToeBrett.LEER,
  206. TicTacToeBrett.LEER, 6, TicTacToeBrett.LEER,
  207. TicTacToeBrett.LEER, TicTacToeBrett.LEER, 6
  208. )]
  209. // Diagonale Reihe rechts oben nach links unten
  210. [InlineData(7,
  211. TicTacToeBrett.LEER, TicTacToeBrett.LEER, 7,
  212. TicTacToeBrett.LEER, 7, TicTacToeBrett.LEER,
  213. 7, TicTacToeBrett.LEER, TicTacToeBrett.LEER
  214. )]
  215. public void Gewinner_VolleReihen(int gewinner,
  216. int a = TicTacToeBrett.LEER, int b = TicTacToeBrett.LEER, int c = TicTacToeBrett.LEER,
  217. int d = TicTacToeBrett.LEER, int e = TicTacToeBrett.LEER, int f = TicTacToeBrett.LEER,
  218. int g = TicTacToeBrett.LEER, int h = TicTacToeBrett.LEER, int i = TicTacToeBrett.LEER
  219. )
  220. {
  221. // arrange
  222. TicTacToeBrett brett = TestBrett(a, b, c, d, e, f, g, h, i);
  223. int erwarteterGewinner = gewinner;
  224. // act
  225. int erhaltenerGewinner = brett.Gewinner();
  226. // assert
  227. Assert.Equal(erwarteterGewinner, erhaltenerGewinner);
  228. }
  229. }
  230. }