Index: Ringtoets/Integration/src/Ringtoets.Integration.Forms/Properties/Resources.Designer.cs =================================================================== diff -u -rec29001a9e148ed508108e4fd64c2bc751a6c026 -r89f4fbf4c0868773f7a011605df141f042b0ad9c --- Ringtoets/Integration/src/Ringtoets.Integration.Forms/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision ec29001a9e148ed508108e4fd64c2bc751a6c026) +++ Ringtoets/Integration/src/Ringtoets.Integration.Forms/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 89f4fbf4c0868773f7a011605df141f042b0ad9c) @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:4.0.30319.42000 +// Runtime Version:4.0.30319.17929 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -347,6 +347,26 @@ } /// + /// Looks up a localized string similar to De uitvoer van {0} berekeningen is verwijderd.. + /// + public static string FailureMechanismContributionView_NormValueChanged_Results_of_0_calculations_cleared { + get { + return ResourceManager.GetString("FailureMechanismContributionView_NormValueChanged_Results_of_0_calculations_clear" + + "ed", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to De berekende toetspeilen en golfhoogte van alle hydraulische randvoorwaarden locaties zijn verwijderd.. + /// + public static string FailureMechanismContributionView_NormValueChanged_Waveheight_and_design_water_level_results_cleared { + get { + return ResourceManager.GetString("FailureMechanismContributionView_NormValueChanged_Waveheight_and_design_water_lev" + + "el_results_cleared", resourceCulture); + } + } + + /// /// Looks up a localized string similar to n.v.t. /// public static string FailureMechanismContributionView_ProbabilityPerYear_Not_applicable { Index: Ringtoets/Integration/src/Ringtoets.Integration.Forms/Properties/Resources.resx =================================================================== diff -u -rec29001a9e148ed508108e4fd64c2bc751a6c026 -r89f4fbf4c0868773f7a011605df141f042b0ad9c --- Ringtoets/Integration/src/Ringtoets.Integration.Forms/Properties/Resources.resx (.../Resources.resx) (revision ec29001a9e148ed508108e4fd64c2bc751a6c026) +++ Ringtoets/Integration/src/Ringtoets.Integration.Forms/Properties/Resources.resx (.../Resources.resx) (revision 89f4fbf4c0868773f7a011605df141f042b0ad9c) @@ -323,4 +323,10 @@ Hs [m] + + De uitvoer van {0} berekeningen is verwijderd. + + + De berekende toetspeilen en golfhoogte van alle hydraulische randvoorwaarden locaties zijn verwijderd. + \ No newline at end of file Index: Ringtoets/Integration/src/Ringtoets.Integration.Forms/Views/FailureMechanismContributionView.cs =================================================================== diff -u -r2144738ceac62325ae78fbbdfcf953c6cf7d7949 -r89f4fbf4c0868773f7a011605df141f042b0ad9c --- Ringtoets/Integration/src/Ringtoets.Integration.Forms/Views/FailureMechanismContributionView.cs (.../FailureMechanismContributionView.cs) (revision 2144738ceac62325ae78fbbdfcf953c6cf7d7949) +++ Ringtoets/Integration/src/Ringtoets.Integration.Forms/Views/FailureMechanismContributionView.cs (.../FailureMechanismContributionView.cs) (revision 89f4fbf4c0868773f7a011605df141f042b0ad9c) @@ -27,6 +27,7 @@ using Core.Common.Controls.Views; using Core.Common.Gui.Commands; using Core.Common.Utils.Reflection; +using log4net; using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.Calculation; using Ringtoets.Common.Data.Contribution; @@ -45,6 +46,8 @@ /// public partial class FailureMechanismContributionView : UserControl, IView, IObserver { + private static readonly ILog log = LogManager.GetLogger(typeof(FailureMechanismContributionView)); + private readonly Observer isFailureMechanismRelevantObserver; private readonly Observer closeViewsForIrrelevantFailureMechanismObserver; private FailureMechanismContribution data; @@ -271,12 +274,18 @@ private void NormValueChanged(object sender, EventArgs eventArgs) { data.Norm = Convert.ToInt32(normInput.Value); - var affectedCalculations = RingtoetsDataSynchronizationService.ClearAssessmentSectionData(assessmentSection); + var affectedCalculations = RingtoetsDataSynchronizationService.ClearAssessmentSectionData(assessmentSection).ToArray(); RingtoetsDataSynchronizationService.NotifyCalculationObservers(affectedCalculations); + if (affectedCalculations.Length > 0) + { + log.InfoFormat(RingtoetsIntegrationFormsResources.FailureMechanismContributionView_NormValueChanged_Results_of_0_calculations_cleared, affectedCalculations.Length); + } + if (assessmentSection.HydraulicBoundaryDatabase != null) { assessmentSection.HydraulicBoundaryDatabase.NotifyObservers(); + log.Info(RingtoetsIntegrationFormsResources.FailureMechanismContributionView_NormValueChanged_Waveheight_and_design_water_level_results_cleared); } data.NotifyObservers(); Index: Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/FailureMechanismContributionViewIntegrationTest.cs =================================================================== diff -u -r2144738ceac62325ae78fbbdfcf953c6cf7d7949 -r89f4fbf4c0868773f7a011605df141f042b0ad9c --- Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/FailureMechanismContributionViewIntegrationTest.cs (.../FailureMechanismContributionViewIntegrationTest.cs) (revision 2144738ceac62325ae78fbbdfcf953c6cf7d7949) +++ Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/FailureMechanismContributionViewIntegrationTest.cs (.../FailureMechanismContributionViewIntegrationTest.cs) (revision 89f4fbf4c0868773f7a011605df141f042b0ad9c) @@ -19,8 +19,11 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. +using System; +using System.Linq; using System.Windows.Forms; using Core.Common.Base; +using Core.Common.TestUtil; using NUnit.Extensions.Forms; using NUnit.Framework; using Rhino.Mocks; @@ -31,6 +34,7 @@ using Ringtoets.HeightStructures.Data; using Ringtoets.HydraRing.Data; using Ringtoets.Integration.Data; +using Ringtoets.Integration.Forms.Properties; using Ringtoets.Integration.Forms.Views; using Ringtoets.Piping.Data; using Ringtoets.Piping.KernelWrapper.TestUtil; @@ -41,7 +45,7 @@ public class FailureMechanismContributionViewIntegrationTest { [Test] - public void NormTextBox_ValueChanged_ClearsDependentDataAndNotifiesObservers() + public void NormTextBox_ValueChanged_ClearsDependentDataAndNotifiesObserversAndLogsMessages() { // Setup const int normValue = 200; @@ -94,6 +98,11 @@ failureMechanismContribution.Attach(observerMock); hydraulicBoundaryDatabase.Attach(hydraulicBoundaryDatabaseObserver); + + emptyPipingCalculation.Attach(calculationObserver); + emptyGrassCoverErosionInwardsCalculation.Attach(calculationObserver); + emptyHeightStructuresCalculation.Attach(calculationObserver); + pipingCalculation.Attach(calculationObserver); grassCoverErosionInwardsCalculation.Attach(calculationObserver); heightStructuresCalculation.Attach(calculationObserver); @@ -121,9 +130,15 @@ Assert.IsNotNull(heightStructuresCalculation.Output); // Call - normTester.Properties.Text = normValue.ToString(); + Action call = () => normTester.Properties.Text = normValue.ToString(); // Assert + TestHelper.AssertLogMessages(call, msgs => + { + string[] messages = msgs.ToArray(); + Assert.AreEqual(string.Format(Resources.FailureMechanismContributionView_NormValueChanged_Results_of_0_calculations_cleared, 3), messages[0]); + Assert.AreEqual(Resources.FailureMechanismContributionView_NormValueChanged_Waveheight_and_design_water_level_results_cleared, messages[1]); + }); Assert.AreEqual(normValue, failureMechanismContribution.Norm); Assert.IsNaN(hydraulicBoundaryLocation.WaveHeight); Assert.IsNaN(hydraulicBoundaryLocation.DesignWaterLevel); @@ -132,6 +147,60 @@ Assert.IsNull(heightStructuresCalculation.Output); } mockRepository.VerifyAll(); - } + } + + [Test] + public void NormTextBox_NoHydraulicBoundaryDatabaseAndNoCalculationsWithOutputAndValueChanged_NoObserversNotifiedAndMessagesLogged() + { + // Setup + const int normValue = 200; + + AssessmentSection assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); + + PipingCalculation emptyPipingCalculation = new PipingCalculation(new GeneralPipingInput()); + GrassCoverErosionInwardsCalculation emptyGrassCoverErosionInwardsCalculation = new GrassCoverErosionInwardsCalculation(); + HeightStructuresCalculation emptyHeightStructuresCalculation = new HeightStructuresCalculation(); + + assessmentSection.PipingFailureMechanism.CalculationsGroup.Children.Add(emptyPipingCalculation); + assessmentSection.GrassCoverErosionInwards.CalculationsGroup.Children.Add(emptyGrassCoverErosionInwardsCalculation); + assessmentSection.HeightStructures.CalculationsGroup.Children.Add(emptyHeightStructuresCalculation); + + FailureMechanismContribution failureMechanismContribution = assessmentSection.FailureMechanismContribution; + + MockRepository mockRepository = new MockRepository(); + IObserver observerMock = mockRepository.StrictMock(); + observerMock.Expect(o => o.UpdateObserver()); + IObserver calculationObserver = mockRepository.StrictMock(); + mockRepository.ReplayAll(); + + failureMechanismContribution.Attach(observerMock); + emptyPipingCalculation.Attach(calculationObserver); + emptyGrassCoverErosionInwardsCalculation.Attach(calculationObserver); + emptyHeightStructuresCalculation.Attach(calculationObserver); + + using (Form form = new Form()) + using (FailureMechanismContributionView distributionView = new FailureMechanismContributionView + { + Data = failureMechanismContribution, + AssessmentSection = assessmentSection + }) + { + form.Controls.Add(distributionView); + form.Show(); + + ControlTester normTester = new ControlTester("normInput"); + + // Precondition + Assert.AreEqual(failureMechanismContribution.Norm.ToString(), normTester.Text); + + // Call + Action call = () => normTester.Properties.Text = normValue.ToString(); + + // Assert + TestHelper.AssertLogMessagesCount(call, 0); + Assert.AreEqual(normValue, failureMechanismContribution.Norm); + } + mockRepository.VerifyAll(); + } } } \ No newline at end of file