96 lines
3.0 KiB
Java
96 lines
3.0 KiB
Java
package cs6601.p1;
|
|
|
|
import static org.junit.Assert.assertEquals;
|
|
import static org.junit.Assert.assertTrue;
|
|
|
|
import org.junit.Test;
|
|
|
|
import cs6601.p1.generator.AlphaBetaMoveGenerator;
|
|
import cs6601.p1.generator.MoveGenerator;
|
|
|
|
public class StateEvaluatorTest {
|
|
GameConfig gameConfig = new GameConfig();
|
|
|
|
@Test
|
|
public void testScoreEmptyBoard() {
|
|
GameState gameState = new GameState(5);
|
|
GameScore gameScore = new StateEvaluator(gameConfig).scoreGame(gameState);
|
|
|
|
assertEquals(0.0,gameScore.getWhiteScore(),0.5);
|
|
assertEquals(0.0,gameScore.getBlackScore(),0.5);
|
|
}
|
|
|
|
@Test
|
|
public void testScoreFirstMove() {
|
|
GameState gameState = new GameState(5);
|
|
gameState.playStone('B',3,GameBoard.BLACK_STONE);
|
|
|
|
GameScore gameScore = new StateEvaluator(gameConfig).scoreGame(gameState);
|
|
|
|
System.out.println(gameScore.getScoreReport());
|
|
|
|
assertEquals(0.0,gameScore.getWhiteScore(),0.5);
|
|
assertEquals(25.0,gameScore.getBlackScore(),0.5);
|
|
}
|
|
|
|
@Test
|
|
public void testScoreTiedAtMove2() {
|
|
GameState gameState = new GameState(5);
|
|
|
|
gameState.playStone('B',3,GameBoard.BLACK_STONE);
|
|
gameState.playStone('A',1,GameBoard.WHITE_STONE);
|
|
GameScore gameScore = new StateEvaluator(gameConfig).scoreGame(gameState);
|
|
|
|
System.out.println(gameScore.getScoreReport());
|
|
|
|
assertEquals(1.0,gameScore.getWhiteScore(),0.5);
|
|
assertEquals(1.0,gameScore.getBlackScore(),0.5);
|
|
}
|
|
|
|
@Test
|
|
public void testScoreTerritory() {
|
|
GameState gameState = new GameState(5);
|
|
|
|
gameState.playStone('A',2,GameBoard.BLACK_STONE);
|
|
gameState.playStone('B',3,GameBoard.BLACK_STONE);
|
|
gameState.playStone('C',2,GameBoard.BLACK_STONE);
|
|
gameState.playStone('B',1,GameBoard.BLACK_STONE);
|
|
gameState.playStone('E',5,GameBoard.WHITE_STONE);
|
|
|
|
System.out.println(gameState);
|
|
GameScore gameScore = new StateEvaluator(gameConfig).scoreGame(gameState);
|
|
|
|
System.out.println(gameScore.getScoreReport());
|
|
|
|
assertEquals(1.0,gameScore.getWhiteScore(),0.5);
|
|
assertEquals(6.0,gameScore.getBlackScore(),0.5);
|
|
//Black should be up by 5 if Black's territory at A1 & B2 is scored correctly.
|
|
}
|
|
|
|
@Test
|
|
public void testCaptureAggScore() {
|
|
GameState gameState = new GameState(9);
|
|
gameState.playStone('A', 2, GameBoard.WHITE_STONE);
|
|
gameState.playStone('B', 1, GameBoard.WHITE_STONE);
|
|
gameState.playStone('C', 2, GameBoard.WHITE_STONE);
|
|
gameState.playStone('B', 2, GameBoard.BLACK_STONE);
|
|
|
|
GameState moveToA1 = new GameState(gameState);
|
|
GameState capAtB3 = new GameState(gameState);
|
|
|
|
moveToA1.playStone("w","A1");
|
|
capAtB3.playStone("w", "B3");
|
|
|
|
System.out.println(moveToA1);
|
|
System.out.println(capAtB3);
|
|
|
|
StateEvaluator eval = new StateEvaluator(new GameConfig());
|
|
int scoreA1 = eval.scoreGame(moveToA1).getAggregateScore();
|
|
int scoreB3 = eval.scoreGame(capAtB3).getAggregateScore();
|
|
|
|
System.out.println("Score at A1: " + scoreA1);
|
|
System.out.println("Score at B3: " + scoreB3);
|
|
//moving as white, lower is better
|
|
assertTrue(scoreA1 > scoreB3);
|
|
}
|
|
} |