public void testForwardMessagingWorksForFiltering()
{
RandomVariable afterOneStep = robotHmm.forward(robotHmm.prior(),
HmmConstants.DO_NOTHING, HmmConstants.SEE_DOOR_OPEN);
Assert.AreEqual(0.75, afterOneStep
.getProbabilityOf(HmmConstants.DOOR_OPEN), TOLERANCE);
Assert.AreEqual(0.25, afterOneStep
.getProbabilityOf(HmmConstants.DOOR_CLOSED), TOLERANCE);
RandomVariable afterTwoSteps = robotHmm.forward(afterOneStep,
HmmConstants.PUSH_DOOR, HmmConstants.SEE_DOOR_OPEN);
Assert.AreEqual(0.983, afterTwoSteps
.getProbabilityOf(HmmConstants.DOOR_OPEN), TOLERANCE);
Assert.AreEqual(0.017, afterTwoSteps
.getProbabilityOf(HmmConstants.DOOR_CLOSED), TOLERANCE);
}