Package aima.test.core.unit.environment.vacuum

Source Code of aima.test.core.unit.environment.vacuum.ModelBasedReflexVacuumAgentTest

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

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

import aima.core.environment.vacuum.ModelBasedReflexVacuumAgent;
import aima.core.environment.vacuum.VacuumEnvironment;

/**
* @author Ravi Mohan
* @author Ciaran O'Reilly
*
*/
public class ModelBasedReflexVacuumAgentTest {
  private ModelBasedReflexVacuumAgent agent;

  private StringBuilder envChanges;

  @Before
  public void setUp() {
    agent = new ModelBasedReflexVacuumAgent();
    envChanges = new StringBuilder();
  }

  @Test
  public void testCleanClean() {
    VacuumEnvironment tve = new VacuumEnvironment(
        VacuumEnvironment.LocationState.Clean,
        VacuumEnvironment.LocationState.Clean);
    tve.addAgent(agent, VacuumEnvironment.LOCATION_A);

    tve.addEnvironmentView(new EnvironmentViewActionTracker(envChanges));

    tve.stepUntilDone();

    Assert.assertEquals("Action[name==Right]Action[name==NoOp]",
        envChanges.toString());
  }

  @Test
  public void testCleanDirty() {
    VacuumEnvironment tve = new VacuumEnvironment(
        VacuumEnvironment.LocationState.Clean,
        VacuumEnvironment.LocationState.Dirty);
    tve.addAgent(agent, VacuumEnvironment.LOCATION_A);

    tve.addEnvironmentView(new EnvironmentViewActionTracker(envChanges));

    tve.stepUntilDone();

    Assert.assertEquals(
        "Action[name==Right]Action[name==Suck]Action[name==NoOp]",
        envChanges.toString());
  }

  @Test
  public void testDirtyClean() {
    VacuumEnvironment tve = new VacuumEnvironment(
        VacuumEnvironment.LocationState.Dirty,
        VacuumEnvironment.LocationState.Clean);
    tve.addAgent(agent, VacuumEnvironment.LOCATION_A);

    tve.addEnvironmentView(new EnvironmentViewActionTracker(envChanges));

    tve.stepUntilDone();

    Assert.assertEquals(
        "Action[name==Suck]Action[name==Right]Action[name==NoOp]",
        envChanges.toString());
  }

  @Test
  public void testDirtyDirty() {
    VacuumEnvironment tve = new VacuumEnvironment(
        VacuumEnvironment.LocationState.Dirty,
        VacuumEnvironment.LocationState.Dirty);
    tve.addAgent(agent, VacuumEnvironment.LOCATION_A);

    tve.addEnvironmentView(new EnvironmentViewActionTracker(envChanges));

    tve.stepUntilDone();

    Assert.assertEquals(
        "Action[name==Suck]Action[name==Right]Action[name==Suck]Action[name==NoOp]",
        envChanges.toString());
  }

  @Test
  public void testAgentActionNumber1() {
    VacuumEnvironment tve = new VacuumEnvironment(
        VacuumEnvironment.LocationState.Dirty,
        VacuumEnvironment.LocationState.Dirty);
    tve.addAgent(agent, VacuumEnvironment.LOCATION_A);

    Assert.assertEquals(VacuumEnvironment.LOCATION_A,
        tve.getAgentLocation(agent));
    Assert.assertEquals(1, tve.getAgents().size());
    tve.step(); // cleans location A
    Assert.assertEquals(VacuumEnvironment.LOCATION_A,
        tve.getAgentLocation(agent));
    Assert.assertEquals(VacuumEnvironment.LocationState.Clean,
        tve.getLocationState(VacuumEnvironment.LOCATION_A));
    tve.step(); // moves to lcation B
    Assert.assertEquals(VacuumEnvironment.LOCATION_B,
        tve.getAgentLocation(agent));
    Assert.assertEquals(VacuumEnvironment.LocationState.Dirty,
        tve.getLocationState(VacuumEnvironment.LOCATION_B));
    tve.step(); // cleans location B
    Assert.assertEquals(VacuumEnvironment.LOCATION_B,
        tve.getAgentLocation(agent));
    Assert.assertEquals(VacuumEnvironment.LocationState.Clean,
        tve.getLocationState(VacuumEnvironment.LOCATION_B));
    tve.step(); // NOOP
    Assert.assertEquals(VacuumEnvironment.LOCATION_B,
        tve.getAgentLocation(agent));
    Assert.assertEquals(19, tve.getPerformanceMeasure(agent), 0.001);
  }

