diff --git a/src/OSPSuite.Core/Domain/Formulas/DiscreteDistributionFormula.cs b/src/OSPSuite.Core/Domain/Formulas/DiscreteDistributionFormula.cs index 91003bc34..08e6d6cb4 100644 --- a/src/OSPSuite.Core/Domain/Formulas/DiscreteDistributionFormula.cs +++ b/src/OSPSuite.Core/Domain/Formulas/DiscreteDistributionFormula.cs @@ -21,7 +21,7 @@ public override double CalculateValueFromPercentile(double percentile, IUsingFor { return percentile >= 0.5 ? Mean(refObject) : 0; } - + public override double ProbabilityDensityFor(double value, IUsingFormula refObject) { return value == Mean(refObject) ? 1 : 0; diff --git a/tests/OSPSuite.Core.Tests/Domain/DistributionFormulaFactorySpecs.cs b/tests/OSPSuite.Core.Tests/Domain/DistributionFormulaFactorySpecs.cs index fe878a387..1af269ae9 100644 --- a/tests/OSPSuite.Core.Tests/Domain/DistributionFormulaFactorySpecs.cs +++ b/tests/OSPSuite.Core.Tests/Domain/DistributionFormulaFactorySpecs.cs @@ -93,6 +93,33 @@ public void distributed_parameter_should_return_correct_value() } } + public class When_updating_the_value_of_a_discrete_distribution_mean_parameter : concern_for_DistributionFormulaFactory + { + protected DiscreteDistributionFormula _discreteDistribution; + protected IParameter _meanParam; + + protected override void Context() + { + base.Context(); + _meanParam = new Parameter().WithName(Constants.Distribution.MEAN).WithDimension(_dim).WithValue(0.43); + _distributedParam.Add(_meanParam); + _discreteDistribution = sut.CreateDiscreteDistributionFormulaFor(_distributedParam, _meanParam); + _distributedParam.Formula = _discreteDistribution; + } + + protected override void Because() + { + _meanParam.Value = 0.43 * 0.92; + _distributedParam.IsFixedValue = false; + } + + [Observation] + public void distributed_parameter_should_return_correct_value() + { + _distributedParam.Value.ShouldBeEqualTo(0.43 * 0.92); + } + } + public class When_creating_lognormal_distribution : concern_for_DistributionFormulaFactory { protected LogNormalDistributionFormula _logNormalDistribution;