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(); }
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); }
/// <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)))); }
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); }
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); }
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); }
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); }
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); }
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)))); }
/// <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)); }