Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/PropertyClasses/PipingInputContextPropertiesTest.cs =================================================================== diff -u -rf4a7276cac4a5ca2648268ed42fa1fc53d45c1ac -r8142644ec1337be8032e9214b1f103c85d9037f7 --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/PropertyClasses/PipingInputContextPropertiesTest.cs (.../PipingInputContextPropertiesTest.cs) (revision f4a7276cac4a5ca2648268ed42fa1fc53d45c1ac) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/PropertyClasses/PipingInputContextPropertiesTest.cs (.../PipingInputContextPropertiesTest.cs) (revision 8142644ec1337be8032e9214b1f103c85d9037f7) @@ -104,7 +104,7 @@ PropertyDescriptor assessmentLevelProperty = dynamicProperties[1]; Assert.IsNotNull(assessmentLevelProperty); - Assert.IsTrue(assessmentLevelProperty.IsReadOnly); + Assert.IsFalse(assessmentLevelProperty.IsReadOnly); Assert.AreEqual(hydraulicDataCategory, assessmentLevelProperty.Category); Assert.AreEqual("Toetspeil [m+NAP]", assessmentLevelProperty.DisplayName); Assert.AreEqual("Waterstand met een overschrijdingsfrequentie gelijk aan de trajectnorm.", assessmentLevelProperty.Description); @@ -673,7 +673,7 @@ { // Setup var mocks = new MockRepository(); - var assessmentSectionMock = mocks.StrictMock(); + var assessmentSectionMock = mocks.Stub(); var projectObserver = mocks.StrictMock(); projectObserver.Expect(o => o.UpdateObserver()); mocks.ReplayAll(); @@ -722,7 +722,7 @@ { // Setup var mocks = new MockRepository(); - var assessmentSectionMock = mocks.StrictMock(); + var assessmentSectionMock = mocks.Stub(); var projectObserver = mocks.StrictMock(); projectObserver.Expect(o => o.UpdateObserver()).Repeat.Times(1); mocks.ReplayAll(); @@ -760,6 +760,132 @@ } [Test] + public void GivenAssessmentLevelSetWithHydraulicBoundaryLocation_WhenNewAssessmentLevel_UpdateAssessmentLevel() + { + // Given + var mocks = new MockRepository(); + var assessmentSectionMock = mocks.Stub(); + mocks.ReplayAll(); + + PipingCalculationScenario calculationItem = new PipingCalculationScenario(new GeneralPipingInput()); + PipingFailureMechanism failureMechanism = new PipingFailureMechanism(); + + var random = new Random(21); + PipingInput inputParameters = new PipingInput(new GeneralPipingInput()) + { + HydraulicBoundaryLocation = new HydraulicBoundaryLocation(0, string.Empty, 0, 0) + { + DesignWaterLevel = (RoundedDouble) 50 + } + }; + + PipingInputContextProperties properties = new PipingInputContextProperties + { + Data = new PipingInputContext(inputParameters, + calculationItem, + Enumerable.Empty(), + Enumerable.Empty(), + failureMechanism, + assessmentSectionMock) + }; + + RoundedDouble testLevel = (RoundedDouble) random.NextDouble(); + + // When + properties.AssessmentLevel = testLevel; + + // Then + Assert.AreEqual(2, properties.AssessmentLevel.NumberOfDecimalPlaces); + Assert.AreSame(inputParameters.HydraulicBoundaryLocation, + properties.SelectedHydraulicBoundaryLocation.HydraulicBoundaryLocation); + Assert.AreEqual(testLevel, properties.AssessmentLevel, properties.AssessmentLevel.GetAccuracy()); + + mocks.VerifyAll(); + } + + [Test] + [TestCase(double.NegativeInfinity)] + [TestCase(double.PositiveInfinity)] + [TestCase(double.NaN)] + [TestCase(1234)] + public void AssessmentLevel_SetNewValue_UpdateDataAndNotifyObservers(double testLevel) + { + // Setup + var mocks = new MockRepository(); + var assessmentSectionMock = mocks.Stub(); + var projectObserver = mocks.StrictMock(); + projectObserver.Expect(o => o.UpdateObserver()).Repeat.Times(1); + mocks.ReplayAll(); + + PipingCalculationScenario calculationItem = new PipingCalculationScenario(new GeneralPipingInput()); + PipingFailureMechanism failureMechanism = new PipingFailureMechanism(); + + PipingInput inputParameters = new PipingInput(new GeneralPipingInput()); + inputParameters.Attach(projectObserver); + + PipingInputContextProperties properties = new PipingInputContextProperties + { + Data = new PipingInputContext(inputParameters, + calculationItem, + Enumerable.Empty(), + Enumerable.Empty(), + failureMechanism, + assessmentSectionMock) + }; + + // Call + properties.AssessmentLevel = (RoundedDouble) testLevel; + + // Assert + Assert.AreEqual(2, properties.AssessmentLevel.NumberOfDecimalPlaces); + Assert.AreEqual(testLevel, properties.AssessmentLevel, properties.AssessmentLevel.GetAccuracy()); + + mocks.VerifyAll(); + } + + [Test] + public void GivenAssessmentLevelSetWithoutHydraulicBoundaryLocation_WhenSetNewLocation_UpdateAssessmentLevelWithLocationValues() + { + // Given + var mocks = new MockRepository(); + var assessmentSectionMock = mocks.Stub(); + mocks.ReplayAll(); + + PipingCalculationScenario calculationItem = new PipingCalculationScenario(new GeneralPipingInput()); + PipingFailureMechanism failureMechanism = new PipingFailureMechanism(); + + var random = new Random(21); + PipingInput inputParameters = new PipingInput(new GeneralPipingInput()); + inputParameters.AssessmentLevel = (RoundedDouble) random.NextDouble(); + + PipingInputContextProperties properties = new PipingInputContextProperties + { + Data = new PipingInputContext(inputParameters, + calculationItem, + Enumerable.Empty(), + Enumerable.Empty(), + failureMechanism, + assessmentSectionMock) + }; + + RoundedDouble testLevel = (RoundedDouble) random.NextDouble(); + var hydraulicBoundaryLocation = new HydraulicBoundaryLocation(0, string.Empty, 0, 0) + { + DesignWaterLevel = testLevel + }; + var selectableHydraulicBoundaryLocation = new SelectableHydraulicBoundaryLocation(hydraulicBoundaryLocation, null); + + // When + properties.SelectedHydraulicBoundaryLocation = selectableHydraulicBoundaryLocation; + + // Then + Assert.AreEqual(2, properties.AssessmentLevel.NumberOfDecimalPlaces); + Assert.AreEqual(testLevel, properties.AssessmentLevel, properties.AssessmentLevel.GetAccuracy()); + + mocks.VerifyAll(); + } + + [Test] public void SurfaceLine_NewSurfaceLine_StochasticSoilModelAndSoilProfileSetToNull() { // Setup