add: cli ui

This commit is contained in:
ramollia
2025-09-17 10:44:53 +02:00
parent 3afd718d91
commit aa7c870fdb
15 changed files with 617 additions and 459 deletions

View File

@@ -1,78 +1,78 @@
import org.junit.jupiter.api.Test;
import org.toop.server.backend.tictactoe.game.MinMaxTicTacToe;
import org.toop.server.backend.tictactoe.game.TicTacToe;
import static org.junit.jupiter.api.Assertions.*;
class MinMaxTicTacToeTest {
// makegame makes a board situation so we can test the AI. that's it really, the rest is easy to follow id say
private TicTacToe makeGame(String board, int currentPlayer) {
TicTacToe game = new TicTacToe("AI", "Human");
// Fill the board
for (int i = 0; i < board.length(); i++) {
char c = board.charAt(i);
game.grid[i] = c;
if (c != ' ') game.moveCount++;
}
game.currentPlayer = currentPlayer;
return game;
}
@Test
void testFindBestMove_AIImmediateWin() {
TicTacToe game = makeGame("XX OO ", 0);
MinMaxTicTacToe ai = new MinMaxTicTacToe();
int bestMove = ai.findBestMove(game);
assertEquals(2, bestMove, "AI has to take winning move at 2");
}
@Test
void testFindBestMove_BlockOpponentWin() {
TicTacToe game = makeGame("OO X ", 0); // 0 = AI's turn
MinMaxTicTacToe ai = new MinMaxTicTacToe();
int bestMove = ai.findBestMove(game);
assertEquals(2, bestMove, "AI should block opponent win at 2");
}
@Test
void testFindBestMove_ChooseDrawIfNoWin() {
TicTacToe game = makeGame("XOXOX O ", 0);
MinMaxTicTacToe ai = new MinMaxTicTacToe();
int bestMove = ai.findBestMove(game);
assertTrue(bestMove == 6 || bestMove == 8, "AI should draw");
}
@Test
void testMinimax_ScoreWin() {
TicTacToe game = makeGame("XXX ", 0);
MinMaxTicTacToe ai = new MinMaxTicTacToe();
int score = ai.doMinimax(game, 5, false);
assertTrue(score > 0, "AI win scored positively");
}
@Test
void testMinimax_ScoreLoss() {
TicTacToe game = makeGame("OOO ", 1);
MinMaxTicTacToe ai = new MinMaxTicTacToe();
int score = ai.doMinimax(game, 5, true);
assertTrue(score < 0, "AI loss is negative");
}
@Test
void testMinimax_ScoreDraw() {
TicTacToe game = makeGame("XOXOXOOXO", 0);
MinMaxTicTacToe ai = new MinMaxTicTacToe();
int score = ai.doMinimax(game, 5, true);
assertEquals(0, score, "Draw should be zero!");
}
@Test
void testMiniMax_MultipleMoves() {
TicTacToe game = makeGame(" X OX O ", 0);
MinMaxTicTacToe ai = new MinMaxTicTacToe();
int bestMove = ai.findBestMove(game);
assertTrue(bestMove == 0 || bestMove == 2, "Can look at multiple moves!");
}
}
//
// import org.junit.jupiter.api.Test;
// import org.toop.game.tictactoe.*;
//
// import static org.junit.jupiter.api.Assertions.*;
//
// class MinMaxTicTacToeTest {
//
// // makegame makes a board situation so we can test the AI. that's it really, the rest is easy to follow id say
// private TicTacToe makeGame(String board, int currentPlayer) {
// TicTacToe game = new TicTacToe("AI", "Human");
// // Fill the board
// for (int i = 0; i < board.length(); i++) {
// char c = board.charAt(i);
// game.play(i);
// game.setGridAt(i, c);
// if (c != ' ') game.decrementMovesLeft();
// }
// game.setCurrentPlayer(currentPlayer);
// return game;
// }
//
// @Test
// void testFindBestMove_AIImmediateWin() {
// TicTacToe game = makeGame("XX OO ", 0);
// MinMaxTicTacToe ai = new MinMaxTicTacToe();
// int bestMove = ai.findBestMove(game);
// assertEquals(2, bestMove, "AI has to take winning move at 2");
// }
//
// @Test
// void testFindBestMove_BlockOpponentWin() {
// TicTacToe game = makeGame("OO X ", 0); // 0 = AI's turn
// MinMaxTicTacToe ai = new MinMaxTicTacToe();
// int bestMove = ai.findBestMove(game);
// assertEquals(2, bestMove, "AI should block opponent win at 2");
// }
//
// @Test
// void testFindBestMove_ChooseDrawIfNoWin() {
// TicTacToe game = makeGame("XOXOX O ", 0);
// MinMaxTicTacToe ai = new MinMaxTicTacToe();
// int bestMove = ai.findBestMove(game);
// assertTrue(bestMove == 6 || bestMove == 8, "AI should draw");
// }
//
// @Test
// void testMinimax_ScoreWin() {
// TicTacToe game = makeGame("XXX ", 0);
// MinMaxTicTacToe ai = new MinMaxTicTacToe();
// int score = ai.doMinimax(game, 5, false);
// assertTrue(score > 0, "AI win scored positively");
// }
//
// @Test
// void testMinimax_ScoreLoss() {
// TicTacToe game = makeGame("OOO ", 1);
// MinMaxTicTacToe ai = new MinMaxTicTacToe();
// int score = ai.doMinimax(game, 5, true);
// assertTrue(score < 0, "AI loss is negative");
// }
//
// @Test
// void testMinimax_ScoreDraw() {
// TicTacToe game = makeGame("XOXOXOOXO", 0);
// MinMaxTicTacToe ai = new MinMaxTicTacToe();
// int score = ai.doMinimax(game, 5, true);
// assertEquals(0, score, "Draw should be zero!");
// }
//
// @Test
// void testMiniMax_MultipleMoves() {
// TicTacToe game = makeGame(" X OX O ", 0);
// MinMaxTicTacToe ai = new MinMaxTicTacToe();
// int bestMove = ai.findBestMove(game);
// assertTrue(bestMove == 0 || bestMove == 2, "Can look at multiple moves!");
// }
// }

