Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        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);
        }