package aima.test.core.unit.probability.bayes.impl; import org.junit.Assert; import org.junit.Test; import aima.core.probability.ProbabilityModel; import aima.core.probability.bayes.impl.CPT; import aima.core.probability.domain.BooleanDomain; import aima.core.probability.util.RandVar; public class CPTTest { public static final double DELTA_THRESHOLD = ProbabilityModel.DEFAULT_ROUNDING_THRESHOLD; @Test public void test_getConditioningCase() { RandVar aRV = new RandVar("A", new BooleanDomain()); RandVar bRV = new RandVar("B", new BooleanDomain()); RandVar cRV = new RandVar("C", new BooleanDomain()); CPT cpt = new CPT(cRV, new double[] { // A = true, B = true, C = true 0.1, // A = true, B = true, C = false 0.9, // A = true, B = false, C = true 0.2, // A = true, B = false, C = false 0.8, // A = false, B = true, C = true 0.3, // A = false, B = true, C = false 0.7, // A = false, B = false, C = true 0.4, // A = false, B = false, C = false 0.6 }, aRV, bRV); Assert.assertArrayEquals(new double[] { 0.1, 0.9 }, cpt .getConditioningCase(true, true).getValues(), DELTA_THRESHOLD); Assert.assertArrayEquals(new double[] { 0.2, 0.8 }, cpt .getConditioningCase(true, false).getValues(), DELTA_THRESHOLD); Assert.assertArrayEquals(new double[] { 0.3, 0.7 }, cpt .getConditioningCase(false, true).getValues(), DELTA_THRESHOLD); Assert.assertArrayEquals(new double[] { 0.4, 0.6 }, cpt .getConditioningCase(false, false).getValues(), DELTA_THRESHOLD); } }