mirror of
https://github.com/2OOP/pism.git
synced 2026-02-04 10:54:51 +00:00
refactor
This commit is contained in:
82
game/src/test/tictactoe/GameBaseTest.java
Normal file
82
game/src/test/tictactoe/GameBaseTest.java
Normal file
@@ -0,0 +1,82 @@
|
||||
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));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user