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.

208 lines
7.4 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. import static org.assertj.core.api.Assertions.*;
  2. import org.junit.jupiter.api.BeforeEach;
  3. import org.junit.jupiter.api.Test;
  4. import org.junit.jupiter.params.ParameterizedTest;
  5. import org.junit.jupiter.params.provider.Arguments;
  6. import org.junit.jupiter.params.provider.MethodSource;
  7. import java.util.*;
  8. import java.util.stream.Stream;
  9. public class GameTest {
  10. private Game g;
  11. private Player p1;
  12. private Game g2;
  13. private Player p2;
  14. @BeforeEach
  15. void setup() {
  16. g = new Game();
  17. p1 = g.players.get(0);
  18. g2 = new Game();
  19. p2 = g2.players.get(0);
  20. }
  21. @ParameterizedTest
  22. @MethodSource("checkDiceTestData")
  23. void checkDiceTest(String testname, Collection<Integer> positions, int dice, int c, boolean expectedResult) {
  24. Iterator<Figure> it = p1.figures.iterator();
  25. Iterator<Integer> it2 = positions.iterator();
  26. while(it.hasNext()) {
  27. it.next().setPosition(it2.next());
  28. }
  29. boolean calculatedResult = g.checkDice(dice, p1, c, g);
  30. assertThat(calculatedResult).describedAs(testname).isEqualTo(expectedResult);
  31. }
  32. static Stream<Arguments> checkDiceTestData () {
  33. return Stream.of(
  34. Arguments.of("No figures on Field - d: 1 - c: 1",
  35. Arrays.asList(-1, -1, -1, -1),
  36. 1,
  37. 1,
  38. true
  39. ),
  40. Arguments.of("No figures on Field - d: 1 - c: 2",
  41. Arrays.asList(-1, -1, -1, -1),
  42. 1,
  43. 2,
  44. true
  45. ),
  46. Arguments.of("No figures on Field - d: 1 - c: 3",
  47. Arrays.asList(-1, -1, -1, -1),
  48. 1,
  49. 3,
  50. false
  51. ),
  52. Arguments.of("No figures on Field - d: 1 - c: 4",
  53. Arrays.asList(-1, -1, -1, -1),
  54. 1,
  55. 4,
  56. false
  57. ),
  58. Arguments.of("Figures on Field - d: 1 - c: 1",
  59. Arrays.asList(10, -1, 2, -1),
  60. 1,
  61. 1,
  62. false
  63. ),
  64. Arguments.of("Figures on Field - d: 6 - c: 1",
  65. Arrays.asList(10, -1, 2, -1),
  66. 6,
  67. 1,
  68. true
  69. ),
  70. Arguments.of("Figures in Base + One in Finish (movable) - d: 5 - c: 1",
  71. Arrays.asList(42, -1, -1, -1),
  72. 5,
  73. 1,
  74. false
  75. ),
  76. Arguments.of("Figures in Base + Two in Finish - d: 5 - c: 1",
  77. Arrays.asList(42, 43, -1, -1),
  78. 5,
  79. 1,
  80. true
  81. )
  82. );
  83. }
  84. @Test
  85. void checkFieldClearTestFieldNotTaken() {
  86. int expectedResult = 0;
  87. int calculatedResult = g.checkFieldClear(1, p1, g);
  88. assertThat(calculatedResult).describedAs("Check Field Clear").isEqualTo(expectedResult);
  89. }
  90. @Test
  91. void checkFieldClearTestFieldTakenByOtherPlayer() {
  92. int expectedResult = 1;
  93. g.players.get(1).figures.get(0).setPosition(1);
  94. int calculatedResult = g.checkFieldClear(1, p1, g);
  95. assertThat(calculatedResult).describedAs("Check Field Clear").isEqualTo(expectedResult);
  96. }
  97. @Test
  98. void checkFieldClearTestFieldTakenByOwnFigure() {
  99. int expectedResult = 2;
  100. p1.figures.get(1).setPosition(1);
  101. int calculatedResult = g.checkFieldClear(1, p1, g);
  102. assertThat(calculatedResult).describedAs("Check Field Clear").isEqualTo(expectedResult);
  103. }
  104. @ParameterizedTest
  105. @MethodSource("usableFiguresData")
  106. void getUsableFiguresTest(String testname, int dice, Collection<Integer> positions, ArrayList<Integer> expectedResult) {
  107. Iterator<Figure> figureIt = p1.figures.iterator();
  108. Iterator<Integer> posIt = positions.iterator();
  109. while(figureIt.hasNext()) {
  110. Figure f = figureIt.next();
  111. f.setPosition(posIt.next());
  112. }
  113. List<Integer> calculatedResult = g.getUsableFigures(dice, p1, g);
  114. assertThat(calculatedResult).describedAs(testname).isEqualTo(expectedResult);
  115. }
  116. static Stream<Arguments> usableFiguresData () {
  117. return Stream.of(
  118. Arguments.of(
  119. "Alle Figuren",
  120. 1,
  121. Arrays.asList(10, 25, 2, 17),
  122. new ArrayList<>(Arrays.asList(0, 1, 2, 3))
  123. ),
  124. Arguments.of(
  125. "Nur Figuren aus der Base",
  126. 6,
  127. Arrays.asList(10, -1, -1, -1),
  128. new ArrayList<>(Arrays.asList(1, 2, 3))
  129. ),
  130. Arguments.of(
  131. "Figur die das Startfeld besetzt",
  132. 6,
  133. Arrays.asList(10, 0, -1, -1),
  134. new ArrayList<>(List.of(1))
  135. ),
  136. Arguments.of(
  137. "Figur vor dem Ziel - kann man benutzen",
  138. 5,
  139. Arrays.asList(10, 37, -1, -1),
  140. new ArrayList<>(Arrays.asList(0,1))
  141. ),
  142. Arguments.of(
  143. "Figur vor dem Ziel - kann man nicht benutzen",
  144. 5,
  145. Arrays.asList(10, 39, -1, -1),
  146. new ArrayList<>(List.of(0))
  147. ),
  148. Arguments.of(
  149. "Nur Figuren die auf ein freies Feld kommen",
  150. 2,
  151. Arrays.asList(10, 12, -1, -1),
  152. new ArrayList<>(List.of(1))
  153. ),
  154. Arguments.of(
  155. "Figur auf Startfeld",
  156. 6,
  157. Arrays.asList(-1, -1, -1, 0),
  158. new ArrayList<>(List.of(3))
  159. ),
  160. Arguments.of(
  161. "Im Ziel überworfen nur andere Figuren möglich",
  162. 5,
  163. Arrays.asList(-1, 41, -1, 0),
  164. new ArrayList<>(List.of(3))
  165. ),
  166. Arguments.of(
  167. "Im Haus bewegen",
  168. 2,
  169. Arrays.asList(-1, 41, -1, 0),
  170. new ArrayList<>(List.of(1, 3))
  171. )
  172. );
  173. }
  174. @ParameterizedTest
  175. @MethodSource("setFigureData")
  176. void setFigureTest(String testname, int figId, int dice, int currentPosition, int expectedResult) {
  177. p2.figures.get(figId).setPosition(currentPosition);
  178. int calculatedResult = g2.setFigure(figId, dice, p2, g2);
  179. assertThat(calculatedResult).describedAs(testname).isEqualTo(expectedResult);
  180. }
  181. static Stream<Arguments> setFigureData () {
  182. return Stream.of(
  183. Arguments.of("Figur wird auf Feld gesetzt - Niemand gekicked", 0, 4, 5, 9),
  184. Arguments.of("Figur wird auf Feld gesetzt - Jemand gekicked", 1, 4, 10, 14),
  185. Arguments.of("Figur wird ins Haus gesetzt", 3, 4, 38, 42),
  186. Arguments.of("Figur wird im Haus gesetzt", 3, 3, 41, 44)
  187. );
  188. }
  189. }