Index: Riskeer/Integration/src/Riskeer.Integration.Plugin/RiskeerPlugin.cs =================================================================== diff -u -rc2ab84b43f2d1af44b64fc98e945ddfcd1f839e3 -rc96fb56602a4b48d007208923213ab5efa09699f --- Riskeer/Integration/src/Riskeer.Integration.Plugin/RiskeerPlugin.cs (.../RiskeerPlugin.cs) (revision c2ab84b43f2d1af44b64fc98e945ddfcd1f839e3) +++ Riskeer/Integration/src/Riskeer.Integration.Plugin/RiskeerPlugin.cs (.../RiskeerPlugin.cs) (revision c96fb56602a4b48d007208923213ab5efa09699f) @@ -1018,7 +1018,8 @@ yield return new TreeNodeInfo { - Text = context => noProbabilityValueDoubleConverter.ConvertToString(context.GetNormFunc()), + Text = context => CalculationsDisplayNameHelper.GetUniqueDisplayNameForWaterLevelCalculations(context.AssessmentSection, + context.WrappedData), Image = context => RiskeerCommonFormsResources.GenericInputOutputIcon, ContextMenuStrip = WaterLevelCalculationsForNormTargetProbabilityContextMenuStrip }; @@ -1225,12 +1226,12 @@ } private ExportInfo CreateHydraulicBoundaryLocationCalculationsForTargetProbabilityExportInfo( - HydraulicBoundaryLocationCalculationsType calculationsType, string displayName) + HydraulicBoundaryLocationCalculationsType calculationsType, string displayName) where T : HydraulicBoundaryLocationCalculationsForUserDefinedTargetProbabilityContext { return new ExportInfo { - Name = context => $"{displayName} ({ ProbabilityFormattingHelper.Format(context.WrappedData.TargetProbability)})", + Name = context => $"{displayName} ({ProbabilityFormattingHelper.Format(context.WrappedData.TargetProbability)})", Extension = RiskeerCommonIOResources.Shape_file_filter_Extension, CreateFileExporter = (context, filePath) => new HydraulicBoundaryLocationCalculationsForTargetProbabilityExporter( context.WrappedData.HydraulicBoundaryLocationCalculations, filePath, calculationsType), @@ -1256,7 +1257,6 @@ Resources.Zip_file_filter_Description)) }; } - private static ViewInfo, IObservableEnumerable, TView> CreateFailureMechanismResultViewInfo< TFailureMechanism, TResult, TView, TResultRow, TAssemblyResultControl>( Index: Riskeer/Integration/test/Riskeer.Integration.Plugin.Test/TreeNodeInfos/WaterLevelCalculationsForNormTargetProbabilityContextTreeNodeInfoTest.cs =================================================================== diff -u -rde3cc165feba00aca4269bcad681a8525f514786 -rc96fb56602a4b48d007208923213ab5efa09699f --- Riskeer/Integration/test/Riskeer.Integration.Plugin.Test/TreeNodeInfos/WaterLevelCalculationsForNormTargetProbabilityContextTreeNodeInfoTest.cs (.../WaterLevelCalculationsForNormTargetProbabilityContextTreeNodeInfoTest.cs) (revision de3cc165feba00aca4269bcad681a8525f514786) +++ Riskeer/Integration/test/Riskeer.Integration.Plugin.Test/TreeNodeInfos/WaterLevelCalculationsForNormTargetProbabilityContextTreeNodeInfoTest.cs (.../WaterLevelCalculationsForNormTargetProbabilityContextTreeNodeInfoTest.cs) (revision c96fb56602a4b48d007208923213ab5efa09699f) @@ -39,6 +39,7 @@ using NUnit.Framework; using Rhino.Mocks; using Riskeer.Common.Data.AssessmentSection; +using Riskeer.Common.Data.Contribution; using Riskeer.Common.Data.Hydraulics; using Riskeer.Common.Data.TestUtil; using Riskeer.Common.Data.TestUtil.IllustrationPoints; @@ -96,15 +97,23 @@ } [Test] - public void Text_WithContext_ReturnsFormattedTargetProbability() + [TestCase(0.1, 0.01, "1/10")] + [TestCase(0.1, 0.1, "1/10 (1)")] + public void Text_WithContext_ReturnsUniquelyFormattedTargetProbabilityForLowerLimitNorm(double lowerLimitNorm, double signalingNorm, string expectedText) { // Setup + var lowerLimitNormCalculations = new ObservableList(); + IAssessmentSection assessmentSection = AssessmentSectionTestHelper.CreateAssessmentSectionStub(mockRepository); + + assessmentSection.Stub(a => a.FailureMechanismContribution).Return(new FailureMechanismContribution(lowerLimitNorm, signalingNorm)); + assessmentSection.Stub(a => a.WaterLevelCalculationsForLowerLimitNorm).Return(lowerLimitNormCalculations); + assessmentSection.Stub(a => a.WaterLevelCalculationsForSignalingNorm).Return(new ObservableList()); + assessmentSection.Stub(a => a.WaterLevelCalculationsForUserDefinedTargetProbabilities).Return(new ObservableList()); + mockRepository.ReplayAll(); - var context = new WaterLevelCalculationsForNormTargetProbabilityContext(new ObservableList(), - assessmentSection, - () => 0.01); + var context = new WaterLevelCalculationsForNormTargetProbabilityContext(lowerLimitNormCalculations, assessmentSection, () => lowerLimitNorm); using (var plugin = new RiskeerPlugin()) { @@ -114,13 +123,46 @@ string text = info.Text(context); // Assert - Assert.AreEqual("1/100", text); + Assert.AreEqual(expectedText, text); } mockRepository.VerifyAll(); } [Test] + [TestCase(0.1, 0.01, "1/100")] + [TestCase(0.1, 0.1, "1/10 (2)")] + public void Text_WithContext_ReturnsUniquelyFormattedTargetProbabilityForSignalingNorm(double lowerLimitNorm, double signalingNorm, string expectedText) + { + // Setup + var signalingNormCalculations = new ObservableList(); + + IAssessmentSection assessmentSection = AssessmentSectionTestHelper.CreateAssessmentSectionStub(mockRepository); + + assessmentSection.Stub(a => a.FailureMechanismContribution).Return(new FailureMechanismContribution(lowerLimitNorm, signalingNorm)); + assessmentSection.Stub(a => a.WaterLevelCalculationsForLowerLimitNorm).Return(new ObservableList()); + assessmentSection.Stub(a => a.WaterLevelCalculationsForSignalingNorm).Return(signalingNormCalculations); + assessmentSection.Stub(a => a.WaterLevelCalculationsForUserDefinedTargetProbabilities).Return(new ObservableList()); + + mockRepository.ReplayAll(); + + var context = new WaterLevelCalculationsForNormTargetProbabilityContext(signalingNormCalculations, assessmentSection, () => lowerLimitNorm); + + using (var plugin = new RiskeerPlugin()) + { + TreeNodeInfo info = GetInfo(plugin); + + // Call + string text = info.Text(context); + + // Assert + Assert.AreEqual(expectedText, text); + } + + mockRepository.VerifyAll(); + } + + [Test] public void Image_Always_ReturnsGenericInputOutputIcon() { // Setup