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

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

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

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

import aima.core.environment.eightpuzzle.EightPuzzleBoard;

/**
* @author Ravi Mohan
*
*/
public class EightPuzzleBoardMoveTest {
  EightPuzzleBoard board;

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

  // Position 1
  @Test
  public void testPosition1Movabilty() {
    Assert.assertEquals(false, board.canMoveGap(EightPuzzleBoard.UP));
    Assert.assertEquals(true, board.canMoveGap(EightPuzzleBoard.DOWN));
    Assert.assertEquals(false, board.canMoveGap(EightPuzzleBoard.LEFT));
    Assert.assertEquals(true, board.canMoveGap(EightPuzzleBoard.RIGHT));
  }

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

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

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

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

  // Position 2
  @Test
  public void testPosition2Movabilty() {
    setGapToPosition2();
    Assert.assertEquals(false, board.canMoveGap(EightPuzzleBoard.UP));
    Assert.assertEquals(true, board.canMoveGap(EightPuzzleBoard.DOWN));
    Assert.assertEquals(true, board.canMoveGap(EightPuzzleBoard.LEFT));
    Assert.assertEquals(true, board.canMoveGap(EightPuzzleBoard.RIGHT));
  }

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

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

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

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

  // Position 3
  @Test
  public void testPosition3Movabilty() {
    setGapToPosition3();
    Assert.assertEquals(false, board.canMoveGap(EightPuzzleBoard.UP));
    Assert.assertEquals(true, board.canMoveGap(EightPuzzleBoard.DOWN));
    Assert.assertEquals(true, board.canMoveGap(EightPuzzleBoard.LEFT));
    Assert.assertEquals(false, board.canMoveGap(EightPuzzleBoard.RIGHT));
  }

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

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

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

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

  // Position 4
  @Test
  public void testPosition4Movabilty() {
    setGapToPosition4();
    Assert.assertEquals(true, board.canMoveGap(EightPuzzleBoard.UP));
    Assert.assertEquals(true, board.canMoveGap(EightPuzzleBoard.DOWN));
    Assert.assertEquals(false, board.canMoveGap(EightPuzzleBoard.LEFT));
    Assert.assertEquals(true, board.canMoveGap(EightPuzzleBoard.RIGHT));
  }

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

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

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

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

  // Position 5
  @Test
  public void testPosition5Movabilty() {
    setGapToPosition5();
    Assert.assertEquals(true, board.canMoveGap(EightPuzzleBoard.UP));
    Assert.assertEquals(true, board.canMoveGap(EightPuzzleBoard.DOWN));
    Assert.assertEquals(true, board.canMoveGap(EightPuzzleBoard.LEFT));
    Assert.assertEquals(true, board.canMoveGap(EightPuzzleBoard.RIGHT));
  }

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

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

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

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

  // Position 6
  @Test
  public void testPosition6Movabilty() {
    setGapToPosition6();
    Assert.assertEquals(true, board.canMoveGap(EightPuzzleBoard.UP));
    Assert.assertEquals(true, board.canMoveGap(EightPuzzleBoard.DOWN));
    Assert.assertEquals(true, board.canMoveGap(EightPuzzleBoard.LEFT));
    Assert.assertEquals(false, board.canMoveGap(EightPuzzleBoard.RIGHT));
  }

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

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

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

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

  // Position 7
  @Test
  public void testPosition7Movabilty() {
    setGapToPosition7();
    Assert.assertEquals(true, board.canMoveGap(EightPuzzleBoard.UP));
    Assert.assertEquals(false, board.canMoveGap(EightPuzzleBoard.DOWN));
    Assert.assertEquals(false, board.canMoveGap(EightPuzzleBoard.LEFT));
    Assert.assertEquals(true, board.canMoveGap(EightPuzzleBoard.RIGHT));
  }

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

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

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

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

  // Position 8
  @Test
  public void testPosition8Movabilty() {
    setGapToPosition8();
    Assert.assertEquals(true, board.canMoveGap(EightPuzzleBoard.UP));
    Assert.assertEquals(false, board.canMoveGap(EightPuzzleBoard.DOWN));
    Assert.assertEquals(true, board.canMoveGap(EightPuzzleBoard.LEFT));
    Assert.assertEquals(true, board.canMoveGap(EightPuzzleBoard.RIGHT));
  }

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

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

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

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

  // Position 9
  @Test
  public void testPosition9Movabilty() {
    setGapToPosition9();
    Assert.assertEquals(true, board.canMoveGap(EightPuzzleBoard.UP));
    Assert.assertEquals(false, board.canMoveGap(EightPuzzleBoard.DOWN));
    Assert.assertEquals(true, board.canMoveGap(EightPuzzleBoard.LEFT));
    Assert.assertEquals(false, board.canMoveGap(EightPuzzleBoard.RIGHT));
  }

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

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

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

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

  //
  // PRIVATE METHODS
  //
  private void setGapToPosition2() {
    board.moveGapRight();
  }

  private void setGapToPosition3() {
    board.moveGapRight();
    board.moveGapRight();
  }

  private void setGapToPosition4() {
    board.moveGapDown();
  }

  private void setGapToPosition5() {
    // { 6, 5, 4, 1, 0, 8, 7, 3, 2 }
    board.moveGapDown();
    board.moveGapRight();
  }

  private void setGapToPosition6() {
    // { 6, 5, 4, 1, 8, 0, 7, 3, 2 }
    board.moveGapDown();
    board.moveGapRight();
    board.moveGapRight();
  }

  private void setGapToPosition7() {
    // { 6, 5, 4, 7, 1, 8, 0, 3, 2 }
    board.moveGapDown();
    board.moveGapDown();
  }

  private void setGapToPosition8() {
    // { 6, 5, 4, 7, 1, 8, 3, 0, 2 }
    board.moveGapDown();
    board.moveGapDown();
    board.moveGapRight();
  }

  private void setGapToPosition9() {
    // { 6, 5, 4, 7, 1, 8, 3, 2, 0 }
    board.moveGapDown();
    board.moveGapDown();
    board.moveGapRight();
    board.moveGapRight();
  }
}
TOP

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

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.