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.
128 lines
6.4 KiB
128 lines
6.4 KiB
package Game.TicTacToe;
|
|
|
|
import Game.Tictactoe;
|
|
import org.junit.jupiter.api.AfterEach;
|
|
import org.junit.jupiter.api.BeforeEach;
|
|
import org.junit.jupiter.api.Test;
|
|
import org.mockito.internal.util.reflection.FieldSetter;
|
|
|
|
import java.util.Arrays;
|
|
|
|
import static org.junit.jupiter.api.Assertions.*;
|
|
import static org.mockito.Mockito.mock;
|
|
|
|
class BoardTest {
|
|
|
|
Board board;
|
|
|
|
@BeforeEach
|
|
void setUp() {
|
|
board = new Board();
|
|
}
|
|
|
|
@AfterEach
|
|
void tearDown() {
|
|
}
|
|
|
|
@Test
|
|
void getStatedChar() {
|
|
assertEquals(Board.getStatedChar(Board.State.CIRCLE), 'O');
|
|
assertEquals(Board.getStatedChar(Board.State.CROSS), 'X');
|
|
assertEquals(Board.getStatedChar(Board.State.EMPTY), ' ');
|
|
}
|
|
|
|
@Test
|
|
void testForEmptyBoardOnInitialization() {
|
|
for (int i = 0; i < 9; i++) {
|
|
assertEquals(board.getStates()[i], Board.State.EMPTY);
|
|
}
|
|
}
|
|
|
|
@Test
|
|
void setCellState() {
|
|
Board.State[] lastBoard = Arrays.copyOf(board.getStates(), board.getStates().length);
|
|
board.setCellState(1, true);
|
|
assertFalse(Arrays.equals(lastBoard, board.getStates()));
|
|
assertEquals(board.getStates()[0], Board.State.CROSS);
|
|
board.setCellState(1, false);
|
|
assertEquals(board.getStates()[0], Board.State.CROSS);
|
|
board.setCellState(2, false);
|
|
assertEquals(board.getStates()[1], Board.State.CIRCLE);
|
|
}
|
|
|
|
@SuppressWarnings("AssertBetweenInconvertibleTypes")
|
|
@Test
|
|
void testEquals() {
|
|
assertNotEquals(board, "Test");
|
|
Board secondBoard = new Board();
|
|
assertEquals(board, secondBoard);
|
|
secondBoard.getStates()[0] = Board.State.CROSS;
|
|
assertNotEquals(board, secondBoard);
|
|
board.getStates()[0] = Board.State.CROSS;
|
|
assertEquals(board, secondBoard);
|
|
}
|
|
|
|
|
|
@Test
|
|
void convertSimpleToState() {
|
|
int[] test = {1, 1, 1, 2, 0, 2, 2, 0, 0};
|
|
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};
|
|
int[] test2 = {1, 0, 0, 1, 0, 0, 1, 0, 0};
|
|
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};
|
|
int[] test3 = {69, 0, 0, 0, 1, 0, 0, 0, 1};
|
|
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};
|
|
int[] test4 = {3, 0, 0, 0, 1, 0, 0, 0, 1};
|
|
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};
|
|
int[] test5 = {3, 0, 0, 0, 1, 0, 0, 0};
|
|
assertTrue(Arrays.deepEquals(expected, Board.convertSimpleToState(test)));
|
|
assertTrue(Arrays.deepEquals(expected2, Board.convertSimpleToState(test2)));
|
|
assertFalse(Arrays.deepEquals(expected3, Board.convertSimpleToState(test3)));
|
|
assertTrue(Arrays.deepEquals(expected4, Board.convertSimpleToState(test4)));
|
|
assertNull(Board.convertSimpleToState(test5));
|
|
}
|
|
|
|
@Test
|
|
void getCurrentState() {
|
|
Board.State[] testArray = Board.convertSimpleToState(new int[]{2, 2, 2, 1, 0, 1, 1, 0, 0});
|
|
Board.State[] testArray2 = Board.convertSimpleToState(new int[]{1, 0, 2, 1, 2, 0, 1, 0, 2});
|
|
Board.State[] testArray3 = Board.convertSimpleToState(new int[]{1, 0, 2, 0, 1, 2, 0, 2, 1});
|
|
Board.State[] testArray4 = Board.convertSimpleToState(new int[]{0, 1, 2, 2, 1, 0, 0, 1, 2});
|
|
Board.State[] testArray5 = Board.convertSimpleToState(new int[]{1, 0, 0, 2, 2, 2, 1, 0, 1});
|
|
Board.State[] testArray6 = Board.convertSimpleToState(new int[]{2, 0, 1, 2, 1, 0, 1, 2, 0});
|
|
Board.State[] testArray7 = Board.convertSimpleToState(new int[]{0, 0, 1, 0, 2, 1, 2, 2, 1});
|
|
Board.State[] testArray8 = Board.convertSimpleToState(new int[]{1, 0, 0, 1, 1, 0, 2, 2, 2});
|
|
|
|
Board.State[] drawArray = Board.convertSimpleToState(new int[]{2, 1, 2, 1, 2, 1, 1, 2, 1});
|
|
Board.State[] drawArray2 = Board.convertSimpleToState(new int[]{2, 2, 1, 1, 1, 2, 2, 2, 1});
|
|
Board.State[] notFinishedArray = Board.convertSimpleToState(new int[]{2, 2, 1, 2, 0, 1, 0, 0, 0});
|
|
|
|
try {
|
|
FieldSetter.setField(board, board.getClass().getDeclaredField("states"), testArray);
|
|
assertEquals(board.getCurrentState(), Board.CurrentState.CROSSWIN);
|
|
FieldSetter.setField(board, board.getClass().getDeclaredField("states"), testArray2);
|
|
assertEquals(board.getCurrentState(), Board.CurrentState.CIRCLEWIN);
|
|
FieldSetter.setField(board, board.getClass().getDeclaredField("states"), testArray3);
|
|
assertEquals(board.getCurrentState(), Board.CurrentState.CIRCLEWIN);
|
|
FieldSetter.setField(board, board.getClass().getDeclaredField("states"), testArray4);
|
|
assertEquals(board.getCurrentState(), Board.CurrentState.CIRCLEWIN);
|
|
FieldSetter.setField(board, board.getClass().getDeclaredField("states"), testArray5);
|
|
assertEquals(board.getCurrentState(), Board.CurrentState.CROSSWIN);
|
|
FieldSetter.setField(board, board.getClass().getDeclaredField("states"), testArray6);
|
|
assertEquals(board.getCurrentState(), Board.CurrentState.CIRCLEWIN);
|
|
FieldSetter.setField(board, board.getClass().getDeclaredField("states"), testArray7);
|
|
assertEquals(board.getCurrentState(), Board.CurrentState.CIRCLEWIN);
|
|
FieldSetter.setField(board, board.getClass().getDeclaredField("states"), testArray8);
|
|
assertEquals(board.getCurrentState(), Board.CurrentState.CROSSWIN);
|
|
|
|
FieldSetter.setField(board, board.getClass().getDeclaredField("states"), drawArray);
|
|
assertEquals(board.getCurrentState(), Board.CurrentState.DRAW);
|
|
FieldSetter.setField(board, board.getClass().getDeclaredField("states"), drawArray2);
|
|
assertEquals(board.getCurrentState(), Board.CurrentState.DRAW);
|
|
FieldSetter.setField(board, board.getClass().getDeclaredField("states"), notFinishedArray);
|
|
assertEquals(board.getCurrentState(), Board.CurrentState.NOTFINISHED);
|
|
|
|
} catch (NoSuchFieldException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
}
|