mirror of
https://github.com/2OOP/pism.git
synced 2026-02-04 10:54:51 +00:00
83 lines
2.3 KiB
Java
83 lines
2.3 KiB
Java
package org.toop.game.tictactoe;
|
|
|
|
import org.junit.jupiter.api.BeforeEach;
|
|
import org.junit.jupiter.api.Test;
|
|
import org.toop.game.GameBase;
|
|
import org.toop.game.Player;
|
|
|
|
class GameBaseTest {
|
|
|
|
private static class TestGame extends GameBase {
|
|
public TestGame(int size, Player p1, Player p2) {
|
|
super(size, p1, p2);
|
|
}
|
|
|
|
@Override
|
|
public State play(int index) {
|
|
if (!isInside(index)) return State.INVALID;
|
|
grid[index] = getCurrentPlayer().getSymbol();
|
|
// Just alternate players for testing
|
|
currentPlayer = (currentPlayer + 1) % 2;
|
|
return State.NORMAL;
|
|
}
|
|
}
|
|
|
|
private GameBase game;
|
|
private Player player1;
|
|
private Player player2;
|
|
|
|
@BeforeEach
|
|
void setUp() {
|
|
player1 = new Player("A", 'X');
|
|
player2 = new Player("B", 'O');
|
|
game = new TestGame(3, player1, player2);
|
|
}
|
|
|
|
@Test
|
|
void testConstructor_initializesGridAndPlayers() {
|
|
assertEquals(3, game.getSize());
|
|
assertEquals(9, game.getGrid().length);
|
|
|
|
for (char c : game.getGrid()) {
|
|
assertEquals(GameBase.EMPTY, c);
|
|
}
|
|
|
|
assertEquals(player1, game.getPlayers()[0]);
|
|
assertEquals(player2, game.getPlayers()[1]);
|
|
assertEquals(player1, game.getCurrentPlayer());
|
|
}
|
|
|
|
@Test
|
|
void testIsInside_returnsTrueForValidIndices() {
|
|
for (int i = 0; i < 9; i++) {
|
|
assertTrue(game.isInside(i));
|
|
}
|
|
}
|
|
|
|
@Test
|
|
void testIsInside_returnsFalseForInvalidIndices() {
|
|
assertFalse(game.isInside(-1));
|
|
assertFalse(game.isInside(9));
|
|
assertFalse(game.isInside(100));
|
|
}
|
|
|
|
@Test
|
|
void testPlay_alternatesPlayersAndMarksGrid() {
|
|
// First move
|
|
assertEquals(GameBase.State.NORMAL, game.play(0));
|
|
assertEquals('X', game.getGrid()[0]);
|
|
assertEquals(player2, game.getCurrentPlayer());
|
|
|
|
// Second move
|
|
assertEquals(GameBase.State.NORMAL, game.play(1));
|
|
assertEquals('O', game.getGrid()[1]);
|
|
assertEquals(player1, game.getCurrentPlayer());
|
|
}
|
|
|
|
@Test
|
|
void testPlay_invalidIndexReturnsInvalid() {
|
|
assertEquals(GameBase.State.INVALID, game.play(-1));
|
|
assertEquals(GameBase.State.INVALID, game.play(9));
|
|
}
|
|
}
|