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.

323 lines
10 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. [Theory]
  23. [InlineData(4, 0,
  24. TicTacToeBrett.LEER, TicTacToeBrett.LEER, TicTacToeBrett.LEER,
  25. TicTacToeBrett.LEER, 0
  26. )]
  27. [InlineData(0, 1,
  28. 1
  29. )]
  30. [InlineData(8, 2,
  31. TicTacToeBrett.LEER, TicTacToeBrett.LEER, TicTacToeBrett.LEER,
  32. TicTacToeBrett.LEER, TicTacToeBrett.LEER, TicTacToeBrett.LEER,
  33. TicTacToeBrett.LEER, TicTacToeBrett.LEER, 2
  34. )]
  35. [InlineData(6, 3,
  36. TicTacToeBrett.LEER, TicTacToeBrett.LEER, 3,
  37. TicTacToeBrett.LEER, TicTacToeBrett.LEER, TicTacToeBrett.LEER,
  38. TicTacToeBrett.LEER, TicTacToeBrett.LEER, TicTacToeBrett.LEER
  39. )]
  40. [InlineData(3, 4,
  41. TicTacToeBrett.LEER, 4, TicTacToeBrett.LEER,
  42. TicTacToeBrett.LEER, TicTacToeBrett.LEER, TicTacToeBrett.LEER,
  43. TicTacToeBrett.LEER, TicTacToeBrett.LEER, TicTacToeBrett.LEER
  44. )]
  45. public void Set_FreiesFeldBelegenTest(int pos, int wert,
  46. int a = TicTacToeBrett.LEER, int b = TicTacToeBrett.LEER, int c = TicTacToeBrett.LEER,
  47. int d = TicTacToeBrett.LEER, int e = TicTacToeBrett.LEER, int f = TicTacToeBrett.LEER,
  48. int g = TicTacToeBrett.LEER, int h = TicTacToeBrett.LEER, int i = TicTacToeBrett.LEER
  49. )
  50. {
  51. // arrange
  52. TicTacToeBrett brett = new();
  53. TicTacToeBrett erwartetesBrett = TestBrett(a, b, c, d, e, f, g, h, i);
  54. bool erwartetGesetzt = true;
  55. // act
  56. bool erhaltenGesetzt = brett.Set(pos, wert);
  57. // assert
  58. Assert.Equal(erwartetGesetzt, erhaltenGesetzt);
  59. Assert.True(brett.Gleich(erwartetesBrett));
  60. }
  61. [Fact]
  62. public void Set_BelegtesFeldBelegenTest()
  63. {
  64. // arrange
  65. TicTacToeBrett brett = TestBrett(1);
  66. TicTacToeBrett erwartetesBrett = TestBrett(1);
  67. int pos = 0;
  68. int wert = 1;
  69. bool erwartetGesetzt = false;
  70. // act
  71. bool erhaltenGesetzt = brett.Set(pos, wert);
  72. // assert
  73. Assert.Equal(erwartetGesetzt, erhaltenGesetzt);
  74. Assert.True(brett.Gleich(erwartetesBrett));
  75. }
  76. [Theory]
  77. [InlineData(-1)]
  78. [InlineData(9)]
  79. public void Set_OutOfBoundsTest(int pos)
  80. {
  81. // arrange
  82. TicTacToeBrett brett = new();
  83. TicTacToeBrett erwartetesBrett = new();
  84. int wert = 0;
  85. bool erwartetGesetzt = false;
  86. // act
  87. bool erhaltenGesetzt = brett.Set(pos, wert);
  88. // assert
  89. Assert.Equal(erwartetGesetzt, erhaltenGesetzt);
  90. Assert.True(brett.Gleich(erwartetesBrett));
  91. }
  92. [Fact]
  93. public void Gleich_LeereBretterGleichTest()
  94. {
  95. // arrange
  96. TicTacToeBrett b1 = new();
  97. TicTacToeBrett b2 = new();
  98. bool erwartetGleich = true;
  99. // act
  100. bool erhaltenGleich = b1.Gleich(b2);
  101. // assert
  102. Assert.Equal(erwartetGleich, erhaltenGleich);
  103. }
  104. [Fact]
  105. public void Gleich_NichtLeereBretterGleichTest()
  106. {
  107. // arrange
  108. TicTacToeBrett b1 = TestBrett(1, 2, 3, 4, 5, 6, 7, 8, 9);
  109. TicTacToeBrett b2 = TestBrett(1, 2, 3, 4, 5, 6, 7, 8, 9);
  110. bool erwartetGleich = true;
  111. // act
  112. bool erhaltenGleich = b1.Gleich(b2);
  113. // assert
  114. Assert.Equal(erwartetGleich, erhaltenGleich);
  115. }
  116. [Fact]
  117. public void Gleich_ErsteUngleichTest()
  118. {
  119. // arrange
  120. TicTacToeBrett b1 = TestBrett(1);
  121. TicTacToeBrett b2 = TestBrett(2);
  122. bool erwartetGleich = false;
  123. // act
  124. bool erhaltenGleich = b1.Gleich(b2);
  125. // assert
  126. Assert.Equal(erwartetGleich, erhaltenGleich);
  127. }
  128. [Fact]
  129. public void Gleich_LetzteUngleichTest()
  130. {
  131. // arrange
  132. TicTacToeBrett b1 = TestBrett(1, 2, 3, 4, 5, 6, 7, 8, 9);
  133. TicTacToeBrett b2 = TestBrett(1, 2, 3, 4, 5, 6, 7, 8, 10);
  134. bool erwartetGleich = false;
  135. // act
  136. bool erhaltenGleich = b1.Gleich(b2);
  137. // assert
  138. Assert.Equal(erwartetGleich, erhaltenGleich);
  139. }
  140. [Fact]
  141. public void Voll_LeeresBrettTest()
  142. {
  143. // arrange
  144. TicTacToeBrett brett = TestBrett();
  145. bool erwartetVoll = false;
  146. // act
  147. bool erhaltenVoll = brett.Voll();
  148. // assert
  149. Assert.Equal(erwartetVoll, erhaltenVoll);
  150. }
  151. [Fact]
  152. public void Voll_VollesBrettTest()
  153. {
  154. // arrange
  155. TicTacToeBrett brett = TestBrett(1, 2, 3, 4, 5, 6, 7, 8, 9);
  156. bool erwartetVoll = true;
  157. // act
  158. bool erhaltenVoll = brett.Voll();
  159. // assert
  160. Assert.Equal(erwartetVoll, erhaltenVoll);
  161. }
  162. [Fact]
  163. public void Voll_FastVollesBrettTest()
  164. {
  165. // arrange
  166. TicTacToeBrett brett = TestBrett(1, 2, 3, 4, 5, 6, 7, 8);
  167. bool erwartetVoll = false;
  168. // act
  169. bool erhaltenVoll = brett.Voll();
  170. // assert
  171. Assert.Equal(erwartetVoll, erhaltenVoll);
  172. }
  173. [Fact]
  174. public void Gewinner_LeeresFeldTest()
  175. {
  176. // arrange
  177. TicTacToeBrett brett = TestBrett();
  178. int erwarteterGewinner = TicTacToeBrett.LEER;
  179. // act
  180. int erhaltenerGewinner = brett.Gewinner();
  181. // assert
  182. Assert.Equal(erwarteterGewinner, erhaltenerGewinner);
  183. }
  184. [Theory]
  185. // Vertikale Reihe 1
  186. [InlineData(0,
  187. 0, 0, 0,
  188. TicTacToeBrett.LEER, TicTacToeBrett.LEER, TicTacToeBrett.LEER,
  189. TicTacToeBrett.LEER, TicTacToeBrett.LEER, TicTacToeBrett.LEER
  190. )]
  191. // Vertikale Reihe 2
  192. [InlineData(1,
  193. TicTacToeBrett.LEER, TicTacToeBrett.LEER, TicTacToeBrett.LEER,
  194. 1, 1, 1,
  195. TicTacToeBrett.LEER, TicTacToeBrett.LEER, TicTacToeBrett.LEER
  196. )]
  197. // Vertikale Reihe 3
  198. [InlineData(2,
  199. TicTacToeBrett.LEER, TicTacToeBrett.LEER, TicTacToeBrett.LEER,
  200. TicTacToeBrett.LEER, TicTacToeBrett.LEER, TicTacToeBrett.LEER,
  201. 2, 2, 2
  202. )]
  203. // Horizontale Reihe 1
  204. [InlineData(3,
  205. 3, TicTacToeBrett.LEER, TicTacToeBrett.LEER,
  206. 3, TicTacToeBrett.LEER, TicTacToeBrett.LEER,
  207. 3, TicTacToeBrett.LEER, TicTacToeBrett.LEER
  208. )]
  209. // Horizontale Reihe 2
  210. [InlineData(4,
  211. TicTacToeBrett.LEER, 4, TicTacToeBrett.LEER,
  212. TicTacToeBrett.LEER, 4, TicTacToeBrett.LEER,
  213. TicTacToeBrett.LEER, 4, TicTacToeBrett.LEER
  214. )]
  215. // Horizontale Reihe 3
  216. [InlineData(5,
  217. TicTacToeBrett.LEER, TicTacToeBrett.LEER, 5,
  218. TicTacToeBrett.LEER, TicTacToeBrett.LEER, 5,
  219. TicTacToeBrett.LEER, TicTacToeBrett.LEER, 5
  220. )]
  221. // Diagonale Reihe links oben nach rechts unten
  222. [InlineData(6,
  223. 6, TicTacToeBrett.LEER, TicTacToeBrett.LEER,
  224. TicTacToeBrett.LEER, 6, TicTacToeBrett.LEER,
  225. TicTacToeBrett.LEER, TicTacToeBrett.LEER, 6
  226. )]
  227. // Diagonale Reihe rechts oben nach links unten
  228. [InlineData(7,
  229. TicTacToeBrett.LEER, TicTacToeBrett.LEER, 7,
  230. TicTacToeBrett.LEER, 7, TicTacToeBrett.LEER,
  231. 7, TicTacToeBrett.LEER, TicTacToeBrett.LEER
  232. )]
  233. public void Gewinner_VolleReihenTest(int gewinner,
  234. int a = TicTacToeBrett.LEER, int b = TicTacToeBrett.LEER, int c = TicTacToeBrett.LEER,
  235. int d = TicTacToeBrett.LEER, int e = TicTacToeBrett.LEER, int f = TicTacToeBrett.LEER,
  236. int g = TicTacToeBrett.LEER, int h = TicTacToeBrett.LEER, int i = TicTacToeBrett.LEER
  237. )
  238. {
  239. // arrange
  240. TicTacToeBrett brett = TestBrett(a, b, c, d, e, f, g, h, i);
  241. int erwarteterGewinner = gewinner;
  242. // act
  243. int erhaltenerGewinner = brett.Gewinner();
  244. // assert
  245. Assert.Equal(erwarteterGewinner, erhaltenerGewinner);
  246. }
  247. [Theory]
  248. [InlineData(
  249. 0, TicTacToeBrett.LEER, 0,
  250. TicTacToeBrett.LEER, TicTacToeBrett.LEER, TicTacToeBrett.LEER,
  251. 0, TicTacToeBrett.LEER, 0
  252. )]
  253. [InlineData(
  254. 1, 1, TicTacToeBrett.LEER,
  255. 1, 1, TicTacToeBrett.LEER,
  256. TicTacToeBrett.LEER, TicTacToeBrett.LEER, TicTacToeBrett.LEER
  257. )]
  258. [InlineData(
  259. 2, TicTacToeBrett.LEER, TicTacToeBrett.LEER,
  260. 2, TicTacToeBrett.LEER, 2,
  261. TicTacToeBrett.LEER, 2, 2
  262. )]
  263. [InlineData(
  264. 1, 1, 2,
  265. 1, 3, 2,
  266. 2, 3, 3
  267. )]
  268. public void Gewinner_NichtVolleReihenTest(
  269. int a = TicTacToeBrett.LEER, int b = TicTacToeBrett.LEER, int c = TicTacToeBrett.LEER,
  270. int d = TicTacToeBrett.LEER, int e = TicTacToeBrett.LEER, int f = TicTacToeBrett.LEER,
  271. int g = TicTacToeBrett.LEER, int h = TicTacToeBrett.LEER, int i = TicTacToeBrett.LEER
  272. )
  273. {
  274. // arrange
  275. TicTacToeBrett brett = TestBrett(a, b, c, d, e, f, g, h, i);
  276. int erwarteterGewinner = TicTacToeBrett.LEER;
  277. // act
  278. int erhaltenerGewinner = brett.Gewinner();
  279. // assert
  280. Assert.Equal(erwarteterGewinner, erhaltenerGewinner);
  281. }
  282. }
  283. }