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.

125 lines
6.4 KiB

  1. package Game.TicTacToe;
  2. import org.junit.jupiter.api.AfterEach;
  3. import org.junit.jupiter.api.BeforeEach;
  4. import org.junit.jupiter.api.Test;
  5. import org.mockito.internal.util.reflection.FieldSetter;
  6. import java.util.Arrays;
  7. import static org.junit.jupiter.api.Assertions.*;
  8. class BoardTest {
  9. Board board;
  10. @BeforeEach
  11. void setUp() {
  12. board = new Board();
  13. }
  14. @AfterEach
  15. void tearDown() {
  16. }
  17. @Test
  18. void getStatedChar() {
  19. assertEquals(Board.getStatedChar(Board.State.CIRCLE), 'O');
  20. assertEquals(Board.getStatedChar(Board.State.CROSS), 'X');
  21. assertEquals(Board.getStatedChar(Board.State.EMPTY), ' ');
  22. }
  23. @Test
  24. void testForEmptyBoardOnInitialization() {
  25. for (int i = 0; i < 9; i++) {
  26. assertEquals(board.getStates()[i], Board.State.EMPTY);
  27. }
  28. }
  29. @Test
  30. void setCellState() {
  31. Board.State[] lastBoard = Arrays.copyOf(board.getStates(), board.getStates().length);
  32. board.setCellState(1, true);
  33. assertFalse(Arrays.equals(lastBoard, board.getStates()));
  34. assertEquals(board.getStates()[0], Board.State.CROSS);
  35. board.setCellState(1, false);
  36. assertEquals(board.getStates()[0], Board.State.CROSS);
  37. board.setCellState(2, false);
  38. assertEquals(board.getStates()[1], Board.State.CIRCLE);
  39. }
  40. @SuppressWarnings("AssertBetweenInconvertibleTypes")
  41. @Test
  42. void testEquals() {
  43. assertNotEquals(board, "Test");
  44. Board secondBoard = new Board();
  45. assertEquals(board, secondBoard);
  46. secondBoard.getStates()[0] = Board.State.CROSS;
  47. assertNotEquals(board, secondBoard);
  48. board.getStates()[0] = Board.State.CROSS;
  49. assertEquals(board, secondBoard);
  50. }
  51. @Test
  52. void convertSimpleToState() {
  53. int[] test = {1, 1, 1, 2, 0, 2, 2, 0, 0};
  54. Board.State[] expected = {Board.State.CIRCLE, Board.State.CIRCLE, Board.State.CIRCLE, Board.State.CROSS, Board.State.EMPTY, Board.State.CROSS, Board.State.CROSS, Board.State.EMPTY, Board.State.EMPTY};
  55. int[] test2 = {1, 0, 0, 1, 0, 0, 1, 0, 0};
  56. Board.State[] expected2 = {Board.State.CIRCLE, Board.State.EMPTY, Board.State.EMPTY, Board.State.CIRCLE, Board.State.EMPTY, Board.State.EMPTY, Board.State.CIRCLE, Board.State.EMPTY, Board.State.EMPTY};
  57. int[] test3 = {69, 0, 0, 0, 1, 0, 0, 0, 1};
  58. Board.State[] expected3 = {Board.State.CIRCLE, Board.State.EMPTY, Board.State.EMPTY, Board.State.EMPTY, Board.State.CIRCLE, Board.State.EMPTY, Board.State.EMPTY, Board.State.EMPTY, Board.State.CIRCLE};
  59. int[] test4 = {3, 0, 0, 0, 1, 0, 0, 0, 1};
  60. Board.State[] expected4 = {Board.State.EMPTY, Board.State.EMPTY, Board.State.EMPTY, Board.State.EMPTY, Board.State.CIRCLE, Board.State.EMPTY, Board.State.EMPTY, Board.State.EMPTY, Board.State.CIRCLE};
  61. int[] test5 = {3, 0, 0, 0, 1, 0, 0, 0};
  62. assertTrue(Arrays.deepEquals(expected, Board.convertSimpleToState(test)));
  63. assertTrue(Arrays.deepEquals(expected2, Board.convertSimpleToState(test2)));
  64. assertFalse(Arrays.deepEquals(expected3, Board.convertSimpleToState(test3)));
  65. assertTrue(Arrays.deepEquals(expected4, Board.convertSimpleToState(test4)));
  66. assertNull(Board.convertSimpleToState(test5));
  67. }
  68. @Test
  69. void getCurrentState() {
  70. Board.State[] testArray = Board.convertSimpleToState(new int[]{2, 2, 2, 1, 0, 1, 1, 0, 0});
  71. Board.State[] testArray2 = Board.convertSimpleToState(new int[]{1, 0, 2, 1, 2, 0, 1, 0, 2});
  72. Board.State[] testArray3 = Board.convertSimpleToState(new int[]{1, 0, 2, 0, 1, 2, 0, 2, 1});
  73. Board.State[] testArray4 = Board.convertSimpleToState(new int[]{0, 1, 2, 2, 1, 0, 0, 1, 2});
  74. Board.State[] testArray5 = Board.convertSimpleToState(new int[]{1, 0, 0, 2, 2, 2, 1, 0, 1});
  75. Board.State[] testArray6 = Board.convertSimpleToState(new int[]{2, 0, 1, 2, 1, 0, 1, 2, 0});
  76. Board.State[] testArray7 = Board.convertSimpleToState(new int[]{0, 0, 1, 0, 2, 1, 2, 2, 1});
  77. Board.State[] testArray8 = Board.convertSimpleToState(new int[]{1, 0, 0, 1, 1, 0, 2, 2, 2});
  78. Board.State[] drawArray = Board.convertSimpleToState(new int[]{2, 1, 2, 1, 2, 1, 1, 2, 1});
  79. Board.State[] drawArray2 = Board.convertSimpleToState(new int[]{2, 2, 1, 1, 1, 2, 2, 2, 1});
  80. Board.State[] notFinishedArray = Board.convertSimpleToState(new int[]{2, 2, 1, 2, 0, 1, 0, 0, 0});
  81. try {
  82. FieldSetter.setField(board, board.getClass().getDeclaredField("states"), testArray);
  83. assertEquals(board.getCurrentState(), Board.CurrentState.CROSSWIN);
  84. FieldSetter.setField(board, board.getClass().getDeclaredField("states"), testArray2);
  85. assertEquals(board.getCurrentState(), Board.CurrentState.CIRCLEWIN);
  86. FieldSetter.setField(board, board.getClass().getDeclaredField("states"), testArray3);
  87. assertEquals(board.getCurrentState(), Board.CurrentState.CIRCLEWIN);
  88. FieldSetter.setField(board, board.getClass().getDeclaredField("states"), testArray4);
  89. assertEquals(board.getCurrentState(), Board.CurrentState.CIRCLEWIN);
  90. FieldSetter.setField(board, board.getClass().getDeclaredField("states"), testArray5);
  91. assertEquals(board.getCurrentState(), Board.CurrentState.CROSSWIN);
  92. FieldSetter.setField(board, board.getClass().getDeclaredField("states"), testArray6);
  93. assertEquals(board.getCurrentState(), Board.CurrentState.CIRCLEWIN);
  94. FieldSetter.setField(board, board.getClass().getDeclaredField("states"), testArray7);
  95. assertEquals(board.getCurrentState(), Board.CurrentState.CIRCLEWIN);
  96. FieldSetter.setField(board, board.getClass().getDeclaredField("states"), testArray8);
  97. assertEquals(board.getCurrentState(), Board.CurrentState.CROSSWIN);
  98. FieldSetter.setField(board, board.getClass().getDeclaredField("states"), drawArray);
  99. assertEquals(board.getCurrentState(), Board.CurrentState.DRAW);
  100. FieldSetter.setField(board, board.getClass().getDeclaredField("states"), drawArray2);
  101. assertEquals(board.getCurrentState(), Board.CurrentState.DRAW);
  102. FieldSetter.setField(board, board.getClass().getDeclaredField("states"), notFinishedArray);
  103. assertEquals(board.getCurrentState(), Board.CurrentState.NOTFINISHED);
  104. } catch (NoSuchFieldException e) {
  105. e.printStackTrace();
  106. }
  107. }
  108. }