Beispiel #1
0
        public void VariationCoefficientDefinition_WithOrWithoutConfiguration_ReturnsNewInstance(bool withConfiguration)
        {
            // Setup
            const string          stochastName  = "";
            StochastConfiguration configuration = null;

            if (withConfiguration)
            {
                configuration = new StochastConfiguration();
            }

            var getter = new Func <SimpleStructuresInput, IVariationCoefficientDistribution>(i => null);
            var setter = new Action <SimpleStructuresInput, IVariationCoefficientDistribution>((i, d) => {});

            // Call
            var definition = new StructuresCalculationStochastAssigner <StructuresCalculationConfiguration, SimpleStructuresInput, StructureBase> .VariationCoefficientDefinition(stochastName,
                                                                                                                                                                                  configuration,
                                                                                                                                                                                  getter,
                                                                                                                                                                                  setter);

            // Assert
            Assert.NotNull(definition);
            Assert.AreEqual(stochastName, definition.StochastName);
            Assert.AreEqual(configuration, definition.Configuration);
            Assert.AreEqual(getter, definition.Getter);
            Assert.AreEqual(setter, definition.Setter);
        }
Beispiel #2
0
        public void SetAllStochasts_Always_CallsGettersAndSetters(
            bool setStandardDeviationStochastSuccessful,
            bool setVariationCoefficientStochastSuccessful)
        {
            // Setup
            const string calculationName = "name";
            var          mocks           = new MockRepository();
            var          configuration   = mocks.Stub <StructuresCalculationConfiguration>(calculationName);

            mocks.ReplayAll();

            configuration.StructureId = "some ID";

            var    random = new Random(21);
            double allowedLevelIncreaseStorageMean = setStandardDeviationStochastSuccessful ? random.NextDouble() : -1;
            double allowedLevelIncreaseStorageStandardDeviation       = random.NextDouble();
            double criticalOvertoppingDischargeMean                   = setVariationCoefficientStochastSuccessful ? random.NextDouble() : -1;
            double criticalOvertoppingDischargeCoefficientOfVariation = random.NextDouble();

            var calculation = new StructuresCalculation <SimpleStructuresInput>();

            var standardDeviationStochastConfiguration = new StochastConfiguration
            {
                Mean = allowedLevelIncreaseStorageMean,
                StandardDeviation = allowedLevelIncreaseStorageStandardDeviation
            };
            var variationCoefficientStochastConfiguration = new StochastConfiguration
            {
                Mean = criticalOvertoppingDischargeMean,
                VariationCoefficient = criticalOvertoppingDischargeCoefficientOfVariation
            };

            var definitionA =
                new StructuresCalculationStochastAssigner <StructuresCalculationConfiguration, SimpleStructuresInput, StructureBase> .StandardDeviationDefinition("stochastA",
                                                                                                                                                                  standardDeviationStochastConfiguration,
                                                                                                                                                                  input => input.AllowedLevelIncreaseStorage,
                                                                                                                                                                  (input, distribution) =>
            {
                input.AllowedLevelIncreaseStorage = (LogNormalDistribution)distribution;
            });

            var definitionB =
                new StructuresCalculationStochastAssigner <StructuresCalculationConfiguration, SimpleStructuresInput, StructureBase> .VariationCoefficientDefinition("stochastB",
                                                                                                                                                                     variationCoefficientStochastConfiguration,
                                                                                                                                                                     input => input.CriticalOvertoppingDischarge,
                                                                                                                                                                     (input, distribution) =>
            {
                input.CriticalOvertoppingDischarge = (VariationCoefficientLogNormalDistribution)distribution;
            });

            var assigner = new SimpleStructuresCalculationStochastAssigner(
                configuration,
                calculation)
            {
                StandardDeviationStochasts = new[]
                {
                    definitionA
                },
                VariationCoefficientStochasts = new[]
                {
                    definitionB
                }
            };

            // Call
            bool valid = assigner.Assign();

            // Assert
            Assert.AreEqual(setStandardDeviationStochastSuccessful && setVariationCoefficientStochastSuccessful, valid);
            if (valid)
            {
                Assert.AreEqual(allowedLevelIncreaseStorageMean,
                                calculation.InputParameters.AllowedLevelIncreaseStorage.Mean,
                                calculation.InputParameters.AllowedLevelIncreaseStorage.Mean.GetAccuracy());
                Assert.AreEqual(allowedLevelIncreaseStorageStandardDeviation,
                                calculation.InputParameters.AllowedLevelIncreaseStorage.StandardDeviation,
                                calculation.InputParameters.AllowedLevelIncreaseStorage.StandardDeviation.GetAccuracy());
                Assert.AreEqual(criticalOvertoppingDischargeMean,
                                calculation.InputParameters.CriticalOvertoppingDischarge.Mean,
                                calculation.InputParameters.CriticalOvertoppingDischarge.Mean.GetAccuracy());
                Assert.AreEqual(criticalOvertoppingDischargeCoefficientOfVariation,
                                calculation.InputParameters.CriticalOvertoppingDischarge.CoefficientOfVariation,
                                calculation.InputParameters.CriticalOvertoppingDischarge.CoefficientOfVariation.GetAccuracy());
            }

            mocks.VerifyAll();
        }