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.

184 lines
7.1 KiB

3 years ago
3 years ago
3 years ago
3 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. p2.figures.get(0).setPosition(5);
  21. p2.figures.get(1).setPosition(10);
  22. g2.players.get(3).figures.get(1).setPosition(14);
  23. }
  24. @ParameterizedTest
  25. @MethodSource("checkDiceTestData")
  26. void checkDiceTest(String testname, Collection<Integer> positions, int dice, int c, boolean expectedResult) {
  27. Iterator<Figure> it = p1.figures.iterator();
  28. Iterator<Integer> it2 = positions.iterator();
  29. while(it.hasNext()) {
  30. it.next().setPosition(it2.next());
  31. }
  32. boolean calculatedResult = g.checkDice(dice, p1, c);
  33. assertThat(calculatedResult).describedAs(testname).isEqualTo(expectedResult);
  34. }
  35. static Stream<Arguments> checkDiceTestData () {
  36. return Stream.of(
  37. Arguments.of("No figures on Field - d: 1 - c: 1",
  38. Arrays.asList(-1, -1, -1, -1),
  39. 1,
  40. 1,
  41. true
  42. ),
  43. Arguments.of("No figures on Field - d: 1 - c: 2",
  44. Arrays.asList(-1, -1, -1, -1),
  45. 1,
  46. 2,
  47. true
  48. ),
  49. Arguments.of("No figures on Field - d: 1 - c: 3",
  50. Arrays.asList(-1, -1, -1, -1),
  51. 1,
  52. 3,
  53. true
  54. ),
  55. Arguments.of("No figures on Field - d: 1 - c: 4",
  56. Arrays.asList(-1, -1, -1, -1),
  57. 1,
  58. 4,
  59. false
  60. ),
  61. Arguments.of("Figures on Field - d: 1 - c: 1",
  62. Arrays.asList(10, -1, 2, -1),
  63. 1,
  64. 1,
  65. false
  66. ),
  67. Arguments.of("Figures on Field - d: 6 - c: 1",
  68. Arrays.asList(10, -1, 2, -1),
  69. 6,
  70. 1,
  71. true
  72. )
  73. );
  74. }
  75. @Test
  76. void checkFieldClearTestFieldNotTaken() {
  77. int expectedResult = 0;
  78. int calculatedResult = g.checkFieldClear(1, p1, g);
  79. assertThat(calculatedResult).describedAs("Check Field Clear").isEqualTo(expectedResult);
  80. }
  81. @Test
  82. void checkFieldClearTestFieldTakenByOtherPlayer() {
  83. int expectedResult = 1;
  84. g.players.get(1).figures.get(0).setPosition(1);
  85. int calculatedResult = g.checkFieldClear(1, p1, g);
  86. assertThat(calculatedResult).describedAs("Check Field Clear").isEqualTo(expectedResult);
  87. }
  88. @Test
  89. void checkFieldClearTestFieldTakenByOwnFigure() {
  90. int expectedResult = 2;
  91. p1.figures.get(1).setPosition(1);
  92. int calculatedResult = g.checkFieldClear(1, p1, g);
  93. assertThat(calculatedResult).describedAs("Check Field Clear").isEqualTo(expectedResult);
  94. }
  95. @ParameterizedTest
  96. @MethodSource("usableFiguresData")
  97. void getUsableFiguresTest(String testname, int dice, Collection<Integer> positions, ArrayList<Integer> expectedResult) {
  98. Iterator<Figure> figureIt = p1.figures.iterator();
  99. Iterator<Integer> posIt = positions.iterator();
  100. while(figureIt.hasNext()) {
  101. Figure f = figureIt.next();
  102. f.setPosition(posIt.next());
  103. }
  104. List<Integer> calculatedResult = g.getUsableFigures(dice, p1, g);
  105. assertThat(calculatedResult).describedAs(testname).isEqualTo(expectedResult);
  106. }
  107. static Stream<Arguments> usableFiguresData () {
  108. return Stream.of(
  109. Arguments.of( //Würfel 1-6 - Keine Figur im Ziel - Alle Figuren auf dem Spielfeld - StartFeld frei - Keine Figur vor Ziel
  110. "Alle Figuren",
  111. 1,
  112. Arrays.asList(10, 25, 2, 17),
  113. new ArrayList<>(Arrays.asList(0, 1, 2, 3))
  114. ),
  115. Arguments.of( //Würfel 6 - Keine Figur im Ziel - 1 Figur auf dem Spielfeld - StartFeld frei - Keine Figur vor Ziel
  116. "Figuren die nicht am Spielfeld stehen",
  117. 6,
  118. Arrays.asList(10, -1, -1, -1),
  119. new ArrayList<>(Arrays.asList(1, 2, 3))
  120. ),
  121. Arguments.of( //Würfel 6 - Keine Figur im Ziel - 1 Figur auf dem Spielfeld - StartFeld besetzt - Keine Figur vor Ziel
  122. "Figur die das Startfeld besetzt",
  123. 6,
  124. Arrays.asList(10, 0, -1, -1),
  125. new ArrayList<>(List.of(1))
  126. ),
  127. Arguments.of( //Würfel 5 - Keine Figur im Ziel - 1 Figur auf dem Spielfeld - StartFeld besetzt - Figur vor Ziel
  128. "Figur vor dem Ziel - kann man benutzen",
  129. 5,
  130. Arrays.asList(10, 37, -1, -1),
  131. new ArrayList<>(Arrays.asList(0,1))
  132. ),
  133. Arguments.of( //Würfel 5 - Keine Figur im Ziel - 1 Figur auf dem Spielfeld - StartFeld besetzt - Figur vor Ziel
  134. "Figur vor dem Ziel - kann man nicht benutzen",
  135. 5,
  136. Arrays.asList(10, 39, -1, -1),
  137. new ArrayList<>(List.of(0))
  138. ),
  139. Arguments.of( //Würfel 5 - Figur im Ziel - 1 Figur auf dem Spielfeld - StartFeld besetzt - Figur vor Ziel
  140. "Nur Figuren die auf ein freies Feld kommen",
  141. 2,
  142. Arrays.asList(10, 12, -1, -1),
  143. new ArrayList<>(List.of(1))
  144. ),
  145. Arguments.of( //Würfel 6 - 1 Figur auf dem Spielfeld - StartFeld besetzt
  146. "Figur auf Startfeld",
  147. 6,
  148. Arrays.asList(-1, -1, -1, 0),
  149. new ArrayList<>(List.of(3))
  150. )
  151. );
  152. }
  153. @ParameterizedTest
  154. @MethodSource("setFigureData")
  155. void setFigureTest(String testname, int figId, int dice, int expectedResult) {
  156. int calculatedResult = g.setFigure(figId, dice, p2, g2);
  157. assertThat(calculatedResult).describedAs(testname).isEqualTo(expectedResult);
  158. }
  159. static Stream<Arguments> setFigureData () {
  160. return Stream.of(
  161. Arguments.of("Figur wird auf Feld gesetzt - Niemand gekicked", 0, 4, 0),
  162. Arguments.of("Figur wird auf Feld gesetzt - Jemand gekicked", 1, 4, 1)
  163. );
  164. }
  165. }