public void testRainmanHMMPredictionAndMeasurementUpdateStepsModifyBeliefCorrectly()
{
Assert.AreEqual(0.5, rainman.belief().getProbabilityOf(
HmmConstants.RAINING), 0.001);
Assert.AreEqual(0.5, rainman.belief().getProbabilityOf(
HmmConstants.NOT_RAINING), 0.001);
rainman.waitWithoutActing();
Assert.AreEqual(0.5, rainman.belief().getProbabilityOf(
HmmConstants.RAINING), 0.001);
Assert.AreEqual(0.5, rainman.belief().getProbabilityOf(
HmmConstants.NOT_RAINING), 0.001);
rainman.perceive(HmmConstants.SEE_UMBRELLA);
Assert.AreEqual(0.818, rainman.belief().getProbabilityOf(
HmmConstants.RAINING), TOLERANCE);
Assert.AreEqual(0.182, rainman.belief().getProbabilityOf(
HmmConstants.NOT_RAINING), TOLERANCE);
rainman.waitWithoutActing();
Assert.AreEqual(0.627, rainman.belief().getProbabilityOf(
HmmConstants.RAINING), TOLERANCE);
Assert.AreEqual(0.373, rainman.belief().getProbabilityOf(
HmmConstants.NOT_RAINING), TOLERANCE);
rainman.perceive(HmmConstants.SEE_UMBRELLA);
Assert.AreEqual(0.883, rainman.belief().getProbabilityOf(
HmmConstants.RAINING), TOLERANCE);
Assert.AreEqual(0.117, rainman.belief().getProbabilityOf(
HmmConstants.NOT_RAINING), TOLERANCE);
}
}