Index: Riskeer/DuneErosion/src/Riskeer.DuneErosion.Forms/PresentationObjects/DuneLocationCalculationsForUserDefinedTargetProbabilityContext.cs
===================================================================
diff -u -rc07341d07d9f9d32e1b5ac99d727396716e998a3 -r8ca6f19c77af27dd6e93556ae260f80bdff2b86a
--- Riskeer/DuneErosion/src/Riskeer.DuneErosion.Forms/PresentationObjects/DuneLocationCalculationsForUserDefinedTargetProbabilityContext.cs (.../DuneLocationCalculationsForUserDefinedTargetProbabilityContext.cs) (revision c07341d07d9f9d32e1b5ac99d727396716e998a3)
+++ Riskeer/DuneErosion/src/Riskeer.DuneErosion.Forms/PresentationObjects/DuneLocationCalculationsForUserDefinedTargetProbabilityContext.cs (.../DuneLocationCalculationsForUserDefinedTargetProbabilityContext.cs) (revision 8ca6f19c77af27dd6e93556ae260f80bdff2b86a)
@@ -20,16 +20,18 @@
// All rights reserved.
using System;
-using Core.Common.Controls.PresentationObjects;
+using Core.Common.Base;
using Riskeer.Common.Data.AssessmentSection;
+using Riskeer.Common.Forms.PresentationObjects;
using Riskeer.DuneErosion.Data;
namespace Riskeer.DuneErosion.Forms.PresentationObjects
{
///
/// Presentation object for all dune location calculations based on a user defined target probability.
///
- public class DuneLocationCalculationsForUserDefinedTargetProbabilityContext : ObservableWrappedObjectContextBase
+ public class DuneLocationCalculationsForUserDefinedTargetProbabilityContext
+ : LocationCalculationsContext
{
///
/// Creates a new instance of .
@@ -66,5 +68,7 @@
/// Gets the assessment section that the context belongs to.
///
public IAssessmentSection AssessmentSection { get; }
+
+ protected override IObservableEnumerable LocationCalculationsEnumerationToObserve => FailureMechanism.DuneLocationCalculationsForUserDefinedTargetProbabilities;
}
}
\ No newline at end of file
Index: Riskeer/DuneErosion/src/Riskeer.DuneErosion.Plugin/DuneErosionPlugin.cs
===================================================================
diff -u -r16ba3eb172ac01be401442389ba665fe86ce7970 -r8ca6f19c77af27dd6e93556ae260f80bdff2b86a
--- Riskeer/DuneErosion/src/Riskeer.DuneErosion.Plugin/DuneErosionPlugin.cs (.../DuneErosionPlugin.cs) (revision 16ba3eb172ac01be401442389ba665fe86ce7970)
+++ Riskeer/DuneErosion/src/Riskeer.DuneErosion.Plugin/DuneErosionPlugin.cs (.../DuneErosionPlugin.cs) (revision 8ca6f19c77af27dd6e93556ae260f80bdff2b86a)
@@ -36,6 +36,7 @@
using Core.Gui.Helpers;
using Core.Gui.Plugin;
using Riskeer.Common.Data.AssessmentSection;
+using Riskeer.Common.Forms.Helpers;
using Riskeer.Common.Forms.PresentationObjects;
using Riskeer.Common.Forms.TreeNodeInfos;
using Riskeer.Common.Forms.TypeConverters;
@@ -149,7 +150,9 @@
yield return new TreeNodeInfo
{
- Text = context => noProbabilityValueDoubleConverter.ConvertToString(context.WrappedData.TargetProbability),
+ Text = context => TargetProbabilityCalculationsDisplayNameHelper.GetUniqueDisplayNameForCalculations(context.WrappedData,
+ context.FailureMechanism.DuneLocationCalculationsForUserDefinedTargetProbabilities,
+ probability => probability.TargetProbability),
Image = context => RiskeerCommonFormsResources.GenericInputOutputIcon,
EnsureVisibleOnCreate = (context, o) => true,
CanRemove = (context, o) => true,
@@ -200,7 +203,10 @@
context.AssessmentSection,
() => context.WrappedData.TargetProbability,
() => noProbabilityValueDoubleConverter.ConvertToString(context.WrappedData.TargetProbability)),
- AfterCreate = (view, context) => { view.CalculationGuiService = duneLocationCalculationGuiService; }
+ AfterCreate = (view, context) =>
+ {
+ view.CalculationGuiService = duneLocationCalculationGuiService;
+ }
};
}
@@ -499,6 +505,8 @@
duneLocationCalculationsForUserDefinedTargetProbabilityContext.WrappedData);
duneLocationCalculationsForUserDefinedTargetProbabilitiesGroupContext.WrappedData.Insert(
position, duneLocationCalculationsForUserDefinedTargetProbabilityContext.WrappedData);
+
+ duneLocationCalculationsForUserDefinedTargetProbabilitiesGroupContext.WrappedData.NotifyObservers();
}
#endregion
Index: Riskeer/DuneErosion/test/Riskeer.DuneErosion.Forms.Test/PresentationObjects/DuneLocationCalculationsForUserDefinedTargetProbabilityContextTest.cs
===================================================================
diff -u -r9453b0efd19b36bd38b1bc4e79e4c29923965fce -r8ca6f19c77af27dd6e93556ae260f80bdff2b86a
--- Riskeer/DuneErosion/test/Riskeer.DuneErosion.Forms.Test/PresentationObjects/DuneLocationCalculationsForUserDefinedTargetProbabilityContextTest.cs (.../DuneLocationCalculationsForUserDefinedTargetProbabilityContextTest.cs) (revision 9453b0efd19b36bd38b1bc4e79e4c29923965fce)
+++ Riskeer/DuneErosion/test/Riskeer.DuneErosion.Forms.Test/PresentationObjects/DuneLocationCalculationsForUserDefinedTargetProbabilityContextTest.cs (.../DuneLocationCalculationsForUserDefinedTargetProbabilityContextTest.cs) (revision 8ca6f19c77af27dd6e93556ae260f80bdff2b86a)
@@ -20,9 +20,12 @@
// All rights reserved.
using System;
-using Core.Common.Controls.PresentationObjects;
+using System.Linq;
+using Core.Common.Base;
using NUnit.Framework;
+using Rhino.Mocks;
using Riskeer.Common.Data.TestUtil;
+using Riskeer.Common.Forms.PresentationObjects;
using Riskeer.DuneErosion.Data;
using Riskeer.DuneErosion.Forms.PresentationObjects;
@@ -71,9 +74,60 @@
assessmentSection);
// Assert
- Assert.IsInstanceOf>(context);
+ Assert.IsInstanceOf>(context);
Assert.AreSame(duneLocationCalculationsForTargetProbability, context.WrappedData);
Assert.AreSame(assessmentSection, context.AssessmentSection);
}
+
+ [Test]
+ public void GivenContextWithObserverAttached_WhenNotifyingObserversOfDuneLocationCalculationsForUserDefinedTargetProbabilities_ThenObserverCorrectlyNotified()
+ {
+ // Given
+ var mockRepository = new MockRepository();
+ var observer = mockRepository.StrictMock();
+ observer.Expect(o => o.UpdateObserver());
+ mockRepository.ReplayAll();
+
+ var assessmentSection = new AssessmentSectionStub();
+ var failureMechanism = new DuneErosionFailureMechanism();
+ var calculationsForTargetProbability = new DuneLocationCalculationsForTargetProbability(0.1);
+ var context = new DuneLocationCalculationsForUserDefinedTargetProbabilityContext(calculationsForTargetProbability,
+ failureMechanism,
+ assessmentSection);
+
+ context.Attach(observer);
+
+ // When
+ failureMechanism.DuneLocationCalculationsForUserDefinedTargetProbabilities.NotifyObservers();
+
+ // Then
+ mockRepository.VerifyAll();
+ }
+
+ [Test]
+ public void GivenContextWithObserverAttached_WhenNotifyingObserversOfDuneLocationCalculationsForUserDefinedTargetProbability_ThenObserverCorrectlyNotified()
+ {
+ // Given
+ var mockRepository = new MockRepository();
+ var observer = mockRepository.StrictMock();
+ observer.Expect(o => o.UpdateObserver());
+ mockRepository.ReplayAll();
+
+ var assessmentSection = new AssessmentSectionStub();
+ var failureMechanism = new DuneErosionFailureMechanism();
+ var calculationsForTargetProbability = new DuneLocationCalculationsForTargetProbability(0.1);
+ failureMechanism.DuneLocationCalculationsForUserDefinedTargetProbabilities.Add(calculationsForTargetProbability);
+ var context = new DuneLocationCalculationsForUserDefinedTargetProbabilityContext(calculationsForTargetProbability,
+ failureMechanism,
+ assessmentSection);
+
+ context.Attach(observer);
+
+ // When
+ failureMechanism.DuneLocationCalculationsForUserDefinedTargetProbabilities.First().NotifyObservers();
+
+ // Then
+ mockRepository.VerifyAll();
+ }
}
}
\ No newline at end of file
Index: Riskeer/DuneErosion/test/Riskeer.DuneErosion.Plugin.Test/TreeNodeInfos/DuneLocationCalculationsForUserDefinedTargetProbabilityContextTreeNodeInfoTest.cs
===================================================================
diff -u -r9453b0efd19b36bd38b1bc4e79e4c29923965fce -r8ca6f19c77af27dd6e93556ae260f80bdff2b86a
--- Riskeer/DuneErosion/test/Riskeer.DuneErosion.Plugin.Test/TreeNodeInfos/DuneLocationCalculationsForUserDefinedTargetProbabilityContextTreeNodeInfoTest.cs (.../DuneLocationCalculationsForUserDefinedTargetProbabilityContextTreeNodeInfoTest.cs) (revision 9453b0efd19b36bd38b1bc4e79e4c29923965fce)
+++ Riskeer/DuneErosion/test/Riskeer.DuneErosion.Plugin.Test/TreeNodeInfos/DuneLocationCalculationsForUserDefinedTargetProbabilityContextTreeNodeInfoTest.cs (.../DuneLocationCalculationsForUserDefinedTargetProbabilityContextTreeNodeInfoTest.cs) (revision 8ca6f19c77af27dd6e93556ae260f80bdff2b86a)
@@ -109,21 +109,37 @@
}
[Test]
- public void Text_WithContext_ReturnsFormattedTargetProbability()
+ [TestCase(0.025, 0.0025, 0.00025, "1/400")]
+ [TestCase(0.0025, 0.0025, 0.025, "1/400 (1)")]
+ [TestCase(0.0025, 0.0025, 0.0025, "1/400 (2)")]
+ public void Text_WithContext_ReturnsUniquelyFormattedTargetProbability(double userDefinedTargetProbability1,
+ double userDefinedTargetProbability2,
+ double userDefinedTargetProbability3,
+ string expectedText)
{
// Setup
- var assessmentSection = mocks.Stub();
- mocks.ReplayAll();
+ var failureMechanism = new DuneErosionFailureMechanism();
+ var calculationsForTargetProbability = new DuneLocationCalculationsForTargetProbability(userDefinedTargetProbability2);
+ var calculationsForTargetProbability2 = new DuneLocationCalculationsForTargetProbability(userDefinedTargetProbability3);
+ failureMechanism.DuneLocationCalculationsForUserDefinedTargetProbabilities.AddRange(new[]
+ {
+ new DuneLocationCalculationsForTargetProbability(userDefinedTargetProbability1),
+ calculationsForTargetProbability2,
+ calculationsForTargetProbability
+ });
- var context = new DuneLocationCalculationsForUserDefinedTargetProbabilityContext(new DuneLocationCalculationsForTargetProbability(0.01),
- new DuneErosionFailureMechanism(),
- assessmentSection);
+ var context = new DuneLocationCalculationsForUserDefinedTargetProbabilityContext(calculationsForTargetProbability,
+ failureMechanism,
+ new AssessmentSectionStub(new[]
+ {
+ failureMechanism
+ }));
// Call
string text = info.Text(context);
// Assert
- Assert.AreEqual("1/100", text);
+ Assert.AreEqual(expectedText, text);
}
[Test]