  @Test
  public void testAgentActionNumber2() {
    VacuumEnvironment tve = new VacuumEnvironment(
        VacuumEnvironment.LocationState.Dirty,
        VacuumEnvironment.LocationState.Dirty);
    tve.addAgent(agent, VacuumEnvironment.LOCATION_B);

    Assert.assertEquals(VacuumEnvironment.LOCATION_B,
        tve.getAgentLocation(agent));
    Assert.assertEquals(1, tve.getAgents().size());
    tve.step(); // cleans location B
    Assert.assertEquals(VacuumEnvironment.LOCATION_B,
        tve.getAgentLocation(agent));
    Assert.assertEquals(VacuumEnvironment.LocationState.Clean,
        tve.getLocationState(VacuumEnvironment.LOCATION_B));
    tve.step(); // moves to lcation A
    Assert.assertEquals(VacuumEnvironment.LOCATION_A,
        tve.getAgentLocation(agent));
    Assert.assertEquals(VacuumEnvironment.LocationState.Dirty,
        tve.getLocationState(VacuumEnvironment.LOCATION_A));
    tve.step(); // cleans location A
    Assert.assertEquals(VacuumEnvironment.LOCATION_A,
        tve.getAgentLocation(agent));
    Assert.assertEquals(VacuumEnvironment.LocationState.Clean,
        tve.getLocationState(VacuumEnvironment.LOCATION_A));
    tve.step(); // NOOP
    Assert.assertEquals(VacuumEnvironment.LOCATION_A,
        tve.getAgentLocation(agent));
    Assert.assertEquals(VacuumEnvironment.LocationState.Clean,
        tve.getLocationState(VacuumEnvironment.LOCATION_A));
    Assert.assertEquals(VacuumEnvironment.LocationState.Clean,
        tve.getLocationState(VacuumEnvironment.LOCATION_B));
    Assert.assertEquals(19, tve.getPerformanceMeasure(agent), 0.001);
  }

  @Test
  public void testAgentActionNumber3() {
    VacuumEnvironment tve = new VacuumEnvironment(
        VacuumEnvironment.LocationState.Clean,
        VacuumEnvironment.LocationState.Clean);
    tve.addAgent(agent, VacuumEnvironment.LOCATION_A);

    Assert.assertEquals(VacuumEnvironment.LOCATION_A,
        tve.getAgentLocation(agent));
    Assert.assertEquals(1, tve.getAgents().size());
    tve.step(); // moves to location B
    Assert.assertEquals(VacuumEnvironment.LOCATION_B,
        tve.getAgentLocation(agent));
    Assert.assertEquals(VacuumEnvironment.LocationState.Clean,
        tve.getLocationState(VacuumEnvironment.LOCATION_B));
    tve.step(); // NOOP
    Assert.assertEquals(VacuumEnvironment.LOCATION_B,
        tve.getAgentLocation(agent));
    Assert.assertEquals(VacuumEnvironment.LocationState.Clean,
        tve.getLocationState(VacuumEnvironment.LOCATION_A));
    Assert.assertEquals(VacuumEnvironment.LocationState.Clean,
        tve.getLocationState(VacuumEnvironment.LOCATION_B));
    Assert.assertEquals(-1, tve.getPerformanceMeasure(agent), 0.001);
  }

