示例#1
0
        public void GetUniqueDisplayNameForWaterLevelCalculations_ValidParameters_ReturnsExpectedDisplayNameForMaximumAllowableFloodingProbability(
            double maximumAllowableFloodingProbability, double signalFloodingProbability, double userDefinedTargetProbability1, double userDefinedTargetProbability2, string expectedName)
        {
            // Setup
            var hydraulicBoundaryLocationCalculations = new ObservableList <HydraulicBoundaryLocationCalculation>();

            var mockRepository = new MockRepository();
            IAssessmentSection assessmentSection = AssessmentSectionTestHelper.CreateAssessmentSectionStub(mockRepository);

            assessmentSection.Stub(a => a.FailureMechanismContribution).Return(new FailureMechanismContribution(maximumAllowableFloodingProbability, signalFloodingProbability));
            assessmentSection.Stub(a => a.WaterLevelCalculationsForMaximumAllowableFloodingProbability).Return(hydraulicBoundaryLocationCalculations);
            assessmentSection.Stub(a => a.WaterLevelCalculationsForSignalFloodingProbability).Return(new ObservableList <HydraulicBoundaryLocationCalculation>());
            assessmentSection.Stub(a => a.WaterLevelCalculationsForUserDefinedTargetProbabilities).Return(
                new ObservableList <HydraulicBoundaryLocationCalculationsForTargetProbability>
            {
                new HydraulicBoundaryLocationCalculationsForTargetProbability(userDefinedTargetProbability1),
                new HydraulicBoundaryLocationCalculationsForTargetProbability(userDefinedTargetProbability2)
            });

            mockRepository.ReplayAll();

            // Call
            string name = TargetProbabilityCalculationsDisplayNameHelper.GetUniqueDisplayNameForWaterLevelCalculations(hydraulicBoundaryLocationCalculations,
                                                                                                                       assessmentSection);

            // Assert
            Assert.AreEqual(expectedName, name);

            mockRepository.VerifyAll();
        }
示例#2
0
        public void GetUniqueDisplayNameForCalculations_ValidParameters_ReturnsExpectedDisplayName()
        {
            // Setup
            var calculation     = new object();
            var allCalculations = new ObservableList <object>();
            int randomNumberOfCalculationElements = new Random().Next() % 10;

            for (var i = 0; i < randomNumberOfCalculationElements; i++)
            {
                allCalculations.Add(new object());
            }

            allCalculations.Add(calculation);

            // Call
            string name = TargetProbabilityCalculationsDisplayNameHelper.GetUniqueDisplayNameForCalculations(calculation, allCalculations, o => 0.01);

            // Assert
            var expectedName = "1/100";

            if (randomNumberOfCalculationElements != 0)
            {
                expectedName += $" ({randomNumberOfCalculationElements})";
            }

            Assert.AreEqual(expectedName, name);
        }
