Package aima.test.core.unit.environment.eightpuzzle

Source Code of aima.test.core.unit.environment.eightpuzzle.EightPuzzleFunctionFactoryTest

package aima.test.core.unit.environment.eightpuzzle;

import java.util.ArrayList;
import java.util.List;

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

import aima.core.agent.Action;
import aima.core.environment.eightpuzzle.EightPuzzleBoard;
import aima.core.environment.eightpuzzle.EightPuzzleFunctionFactory;

/**
* @author Ravi Mohan
* @author Ciaran O'Reilly
*/
public class EightPuzzleFunctionFactoryTest {
  EightPuzzleBoard board;

  @Before
  public void setUp() {
    board = new EightPuzzleBoard(new int[] { 1, 2, 5, 3, 4, 0, 6, 7, 8 });
  }

  @Test
  public void testGenerateCorrect3Successors() {
    List<Action> actions = new ArrayList<Action>(EightPuzzleFunctionFactory
        .getActionsFunction().actions(board));
    Assert.assertEquals(3, actions.size());

    // test first successor
    EightPuzzleBoard expectedFirst = new EightPuzzleBoard(new int[] { 1, 2,
        0, 3, 4, 5, 6, 7, 8 });
    EightPuzzleBoard actualFirst = (EightPuzzleBoard) EightPuzzleFunctionFactory
        .getResultFunction().result(board, actions.get(0));
    Assert.assertEquals(expectedFirst, actualFirst);
    Assert.assertEquals(EightPuzzleBoard.UP, actions.get(0));

    // test second successor
    EightPuzzleBoard expectedSecond = new EightPuzzleBoard(new int[] { 1,
        2, 5, 3, 4, 8, 6, 7, 0 });
    EightPuzzleBoard actualSecond = (EightPuzzleBoard) EightPuzzleFunctionFactory
        .getResultFunction().result(board, actions.get(1));
    Assert.assertEquals(expectedSecond, actualSecond);
    Assert.assertEquals(EightPuzzleBoard.DOWN, actions.get(1));

    // test third successor
    EightPuzzleBoard expectedThird = new EightPuzzleBoard(new int[] { 1, 2,
        5, 3, 0, 4, 6, 7, 8 });
    EightPuzzleBoard actualThird = (EightPuzzleBoard) (EightPuzzleBoard) EightPuzzleFunctionFactory
        .getResultFunction().result(board, actions.get(2));
    Assert.assertEquals(expectedThird, actualThird);
    Assert.assertEquals(EightPuzzleBoard.LEFT, actions.get(2));
  }

  @Test
  public void testGenerateCorrectWhenGapMovedRightward() {
    board.moveGapLeft();// gives { 1, 2, 5, 3, 0, 4, 6, 7, 8 }
    Assert.assertEquals(new EightPuzzleBoard(new int[] { 1, 2, 5, 3, 0, 4,
        6, 7, 8 }), board);

    List<Action> actions = new ArrayList<Action>(EightPuzzleFunctionFactory
        .getActionsFunction().actions(board));
    Assert.assertEquals(4, actions.size());

    EightPuzzleBoard expectedFourth = new EightPuzzleBoard(new int[] { 1,
        2, 5, 3, 4, 0, 6, 7, 8 });
    EightPuzzleBoard actualFourth = (EightPuzzleBoard) (EightPuzzleBoard) EightPuzzleFunctionFactory
        .getResultFunction().result(board, actions.get(3));
    Assert.assertEquals(expectedFourth, actualFourth);
    Assert.assertEquals(EightPuzzleBoard.RIGHT, actions.get(3));
  }
}
TOP

Related Classes of aima.test.core.unit.environment.eightpuzzle.EightPuzzleFunctionFactoryTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.