public void testRobotHMMPredictionAndMeasurementUpdateStepsModifyBeliefCorrectly()
{
Assert.AreEqual(0.5, robot.belief().getProbabilityOf(
HmmConstants.DOOR_OPEN), 0.001);
Assert.AreEqual(0.5, robot.belief().getProbabilityOf(
HmmConstants.DOOR_CLOSED), 0.001);
robot.act(HmmConstants.DO_NOTHING);
Assert.AreEqual(0.5, robot.belief().getProbabilityOf(
HmmConstants.DOOR_OPEN), 0.001);
Assert.AreEqual(0.5, robot.belief().getProbabilityOf(
HmmConstants.DOOR_CLOSED), 0.001);
robot.perceive(HmmConstants.SEE_DOOR_OPEN);
Assert.AreEqual(0.75, robot.belief().getProbabilityOf(
HmmConstants.DOOR_OPEN), TOLERANCE);
Assert.AreEqual(0.25, robot.belief().getProbabilityOf(
HmmConstants.DOOR_CLOSED), TOLERANCE);
robot.act(HmmConstants.PUSH_DOOR);
Assert.AreEqual(0.95, robot.belief().getProbabilityOf(
HmmConstants.DOOR_OPEN), 0.001);
Assert.AreEqual(0.05, robot.belief().getProbabilityOf(
HmmConstants.DOOR_CLOSED), 0.001);
robot.perceive(HmmConstants.SEE_DOOR_OPEN);
Assert.AreEqual(0.983, robot.belief().getProbabilityOf(
HmmConstants.DOOR_OPEN), TOLERANCE);
Assert.AreEqual(0.017, robot.belief().getProbabilityOf(
HmmConstants.DOOR_CLOSED), TOLERANCE);
}