示例#3
0
        /// <summary>
        /// Creates a collection of <see cref="CalculatableActivity"/> for all norm target probability based water level calculations
        /// within the given <see cref="IAssessmentSection"/>.
        /// </summary>
        /// <param name="assessmentSection">The assessment section to create the activities for.</param>
        /// <returns>A collection of <see cref="CalculatableActivity"/>.</returns>
        /// <exception cref="ArgumentNullException">Thrown when <paramref name="assessmentSection"/> is <c>null</c>.</exception>
        public static IEnumerable <CalculatableActivity> CreateWaterLevelCalculationActivitiesForNormTargetProbabilities(IAssessmentSection assessmentSection)
        {
            if (assessmentSection == null)
            {
                throw new ArgumentNullException(nameof(assessmentSection));
            }

            var activities = new List <CalculatableActivity>();

            double maximumAllowableFloodingProbability = assessmentSection.FailureMechanismContribution.MaximumAllowableFloodingProbability;

            activities.AddRange(HydraulicBoundaryLocationCalculationActivityFactory.CreateDesignWaterLevelCalculationActivities(
                                    assessmentSection.WaterLevelCalculationsForMaximumAllowableFloodingProbability,
                                    assessmentSection,
                                    maximumAllowableFloodingProbability,
                                    TargetProbabilityCalculationsDisplayNameHelper.GetUniqueDisplayNameForWaterLevelCalculations(assessmentSection.WaterLevelCalculationsForMaximumAllowableFloodingProbability,
                                                                                                                                 assessmentSection)));

            double signalFloodingProbability = assessmentSection.FailureMechanismContribution.SignalFloodingProbability;

            activities.AddRange(HydraulicBoundaryLocationCalculationActivityFactory.CreateDesignWaterLevelCalculationActivities(
                                    assessmentSection.WaterLevelCalculationsForSignalFloodingProbability,
                                    assessmentSection,
                                    signalFloodingProbability,
                                    TargetProbabilityCalculationsDisplayNameHelper.GetUniqueDisplayNameForWaterLevelCalculations(assessmentSection.WaterLevelCalculationsForSignalFloodingProbability,
                                                                                                                                 assessmentSection)));

            return(activities);
        }
 private IReadOnlyDictionary <IObservableEnumerable <HydraulicBoundaryLocationCalculation>, string> GetWaveHeightCalculations()
 {
     return(assessmentSection.WaveHeightCalculationsForUserDefinedTargetProbabilities
            .OrderByDescending(tp => tp.TargetProbability)
            .ToDictionary(x => (IObservableEnumerable <HydraulicBoundaryLocationCalculation>)x.HydraulicBoundaryLocationCalculations,
                          x => string.Format(Resources.MetaData_WaveHeight_TargetProbability_0,
                                             TargetProbabilityCalculationsDisplayNameHelper.GetUniqueDisplayNameForCalculations(x,
                                                                                                                                assessmentSection.WaveHeightCalculationsForUserDefinedTargetProbabilities,
                                                                                                                                y => y.TargetProbability))));
 }
示例#5
0
        public void GetUniqueDisplayNameForWaterLevelCalculations_CalculationsNotInWaterLevelCalculationsOfAssessmentSection_ThrowsInvalidOperationException()
        {
            // Call
            void Call() => TargetProbabilityCalculationsDisplayNameHelper.GetUniqueDisplayNameForWaterLevelCalculations(
                Enumerable.Empty <HydraulicBoundaryLocationCalculation>(), new AssessmentSectionStub());

            // Assert
            var exception = Assert.Throws <InvalidOperationException>(Call);

            Assert.AreEqual("The provided calculations object is not part of the water level calculations within the assessment section.", exception.Message);
        }
示例#6
0
        public void GetUniqueDisplayNameForWaterLevelCalculations_AssessmentSectionNull_ThrowsArgumentNullException()
        {
            // Call
            void Call() => TargetProbabilityCalculationsDisplayNameHelper.GetUniqueDisplayNameForWaterLevelCalculations(
                Enumerable.Empty <HydraulicBoundaryLocationCalculation>(), null);

            // Assert
            var exception = Assert.Throws <ArgumentNullException>(Call);

            Assert.AreEqual("assessmentSection", exception.ParamName);
        }
示例#7
0
        public void GetUniqueDisplayNameForWaterLevelCalculations_CalculationsNull_ThrowsArgumentNullException()
        {
            // Call
            void Call() => TargetProbabilityCalculationsDisplayNameHelper.GetUniqueDisplayNameForWaterLevelCalculations(
                null, new AssessmentSectionStub());

            // Assert
            var exception = Assert.Throws <ArgumentNullException>(Call);

            Assert.AreEqual("calculations", exception.ParamName);
        }
示例#8
0
        public void GetUniqueDisplayNameForCalculations_CalculationsNotInEnumerationOfAllCalculations_ThrowsInvalidOperationException()
        {
            // Call
            void Call() => TargetProbabilityCalculationsDisplayNameHelper.GetUniqueDisplayNameForCalculations(
                new object(), Enumerable.Empty <object>(), o => double.NaN);

            // Assert
            var exception = Assert.Throws <InvalidOperationException>(Call);

            Assert.AreEqual("The provided calculations object is not part of the enumeration that contains all calculations.", exception.Message);
        }
