package aima.test.core.unit.search.uninformed; import java.util.List; import org.junit.Assert; import org.junit.Test; import aima.core.agent.Action; import aima.core.environment.nqueens.NQueensBoard; import aima.core.environment.nqueens.NQueensFunctionFactory; import aima.core.environment.nqueens.NQueensGoalTest; import aima.core.search.framework.SearchAgent; import aima.core.search.framework.SearchForActions; import aima.core.search.framework.problem.Problem; import aima.core.search.uninformed.IterativeDeepeningSearch; public class IterativeDeepeningSearchTest { @Test public void testIterativeDeepeningSearch() { try { Problem problem = new Problem(new NQueensBoard(8), NQueensFunctionFactory.getIActionsFunction(), NQueensFunctionFactory.getResultFunction(), new NQueensGoalTest()); SearchForActions search = new IterativeDeepeningSearch(); SearchAgent agent = new SearchAgent(problem, search); List<Action> actions = agent.getActions(); assertCorrectPlacement(actions); Assert.assertEquals("3656", agent.getInstrumentation().getProperty("nodesExpanded")); } catch (Exception e) { e.printStackTrace(); Assert.fail("Exception should not occur"); } } private void assertCorrectPlacement(List<Action> actions) { Assert.assertEquals(8, actions.size()); Assert.assertEquals("Action[name==placeQueenAt, location== ( 0 , 0 ) ]", actions.get(0).toString()); Assert.assertEquals("Action[name==placeQueenAt, location== ( 1 , 4 ) ]", actions.get(1).toString()); Assert.assertEquals("Action[name==placeQueenAt, location== ( 2 , 7 ) ]", actions.get(2).toString()); Assert.assertEquals("Action[name==placeQueenAt, location== ( 3 , 5 ) ]", actions.get(3).toString()); Assert.assertEquals("Action[name==placeQueenAt, location== ( 4 , 2 ) ]", actions.get(4).toString()); Assert.assertEquals("Action[name==placeQueenAt, location== ( 5 , 6 ) ]", actions.get(5).toString()); Assert.assertEquals("Action[name==placeQueenAt, location== ( 6 , 1 ) ]", actions.get(6).toString()); Assert.assertEquals("Action[name==placeQueenAt, location== ( 7 , 3 ) ]", actions.get(7).toString()); } }