public void ProbabilityDistribution_ValidArguments_ReturnExpectedResult() { // Setup var randomVariable = MockRepository.GenerateStub <IDiscreteBooleanRandomVariable>(); randomVariable.Stub(rv => rv.ProbabilityDistribution) .Return(new BooleanProbabilityDistribution(0.25)); var trueCase = MockRepository.GenerateStub <IDiscreteIntegerRandomVariable>(); trueCase.Stub(rv => rv.ProbabilityDistribution) .Return(new DiscreteValueProbabilityDistribution(new[] { new ValueProbabilityPair(1, 0.25), new ValueProbabilityPair(2, 0.75), })); var falseCase = MockRepository.GenerateStub <IDiscreteIntegerRandomVariable>(); falseCase.Stub(rv => rv.ProbabilityDistribution) .Return(new DiscreteValueProbabilityDistribution(new[] { new ValueProbabilityPair(2, 0.5), new ValueProbabilityPair(4, 0.5), })); var conditional = new ConditionalCombination(randomVariable, trueCase, falseCase); // Call DiscreteValueProbabilityDistribution distribution = conditional.ProbabilityDistribution; // Assert Assert.AreEqual(3, distribution.Specification.Count); var probabilitiesAndValues = new Tuple <double, int>[] { Tuple.Create(0.25 * 0.25, 1), Tuple.Create((0.25 * 0.75) + (0.75 * 0.5), 2), Tuple.Create(0.75 * 0.5, 4), }; for (int i = 0; i < probabilitiesAndValues.Length; i++) { Tuple <double, int> expectedProbabilityAndValue = probabilitiesAndValues[i]; ValueProbabilityPair actualProbabilityAndValue = distribution.Specification[i]; Assert.AreEqual(expectedProbabilityAndValue.Item1, actualProbabilityAndValue.Probability); Assert.AreEqual(expectedProbabilityAndValue.Item2, actualProbabilityAndValue.Value); } }
public void Constructor_ValidArguments_ExpectedValues() { // Setup var randomVariable = MockRepository.GenerateStub <IDiscreteBooleanRandomVariable>(); randomVariable.Stub(rv => rv.ProbabilityDistribution).Return(new BooleanProbabilityDistribution(1.0)); var trueCase = MockRepository.GenerateStub <IDiscreteIntegerRandomVariable>(); trueCase.Stub(rv => rv.ProbabilityDistribution).Return(new DiscreteValueProbabilityDistribution(new[] { new ValueProbabilityPair(1, 1.0) })); var falseCase = MockRepository.GenerateStub <IDiscreteIntegerRandomVariable>(); falseCase.Stub(rv => rv.ProbabilityDistribution).Return(new DiscreteValueProbabilityDistribution(new[] { new ValueProbabilityPair(2, 1.0) })); // Call var conditional = new ConditionalCombination(randomVariable, trueCase, falseCase); // Assert Assert.IsInstanceOf <IDiscreteIntegerRandomVariable>(conditional); }