public void GetSubMechanismModelId_Always_ReturnsExpectedValues(int subMechanismModelId, int?expectedSubMechanismModelId)
        {
            // Call
            var input = new HydraulicLoadsCalculationInputImplementation(1, 1.0 / 1000, double.NaN,
                                                                         new List <HydraRingRoughnessProfilePoint>(),
                                                                         new List <HydraRingForelandPoint>(),
                                                                         new HydraRingBreakWater(0, 1.1),
                                                                         2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
                                                                         12, 13, 14, 15, 16, 17, 18, 19);

            // Assert
            Assert.AreEqual(expectedSubMechanismModelId, input.GetSubMechanismModelId(subMechanismModelId));
        }
        public void Constructor_Always_ExpectedValues()
        {
            // Setup
            const double targetProbability           = 1.0 / 10000;
            const int    hydraulicBoundaryLocationId = 1000;

            const double sectionNormal = 19.9;
            const double modelFactorCriticalOvertopping = 1.1;
            const double factorFbMean = 2.2;
            const double factorFbStandardDeviation = 3.3;
            const double factorFbLowerBoundary     = 4.4;
            const double factorFbUpperBoundary     = 5.5;
            const double factorFnMean = 6.6;
            const double factorFnStandardDeviation                   = 7.7;
            const double factorFnLowerBoundary                       = 8.8;
            const double factorFnUpperBoundary                       = 9.9;
            const double modelFactorOvertopping                      = 10.0;
            const double modelFactorFrunupMean                       = 11.1;
            const double modelFactorFrunupStandardDeviation          = 12.2;
            const double modelFactorFrunupLowerBoundary              = 13.3;
            const double modelFactorFrunupUpperBoundary              = 14.4;
            const double exponentModelFactorShallowMean              = 15.5;
            const double exponentModelFactorShallowStandardDeviation = 16.6;
            const double exponentModelFactorShallowLowerBoundary     = 17.7;
            const double exponentModelFactorShallowUpperBoundary     = 18.8;

            var expectedRingProfilePoints = new List <HydraRingRoughnessProfilePoint>
            {
                new HydraRingRoughnessProfilePoint(1.1, 2.2, 3.3)
            };
            var expectedRingForelandPoints = new List <HydraRingForelandPoint>
            {
                new HydraRingForelandPoint(2.2, 3.3)
            };
            var expectedRingBreakWater = new HydraRingBreakWater(2, 3.3);

            // Call
            var input = new HydraulicLoadsCalculationInputImplementation(hydraulicBoundaryLocationId, targetProbability, sectionNormal,
                                                                         expectedRingProfilePoints, expectedRingForelandPoints, expectedRingBreakWater,
                                                                         modelFactorCriticalOvertopping,
                                                                         factorFbMean, factorFbStandardDeviation,
                                                                         factorFbLowerBoundary, factorFbUpperBoundary,
                                                                         factorFnMean, factorFnStandardDeviation,
                                                                         factorFnLowerBoundary, factorFnUpperBoundary,
                                                                         modelFactorOvertopping,
                                                                         modelFactorFrunupMean, modelFactorFrunupStandardDeviation,
                                                                         modelFactorFrunupLowerBoundary, modelFactorFrunupUpperBoundary,
                                                                         exponentModelFactorShallowMean, exponentModelFactorShallowStandardDeviation,
                                                                         exponentModelFactorShallowLowerBoundary, exponentModelFactorShallowUpperBoundary);

            // Assert
            double expectedBeta = StatisticsConverter.ProbabilityToReliability(targetProbability);

            Assert.IsInstanceOf <ReliabilityIndexCalculationInput>(input);
            Assert.AreEqual(9, input.CalculationTypeId);
            Assert.AreEqual(1017, input.FaultTreeModelId);
            Assert.AreEqual(hydraulicBoundaryLocationId, input.HydraulicBoundaryLocationId);
            Assert.IsNotNull(input.Section);
            HydraRingDataEqualityHelper.AreEqual(GetDefaultHydraulicLoadsVariables().ToArray(), input.Variables.ToArray());
            CollectionAssert.AreEqual(expectedRingProfilePoints, input.ProfilePoints);
            CollectionAssert.AreEqual(expectedRingForelandPoints, input.ForelandPoints);
            Assert.AreEqual(expectedRingBreakWater, input.BreakWater);
            Assert.AreEqual(expectedBeta, input.Beta);

            HydraRingSection hydraRingSection = input.Section;

            Assert.AreEqual(1, hydraRingSection.SectionId);
            Assert.IsNaN(hydraRingSection.SectionLength);
            Assert.AreEqual(sectionNormal, hydraRingSection.CrossSectionNormal);
        }