package aima.test.core.unit.environment.nqueens;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import aima.core.environment.nqueens.NQueensBoard;
import aima.core.environment.nqueens.NQueensGoalTest;
import aima.core.util.datastructure.XYLocation;
/**
* @author Ravi Mohan
*
*/
public class NQueensGoalTestTest {
NQueensGoalTest goalTest;
NQueensBoard board;
@Before
public void setUp() {
goalTest = new NQueensGoalTest();
board = new NQueensBoard(8);
}
@Test
public void testEmptyBoard() {
Assert.assertFalse(goalTest.isGoalState(board));
}
@Test
public void testSingleSquareBoard() {
board = new NQueensBoard(1);
Assert.assertFalse(goalTest.isGoalState(board));
board.addQueenAt(new XYLocation(0, 0));
Assert.assertTrue(goalTest.isGoalState(board));
}
@Test
public void testInCorrectPlacement() {
Assert.assertFalse(goalTest.isGoalState(board));
// This is the configuration of Figure 3.5 (b) in AIMA 2nd Edition
board.addQueenAt(new XYLocation(0, 0));
board.addQueenAt(new XYLocation(1, 2));
board.addQueenAt(new XYLocation(2, 4));
board.addQueenAt(new XYLocation(3, 6));
board.addQueenAt(new XYLocation(4, 1));
board.addQueenAt(new XYLocation(5, 3));
board.addQueenAt(new XYLocation(6, 5));
board.addQueenAt(new XYLocation(7, 7));
Assert.assertFalse(goalTest.isGoalState(board));
}
@Test
public void testCorrectPlacement() {
Assert.assertFalse(goalTest.isGoalState(board));
// This is the configuration of Figure 5.9 (c) in AIMA 2nd Edition
board.addQueenAt(new XYLocation(0, 1));
board.addQueenAt(new XYLocation(1, 4));
board.addQueenAt(new XYLocation(2, 6));
board.addQueenAt(new XYLocation(3, 3));
board.addQueenAt(new XYLocation(4, 0));
board.addQueenAt(new XYLocation(5, 7));
board.addQueenAt(new XYLocation(6, 5));
board.addQueenAt(new XYLocation(7, 2));
Assert.assertTrue(goalTest.isGoalState(board));
}
}