public void testOneStepFixedLagSmoothingOnRainManHmm()
{
FixedLagSmoothing fls = new FixedLagSmoothing(rainmanHmm, 1);
RandomVariable smoothedDayZero = fls.smooth(HmmConstants.SEE_UMBRELLA); // see
// umbrella on day one
Assert.AreEqual(0.627, smoothedDayZero
.getProbabilityOf(HmmConstants.RAINING), TOLERANCE);
RandomVariable smoothedDayOne = fls.smooth(HmmConstants.SEE_UMBRELLA); // see
// umbrella on day two
Assert.AreEqual(0.883, smoothedDayOne
.getProbabilityOf(HmmConstants.RAINING), TOLERANCE);
Assert.AreEqual(0.117, smoothedDayOne
.getProbabilityOf(HmmConstants.NOT_RAINING), TOLERANCE);
RandomVariable smoothedDayTwo = fls
.smooth(HmmConstants.SEE_NO_UMBRELLA); // see no umbrella on
// day three
Assert.AreEqual(0.799, smoothedDayTwo
.getProbabilityOf(HmmConstants.RAINING), TOLERANCE);
Assert.AreEqual(0.201, smoothedDayTwo
.getProbabilityOf(HmmConstants.NOT_RAINING), TOLERANCE);
}