public void Constructor_WithParameters_ReturnsNewInstance()
        {
            // Setup
            var configuration = new StabilityPointStructuresCalculationConfiguration("name");
            var calculation   = new StructuresCalculation <StabilityPointStructuresInput>();

            // Call
            var assigner = new StabilityPointStructuresCalculationStochastAssigner(
                configuration, calculation);

            // Assert
            Assert.IsInstanceOf <StructuresCalculationStochastAssigner <
                                     StabilityPointStructuresCalculationConfiguration,
                                     StabilityPointStructuresInput, StabilityPointStructure> >(assigner);
        }
        public void Assign_WithoutStructureParametersDefinedForStructureDependentStochast_ReturnsFalse(
            Action <StabilityPointStructuresCalculationConfiguration> updateConfiguration)
        {
            // Setup
            var configuration = new StabilityPointStructuresCalculationConfiguration("name");

            updateConfiguration(configuration);

            var assigner = new StabilityPointStructuresCalculationStochastAssigner(
                configuration,
                new StructuresCalculation <StabilityPointStructuresInput>());

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

            // Assert
            Assert.IsFalse(valid);
        }
        public void Constructor_WithName_ExpectedValues()
        {
            // Setup
            const string name = "some name";

            // Call
            var configuration = new StabilityPointStructuresCalculationConfiguration(name);

            // Assert
            Assert.IsInstanceOf <StructuresCalculationConfiguration>(configuration);
            Assert.AreEqual(name, configuration.Name);
            Assert.IsNull(configuration.AreaFlowApertures);
            Assert.IsNull(configuration.BankWidth);
            Assert.IsNull(configuration.ConstructiveStrengthLinearLoadModel);
            Assert.IsNull(configuration.ConstructiveStrengthQuadraticLoadModel);
            Assert.IsNull(configuration.DrainCoefficient);
            Assert.IsNull(configuration.EvaluationLevel);
            Assert.IsNull(configuration.FactorStormDurationOpenStructure);
            Assert.IsNull(configuration.FailureCollisionEnergy);
            Assert.IsNull(configuration.FailureProbabilityRepairClosure);
            Assert.IsNull(configuration.FlowVelocityStructureClosable);
            Assert.IsNull(configuration.InflowModelType);
            Assert.IsNull(configuration.InsideWaterLevel);
            Assert.IsNull(configuration.InsideWaterLevelFailureConstruction);
            Assert.IsNull(configuration.LevelCrestStructure);
            Assert.IsNull(configuration.LevellingCount);
            Assert.IsNull(configuration.LoadSchematizationType);
            Assert.IsNull(configuration.ProbabilityCollisionSecondaryStructure);
            Assert.IsNull(configuration.ShipMass);
            Assert.IsNull(configuration.ShipVelocity);
            Assert.IsNull(configuration.StabilityLinearLoadModel);
            Assert.IsNull(configuration.StabilityQuadraticLoadModel);
            Assert.IsNull(configuration.ThresholdHeightOpenWeir);
            Assert.IsNull(configuration.VerticalDistance);
            Assert.IsNull(configuration.VolumicWeightWater);
        }
        public void Assign_WithSpreadForFlowVelocityStructureClosable_LogsErrorReturnFalse(bool withStandardDeviation)
        {
            // Setup
            var configuration = new StabilityPointStructuresCalculationConfiguration("name")
            {
                StructureId = "some structure"
            };

            configuration.FlowVelocityStructureClosable      = new StochastConfiguration();
            configuration.FlowVelocityStructureClosable.Mean = 8.1;
            if (withStandardDeviation)
            {
                configuration.FlowVelocityStructureClosable.StandardDeviation = 0.8;
            }
            else
            {
                configuration.FlowVelocityStructureClosable.VariationCoefficient = 0.8;
            }

            var calculation = new StructuresCalculation <StabilityPointStructuresInput>();

            var assigner = new StabilityPointStructuresCalculationStochastAssigner(
                configuration,
                calculation);

            var valid = true;

            // Call
            Action test = () => valid = assigner.Assign();

            // Assert
            const string expectedMessage = "Er kan geen spreiding voor stochast 'kritiekestroomsnelheid' opgegeven worden. Berekening 'name' is overgeslagen.";

            TestHelper.AssertLogMessageWithLevelIsGenerated(test, Tuple.Create(expectedMessage, LogLevelConstant.Error));
            Assert.IsFalse(valid);
        }
        public void Assign_WithAllStochastsSet_SetExpectedValuesOnInput()
        {
            // Setup
            var configuration = new StabilityPointStructuresCalculationConfiguration("name")
            {
                AllowedLevelIncreaseStorage = new StochastConfiguration
                {
                    Mean = 1,
                    StandardDeviation = 0.1
                },
                AreaFlowApertures = new StochastConfiguration
                {
                    Mean = 2,
                    StandardDeviation = 0.2
                },
                BankWidth = new StochastConfiguration
                {
                    Mean = 3,
                    StandardDeviation = 0.3
                },
                FlowWidthAtBottomProtection = new StochastConfiguration
                {
                    Mean = 4,
                    StandardDeviation = 0.4
                },
                InsideWaterLevel = new StochastConfiguration
                {
                    Mean = 5,
                    StandardDeviation = 0.5
                },
                InsideWaterLevelFailureConstruction = new StochastConfiguration
                {
                    Mean = 6,
                    StandardDeviation = 0.6
                },
                LevelCrestStructure = new StochastConfiguration
                {
                    Mean = 7,
                    StandardDeviation = 0.7
                },
                WidthFlowApertures = new StochastConfiguration
                {
                    Mean = 8,
                    StandardDeviation = 0.8
                },
                ThresholdHeightOpenWeir = new StochastConfiguration
                {
                    Mean = 9,
                    StandardDeviation = 0.9
                },
                DrainCoefficient = new StochastConfiguration
                {
                    Mean = 10,
                    StandardDeviation = 10.10
                },
                FlowVelocityStructureClosable = new StochastConfiguration
                {
                    Mean = 1
                },
                CriticalOvertoppingDischarge = new StochastConfiguration
                {
                    Mean = 2,
                    VariationCoefficient = 0.2
                },
                ConstructiveStrengthLinearLoadModel = new StochastConfiguration
                {
                    Mean = 3,
                    VariationCoefficient = 0.3
                },
                ConstructiveStrengthQuadraticLoadModel = new StochastConfiguration
                {
                    Mean = 4,
                    VariationCoefficient = 0.4
                },
                FailureCollisionEnergy = new StochastConfiguration
                {
                    Mean = 5,
                    VariationCoefficient = 0.5
                },
                ShipMass = new StochastConfiguration
                {
                    Mean = 6,
                    VariationCoefficient = 0.6
                },
                ShipVelocity = new StochastConfiguration
                {
                    Mean = 7,
                    VariationCoefficient = 0.7
                },
                StabilityLinearLoadModel = new StochastConfiguration
                {
                    Mean = 8,
                    VariationCoefficient = 0.8
                },
                StabilityQuadraticLoadModel = new StochastConfiguration
                {
                    Mean = 9,
                    VariationCoefficient = 0.9
                },
                StorageStructureArea = new StochastConfiguration
                {
                    Mean = 10,
                    VariationCoefficient = 0.10
                },
                StormDuration = new StochastConfiguration
                {
                    Mean = 11
                },
                StructureId = "some structure"
            };

            var calculation = new StructuresCalculation <StabilityPointStructuresInput>();

            var assigner = new StabilityPointStructuresCalculationStochastAssigner(
                configuration,
                calculation);

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

            // Assert
            Assert.IsTrue(valid);
        }