View File

@@ -1,39 +1,39 @@
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.toop.server.Server;
import static org.junit.jupiter.api.Assertions.*;
public class ServerTest {
private Server server;
@BeforeEach
public void setUp() {
server = new Server("127.0.0.1", "8080");
}
@Test
public void testConstructorSetsValues() {
assertEquals("127.0.0.1", server.getIp());
assertEquals("8080", server.getPort());
}
@Test
public void testSetIpUpdatesValue() {
server.setIp("192.168.1.1");
assertEquals("192.168.1.1", server.getIp());
}
@Test
public void testSetPortUpdatesValue() {
server.setPort("9090");
assertEquals("9090", server.getPort());
}
@Test
public void testNotNullAfterConstruction() {
assertNotNull(server);
}
}
// import org.junit.jupiter.api.BeforeEach;
// import org.junit.jupiter.api.Test;
// import org.toop.server.Server;
//
// import static org.junit.jupiter.api.Assertions.*;
//
// public class ServerTest {
//
// private Server server;
//
// @BeforeEach
// public void setUp() {
// server = new Server("127.0.0.1", "8080");
// }
//
// @Test
// public void testConstructorSetsValues() {
// assertEquals("127.0.0.1", server.getIp());
// assertEquals("8080", server.getPort());
// }
//
// @Test
// public void testSetIpUpdatesValue() {
// server.setIp("192.168.1.1");
// assertEquals("192.168.1.1", server.getIp());
// }
//
// @Test
// public void testSetPortUpdatesValue() {
// server.setPort("9090");
// assertEquals("9090", server.getPort());
// }
//
// @Test
// public void testNotNullAfterConstruction() {
// assertNotNull(server);
// }
//
// }