  @Test
  public void testAgentActionNumber4() {
    VacuumEnvironment tve = new VacuumEnvironment(
        VacuumEnvironment.LocationState.Clean,
        VacuumEnvironment.LocationState.Clean);
    tve.addAgent(agent, VacuumEnvironment.LOCATION_B);

    Assert.assertEquals(VacuumEnvironment.LOCATION_B,
        tve.getAgentLocation(agent));
    Assert.assertEquals(1, tve.getAgents().size());
    tve.step(); // moves to location A
    Assert.assertEquals(VacuumEnvironment.LOCATION_A,
        tve.getAgentLocation(agent));
    Assert.assertEquals(VacuumEnvironment.LocationState.Clean,
        tve.getLocationState(VacuumEnvironment.LOCATION_A));
    tve.step(); // NOOP
    Assert.assertEquals(VacuumEnvironment.LOCATION_A,
        tve.getAgentLocation(agent));
    Assert.assertEquals(VacuumEnvironment.LocationState.Clean,
        tve.getLocationState(VacuumEnvironment.LOCATION_A));
    Assert.assertEquals(VacuumEnvironment.LocationState.Clean,
        tve.getLocationState(VacuumEnvironment.LOCATION_B));
    Assert.assertEquals(-1, tve.getPerformanceMeasure(agent), 0.001);
  }

  @Test
  public void testAgentActionNumber5() {
    VacuumEnvironment tve = new VacuumEnvironment(
        VacuumEnvironment.LocationState.Clean,
        VacuumEnvironment.LocationState.Dirty);
    tve.addAgent(agent, VacuumEnvironment.LOCATION_A);

    Assert.assertEquals(VacuumEnvironment.LOCATION_A,
        tve.getAgentLocation(agent));
    Assert.assertEquals(1, tve.getAgents().size());
    tve.step(); // moves to B
    Assert.assertEquals(VacuumEnvironment.LOCATION_B,
        tve.getAgentLocation(agent));
    Assert.assertEquals(VacuumEnvironment.LocationState.Dirty,
        tve.getLocationState(VacuumEnvironment.LOCATION_B));
    tve.step(); // cleans location B
    Assert.assertEquals(VacuumEnvironment.LOCATION_B,
        tve.getAgentLocation(agent));
    Assert.assertEquals(VacuumEnvironment.LocationState.Clean,
        tve.getLocationState(VacuumEnvironment.LOCATION_B));
    tve.step(); // NOOP
    Assert.assertEquals(VacuumEnvironment.LOCATION_B,
        tve.getAgentLocation(agent));
    Assert.assertEquals(VacuumEnvironment.LocationState.Clean,
        tve.getLocationState(VacuumEnvironment.LOCATION_A));
    Assert.assertEquals(VacuumEnvironment.LocationState.Clean,
        tve.getLocationState(VacuumEnvironment.LOCATION_B));
    Assert.assertEquals(9, tve.getPerformanceMeasure(agent), 0.001);
  }

  @Test
  public void testAgentActionNumber6() {
    VacuumEnvironment tve = new VacuumEnvironment(
        VacuumEnvironment.LocationState.Clean,
        VacuumEnvironment.LocationState.Dirty);
    tve.addAgent(agent, VacuumEnvironment.LOCATION_B);

    Assert.assertEquals(VacuumEnvironment.LOCATION_B,
        tve.getAgentLocation(agent));
    Assert.assertEquals(1, tve.getAgents().size());
    tve.step(); // cleans B
    Assert.assertEquals(VacuumEnvironment.LOCATION_B,
        tve.getAgentLocation(agent));
    Assert.assertEquals(VacuumEnvironment.LocationState.Clean,
        tve.getLocationState(VacuumEnvironment.LOCATION_B));
    tve.step(); // moves to A
    Assert.assertEquals(VacuumEnvironment.LOCATION_A,
        tve.getAgentLocation(agent));
    Assert.assertEquals(VacuumEnvironment.LocationState.Clean,
        tve.getLocationState(VacuumEnvironment.LOCATION_A));
    tve.step(); // NOOP
    Assert.assertEquals(VacuumEnvironment.LOCATION_A,
        tve.getAgentLocation(agent));
    Assert.assertEquals(VacuumEnvironment.LocationState.Clean,
        tve.getLocationState(VacuumEnvironment.LOCATION_A));
    Assert.assertEquals(VacuumEnvironment.LocationState.Clean,
        tve.getLocationState(VacuumEnvironment.LOCATION_B));
    Assert.assertEquals(9, tve.getPerformanceMeasure(agent), 0.001);
  }

