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.

131 lines
5.4 KiB

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.ArrayList;
  8. import java.util.Arrays;
  9. import java.util.Iterator;
  10. import java.util.stream.Stream;
  11. public class GameboardTest {
  12. private Gameboard gb;
  13. private Game g;
  14. @BeforeEach
  15. void setup() {
  16. gb = new Gameboard();
  17. g = new Game();
  18. }
  19. @Test
  20. void checkGameboardSize() {
  21. String expectedResult = "56";
  22. String currentResult = "" + gb.board.length;
  23. assertThat(currentResult).describedAs("Dimensions").isEqualTo(expectedResult);
  24. }
  25. @Test
  26. void checkGameboardFilled() {
  27. int[] expectedGameboard = new int[56];
  28. int [] givenGameboard = gb.board;
  29. assertThat(givenGameboard).describedAs("Initial Gameboard").isEqualTo(expectedGameboard);
  30. }
  31. @ParameterizedTest
  32. @MethodSource("FieldStream")
  33. void checkGameboardFieldType(String testname, int Pos, int expectedResult) {
  34. gb.initGameboard();
  35. int currentType = gb.board[Pos];
  36. assertThat(currentType).describedAs(testname).isEqualTo(expectedResult);
  37. }
  38. static Stream<Arguments> FieldStream () {
  39. return Stream.of(
  40. Arguments.of("Normal Path", 1, 0),
  41. Arguments.of("Starting Field", 0, 1),
  42. Arguments.of("Starting Field", 10, 1),
  43. Arguments.of("Starting Field", 20, 1),
  44. Arguments.of("Starting Field", 30, 1),
  45. Arguments.of("Doorway Field", 9, 2),
  46. Arguments.of("Doorway Field", 19, 2),
  47. Arguments.of("Doorway Field", 29, 2),
  48. Arguments.of("Doorway Field", 39, 2),
  49. Arguments.of("House Field", 40, 3),
  50. Arguments.of("House Field", 55, 3)
  51. );
  52. }
  53. @ParameterizedTest
  54. @MethodSource("FiguresOnBoardData")
  55. void checkGetFiguresOnBoard (String testname, ArrayList<Integer> positions, String[] expectedResult) {
  56. Iterator<Player> pIt = g.players.iterator();
  57. Iterator<Integer> posIt = positions.iterator();
  58. while(pIt.hasNext()) {
  59. Player p = pIt.next();
  60. for (Figure f : p.figures) {
  61. f.setPosition(posIt.next());
  62. }
  63. }
  64. String[] calculatedResult = g.gb.getFiguresOnBoard(g);
  65. assertThat(calculatedResult).describedAs(testname).isEqualTo(expectedResult);
  66. }
  67. static Stream<Arguments> FiguresOnBoardData () {
  68. return Stream.of(
  69. Arguments.of(
  70. "All Figures in Base",
  71. new ArrayList<>(Arrays.asList(
  72. -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
  73. )),
  74. new String[] {
  75. " "," "," "," "," "," "," "," "," "," ",
  76. " "," "," "," "," "," "," "," "," "," ",
  77. " "," "," "," "," "," "," "," "," "," ",
  78. " "," "," "," "," "," "," "," "," "," ",
  79. " "," "," "," "," "," "," "," "," "," ",
  80. " "," "," "," "," "," ","\u001b[31;1m1\u001b[0m",
  81. "\u001b[31;1m2\u001b[0m","\u001b[31;1m3\u001b[0m","\u001b[31;1m4\u001b[0m",
  82. "\u001b[34;1m1\u001b[0m","\u001b[34;1m2\u001b[0m","\u001b[34;1m3\u001b[0m",
  83. "\u001b[34;1m4\u001b[0m","\u001b[33;1m1\u001b[0m","\u001b[33;1m2\u001b[0m",
  84. "\u001b[33;1m3\u001b[0m","\u001b[33;1m4\u001b[0m","\u001b[32;1m1\u001b[0m",
  85. "\u001b[32;1m2\u001b[0m", "\u001b[32;1m3\u001b[0m","\u001b[32;1m4\u001b[0m"}
  86. ),
  87. Arguments.of(
  88. "Figures on Board",
  89. new ArrayList<>(Arrays.asList(
  90. 0,1,3,5,-1,-1,-1,-1,10,12,16,-1,-1,-1,-1,-1
  91. )),
  92. new String[] {
  93. "\u001b[31;1m1\u001b[0m","\u001b[31;1m2\u001b[0m"," ","\u001b[31;1m3\u001b[0m",
  94. " ","\u001b[31;1m4\u001b[0m"," "," ",
  95. " "," ","\u001b[33;1m1\u001b[0m"," ",
  96. "\u001b[33;1m2\u001b[0m"," "," "," ",
  97. "\u001b[33;1m3\u001b[0m"," "," "," ",
  98. " "," "," "," ",
  99. " "," "," "," ",
  100. " "," "," "," ",
  101. " "," "," "," ",
  102. " "," "," "," ",
  103. " "," "," "," ",
  104. " "," "," "," ",
  105. " "," "," "," ",
  106. " "," "," "," ",
  107. " "," "," "," ",
  108. "\u001b[34;1m1\u001b[0m","\u001b[34;1m2\u001b[0m","\u001b[34;1m3\u001b[0m",
  109. "\u001b[34;1m4\u001b[0m", " "," "," ","\u001b[33;1m4\u001b[0m",
  110. "\u001b[32;1m1\u001b[0m","\u001b[32;1m2\u001b[0m","\u001b[32;1m3\u001b[0m",
  111. "\u001b[32;1m4\u001b[0m"}
  112. )
  113. );
  114. }
  115. }