示例#9
0
        public void GetUniqueDisplayNameForCalculations_GetTargetProbabilityFuncNull_ThrowsArgumentNullException()
        {
            // Call
            void Call() => TargetProbabilityCalculationsDisplayNameHelper.GetUniqueDisplayNameForCalculations(
                new object(), Enumerable.Empty <object>(), null);

            // Assert
            var exception = Assert.Throws <ArgumentNullException>(Call);

            Assert.AreEqual("getTargetProbabilityFunc", exception.ParamName);
        }
示例#10
0
        public void GetUniqueDisplayNameForCalculations_AllCalculationsNull_ThrowsArgumentNullException()
        {
            // Call
            void Call() => TargetProbabilityCalculationsDisplayNameHelper.GetUniqueDisplayNameForCalculations(
                new object(), null, calculation => double.NaN);

            // Assert
            var exception = Assert.Throws <ArgumentNullException>(Call);

            Assert.AreEqual("allCalculations", exception.ParamName);
        }
        private IReadOnlyDictionary <IObservableEnumerable <HydraulicBoundaryLocationCalculation>, string> GetWaterLevelCalculations()
        {
            Dictionary <IObservableEnumerable <HydraulicBoundaryLocationCalculation>, double> waterLevelCalculations =
                assessmentSection.WaterLevelCalculationsForUserDefinedTargetProbabilities.ToDictionary(
                    tp => (IObservableEnumerable <HydraulicBoundaryLocationCalculation>)tp.HydraulicBoundaryLocationCalculations,
                    tp => tp.TargetProbability);

            waterLevelCalculations.Add(assessmentSection.WaterLevelCalculationsForMaximumAllowableFloodingProbability, assessmentSection.FailureMechanismContribution.MaximumAllowableFloodingProbability);
            waterLevelCalculations.Add(assessmentSection.WaterLevelCalculationsForSignalFloodingProbability, assessmentSection.FailureMechanismContribution.SignalFloodingProbability);

            return(waterLevelCalculations.OrderByDescending(pair => pair.Value)
                   .ToDictionary(x => x.Key, x => string.Format(Resources.MetaData_WaterLevel_TargetProbability_0,
                                                                TargetProbabilityCalculationsDisplayNameHelper.GetUniqueDisplayNameForWaterLevelCalculations(x.Key,
                                                                                                                                                             assessmentSection))));
        }
示例#12
0
        /// <summary>
        /// Creates a collection of <see cref="CalculatableActivity"/> for all user defined target probability based water level calculations
        /// within the given <see cref="IAssessmentSection"/>.
        /// </summary>
        /// <param name="assessmentSection">The assessment section to create the activities for.</param>
        /// <returns>A collection of <see cref="CalculatableActivity"/>.</returns>
        /// <exception cref="ArgumentNullException">Thrown when <paramref name="assessmentSection"/> is <c>null</c>.</exception>
        public static IEnumerable <CalculatableActivity> CreateWaterLevelCalculationActivitiesForUserDefinedTargetProbabilities(IAssessmentSection assessmentSection)
        {
            if (assessmentSection == null)
            {
                throw new ArgumentNullException(nameof(assessmentSection));
            }

            return(assessmentSection.WaterLevelCalculationsForUserDefinedTargetProbabilities
                   .SelectMany(wlc => HydraulicBoundaryLocationCalculationActivityFactory.CreateDesignWaterLevelCalculationActivities(
                                   wlc.HydraulicBoundaryLocationCalculations,
                                   assessmentSection,
                                   wlc.TargetProbability,
                                   TargetProbabilityCalculationsDisplayNameHelper.GetUniqueDisplayNameForWaterLevelCalculations(wlc.HydraulicBoundaryLocationCalculations,
                                                                                                                                assessmentSection)))
                   .ToList());
        }
 /// <inheritdoc />
 /// <exception cref="InvalidOperationException"> Thrown when the <see cref="HydraulicBoundaryLocationCalculations"/> is not in the assessment section.</exception>
 public override string ToString()
 {
     return(TargetProbabilityCalculationsDisplayNameHelper.GetUniqueDisplayNameForWaterLevelCalculations(HydraulicBoundaryLocationCalculations,
                                                                                                         assessmentSection));
 }