  @Test
  public void testAgentActionNumber7() {
    VacuumEnvironment tve = new VacuumEnvironment(
        VacuumEnvironment.LocationState.Dirty,
        VacuumEnvironment.LocationState.Clean);
    tve.addAgent(agent, VacuumEnvironment.LOCATION_A);

    Assert.assertEquals(VacuumEnvironment.LOCATION_A,
        tve.getAgentLocation(agent));
    Assert.assertEquals(1, tve.getAgents().size());
    tve.step(); // cleans A
    Assert.assertEquals(VacuumEnvironment.LOCATION_A,
        tve.getAgentLocation(agent));
    Assert.assertEquals(VacuumEnvironment.LocationState.Clean,
        tve.getLocationState(VacuumEnvironment.LOCATION_A));
    tve.step(); // moves to B
    Assert.assertEquals(VacuumEnvironment.LOCATION_B,
        tve.getAgentLocation(agent));
    Assert.assertEquals(VacuumEnvironment.LocationState.Clean,
        tve.getLocationState(VacuumEnvironment.LOCATION_B));
    tve.step(); // NOOP
    Assert.assertEquals(VacuumEnvironment.LOCATION_B,
        tve.getAgentLocation(agent));
    Assert.assertEquals(VacuumEnvironment.LocationState.Clean,
        tve.getLocationState(VacuumEnvironment.LOCATION_A));
    Assert.assertEquals(VacuumEnvironment.LocationState.Clean,
        tve.getLocationState(VacuumEnvironment.LOCATION_B));
    Assert.assertEquals(9, tve.getPerformanceMeasure(agent), 0.001);
  }

  @Test
  public void testAgentActionNumber8() {
    VacuumEnvironment tve = new VacuumEnvironment(
        VacuumEnvironment.LocationState.Dirty,
        VacuumEnvironment.LocationState.Clean);
    tve.addAgent(agent, VacuumEnvironment.LOCATION_B);

    Assert.assertEquals(VacuumEnvironment.LOCATION_B,
        tve.getAgentLocation(agent));
    Assert.assertEquals(1, tve.getAgents().size());
    tve.step(); // moves to A
    Assert.assertEquals(VacuumEnvironment.LOCATION_A,
        tve.getAgentLocation(agent));
    Assert.assertEquals(VacuumEnvironment.LocationState.Dirty,
        tve.getLocationState(VacuumEnvironment.LOCATION_A));
    tve.step(); // cleans A
    Assert.assertEquals(VacuumEnvironment.LOCATION_A,
        tve.getAgentLocation(agent));
    Assert.assertEquals(VacuumEnvironment.LocationState.Clean,
        tve.getLocationState(VacuumEnvironment.LOCATION_A));
    tve.step(); // NOOP
    Assert.assertEquals(VacuumEnvironment.LOCATION_A,
        tve.getAgentLocation(agent));
    Assert.assertEquals(VacuumEnvironment.LocationState.Clean,
        tve.getLocationState(VacuumEnvironment.LOCATION_A));
    Assert.assertEquals(VacuumEnvironment.LocationState.Clean,
        tve.getLocationState(VacuumEnvironment.LOCATION_B));
    Assert.assertEquals(9, tve.getPerformanceMeasure(agent), 0.001);
  }
}
TOP

Related Classes of aima.test.core.unit.environment.vacuum.ModelBasedReflexVacuumAgentTest

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.