public void testTwoStepFixedLagSmoothingOnRainManHmm()
{
FixedLagSmoothing fls = new FixedLagSmoothing(rainmanHmm, 2);
RandomVariable smoothedOne = fls.smooth(HmmConstants.SEE_UMBRELLA); // see
// umbrella on day one
Assert.IsNull(smoothedOne);
smoothedOne = fls.smooth(HmmConstants.SEE_UMBRELLA); // see
// umbrella on day two
Assert.AreEqual(0.653, smoothedOne
.getProbabilityOf(HmmConstants.RAINING), TOLERANCE);
Assert.AreEqual(0.346, smoothedOne
.getProbabilityOf(HmmConstants.NOT_RAINING), TOLERANCE);
RandomVariable smoothedTwo = fls.smooth(HmmConstants.SEE_UMBRELLA);// see
// umbrella on day 3
Assert.AreEqual(0.894, smoothedTwo
.getProbabilityOf(HmmConstants.RAINING), TOLERANCE);
Assert.AreEqual(0.105, smoothedTwo
.getProbabilityOf(HmmConstants.NOT_RAINING), TOLERANCE);
}