Index: Ringtoets/Integration/src/Ringtoets.Integration.Forms/Views/FailureMechanismContributionView.Designer.cs =================================================================== diff -u -r9ffe6315bcf05d461cb320ff137d4d3c6a552ba0 -r65eb603f0c22966e05487433a9deb80e3041fc47 --- Ringtoets/Integration/src/Ringtoets.Integration.Forms/Views/FailureMechanismContributionView.Designer.cs (.../FailureMechanismContributionView.Designer.cs) (revision 9ffe6315bcf05d461cb320ff137d4d3c6a552ba0) +++ Ringtoets/Integration/src/Ringtoets.Integration.Forms/Views/FailureMechanismContributionView.Designer.cs (.../FailureMechanismContributionView.Designer.cs) (revision 65eb603f0c22966e05487433a9deb80e3041fc47) @@ -45,9 +45,11 @@ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FailureMechanismContributionView)); this.returnPeriodLabel = new System.Windows.Forms.Label(); this.returnPeriodInput = new System.Windows.Forms.NumericUpDown(); + this.returnPeriodInput.Enabled = false; this.perYearLabel = new System.Windows.Forms.Label(); this.assessmentSectionConfigurationLabel = new System.Windows.Forms.Label(); this.assessmentSectionCompositionComboBox = new System.Windows.Forms.ComboBox(); + this.assessmentSectionCompositionComboBox.Enabled = false; this.tableLayoutPanel = new System.Windows.Forms.TableLayoutPanel(); this.probabilityDistributionGrid = new Core.Common.Controls.DataGrid.DataGridViewControl(); ((System.ComponentModel.ISupportInitialize)(this.returnPeriodInput)).BeginInit(); @@ -78,8 +80,6 @@ 0, 0, 0}); - this.returnPeriodInput.Validating += new System.ComponentModel.CancelEventHandler(this.ReturnPeriodNumericUpDown_Validating); - this.returnPeriodInput.Validated += new System.EventHandler(this.ReturnPeriodNumericUpDown_Validated); // // perYearLabel // Index: Ringtoets/Integration/src/Ringtoets.Integration.Forms/Views/FailureMechanismContributionView.cs =================================================================== diff -u -r5333bcb57fa6f4738d75699af5374e44ded4cdc2 -r65eb603f0c22966e05487433a9deb80e3041fc47 --- Ringtoets/Integration/src/Ringtoets.Integration.Forms/Views/FailureMechanismContributionView.cs (.../FailureMechanismContributionView.cs) (revision 5333bcb57fa6f4738d75699af5374e44ded4cdc2) +++ Ringtoets/Integration/src/Ringtoets.Integration.Forms/Views/FailureMechanismContributionView.cs (.../FailureMechanismContributionView.cs) (revision 65eb603f0c22966e05487433a9deb80e3041fc47) @@ -20,8 +20,6 @@ // All rights reserved. using System; -using System.Collections.Generic; -using System.ComponentModel; using System.Globalization; using System.Linq; using System.Windows.Forms; @@ -57,9 +55,6 @@ /// /// private readonly Observer failureMechanismObserver; - - private readonly IFailureMechanismContributionNormChangeHandler normChangeHandler; - private readonly IAssessmentSectionCompositionChangeHandler compositionChangeHandler; private readonly IViewCommands viewCommands; private FailureMechanismContribution data; @@ -68,24 +63,10 @@ /// /// Creates a new instance of . /// - /// The object responsible for handling the change - /// in the . - /// The object responsible for handling the - /// change in the . /// Objects exposing high level related commands. /// When any input argument is null. - public FailureMechanismContributionView(IFailureMechanismContributionNormChangeHandler normChangeHandler, - IAssessmentSectionCompositionChangeHandler compositionChangeHandler, - IViewCommands viewCommands) + public FailureMechanismContributionView(IViewCommands viewCommands) { - if (normChangeHandler == null) - { - throw new ArgumentNullException("normChangeHandler"); - } - if (compositionChangeHandler == null) - { - throw new ArgumentNullException("compositionChangeHandler"); - } if (viewCommands == null) { throw new ArgumentNullException("viewCommands"); @@ -94,12 +75,8 @@ InitializeComponent(); InitializeGridColumns(); InitializeAssessmentSectionCompositionComboBox(); - BindReturnPeriodChange(); - BindReturnPeriodInputLeave(); SubscribeEvents(); - this.normChangeHandler = normChangeHandler; - this.compositionChangeHandler = compositionChangeHandler; this.viewCommands = viewCommands; failureMechanismObserver = new Observer(probabilityDistributionGrid.RefreshDataGridView); @@ -134,6 +111,7 @@ public void UpdateObserver() { + SetAssessmentSectionComposition(); SetReturnPeriodText(); probabilityDistributionGrid.RefreshDataGridView(); } @@ -151,7 +129,6 @@ components.Dispose(); } UnsubscribeEvents(); - UnbindAssessmentSectionCompositionChange(); DetachFromFailureMechanisms(); } base.Dispose(disposing); @@ -183,7 +160,6 @@ private void HandleNewDataSet(FailureMechanismContribution value) { - UnbindReturnPeriodChange(); DetachFromData(); data = value; @@ -192,21 +168,18 @@ SetReturnPeriodText(); AttachToData(); - BindReturnPeriodChange(); probabilityDistributionGrid.RefreshDataGridView(); } private void HandleNewAssessmentSectionSet(IAssessmentSection value) { - UnbindAssessmentSectionCompositionChange(); DetachFromFailureMechanisms(); assessmentSection = value; AttachToFailureMechanisms(); SetAssessmentSectionComposition(); - BindAssessmentSectionCompositionChange(); } private void DetachFromFailureMechanisms() @@ -258,35 +231,6 @@ } } - private void BindAssessmentSectionCompositionChange() - { - assessmentSectionCompositionComboBox.SelectionChangeCommitted += AssessmentSectionCompositionComboBoxSelectionChangeCommitted; - } - - private void UnbindAssessmentSectionCompositionChange() - { - assessmentSectionCompositionComboBox.SelectionChangeCommitted -= AssessmentSectionCompositionComboBoxSelectionChangeCommitted; - } - - private void BindReturnPeriodChange() - { - // Attaching to inner TextBox instead of 'returnPeriodInput' control to capture all - // key presses. (This prevents some unexpected unresponsive behavior): - var innerTextBox = returnPeriodInput.Controls.OfType().First(); - innerTextBox.KeyDown += ReturnPeriodNumericUpDownInnerTextBox_KeyDown; - } - - private void UnbindReturnPeriodChange() - { - var innerTextBox = returnPeriodInput.Controls.OfType().First(); - innerTextBox.KeyDown -= ReturnPeriodNumericUpDownInnerTextBox_KeyDown; - } - - private void BindReturnPeriodInputLeave() - { - returnPeriodInput.Leave += ReturnPeriodInputLeave; - } - private void SetReturnPeriodText() { if (data != null) @@ -331,19 +275,6 @@ #region Event handling - private void ReturnPeriodInputLeave(object sender, EventArgs e) - { - ResetTextIfEmpty(); - } - - private void ResetTextIfEmpty() - { - if (string.IsNullOrEmpty(returnPeriodInput.Text)) - { - returnPeriodInput.Text = returnPeriodInput.Value.ToString(CultureInfo.CurrentCulture); - } - } - private void ProbabilityDistributionGridOnCellFormatting(object sender, DataGridViewCellFormattingEventArgs e) { if (data == null) @@ -397,74 +328,6 @@ return rowData.IsAlwaysRelevant; } - private void AssessmentSectionCompositionComboBoxSelectionChangeCommitted(object sender, EventArgs e) - { - var newComposition = (AssessmentSectionComposition) assessmentSectionCompositionComboBox.SelectedValue; - if (assessmentSection.Composition == newComposition) - { - return; - } - - if (compositionChangeHandler.ConfirmCompositionChange()) - { - IEnumerable changedObjects = compositionChangeHandler.ChangeComposition(assessmentSection, newComposition); - foreach (IObservable changedObject in changedObjects) - { - changedObject.NotifyObservers(); - } - } - else - { - assessmentSectionCompositionComboBox.SelectedValue = assessmentSection.Composition; - } - } - - private void ReturnPeriodNumericUpDown_Validating(object sender, CancelEventArgs e) - { - int returnPeriod = Convert.ToInt32(returnPeriodInput.Value); - if (returnPeriod != 0 && - !assessmentSection.FailureMechanismContribution.Norm.Equals(1.0/returnPeriod) && - !normChangeHandler.ConfirmNormChange()) - { - e.Cancel = true; - RevertReturnPeriodInputValue(); - } - } - - private void ReturnPeriodNumericUpDown_Validated(object sender, EventArgs e) - { - double newNormValue = 1.0/Convert.ToInt32(returnPeriodInput.Value); - IEnumerable changedObjects = normChangeHandler.ChangeNorm(assessmentSection, newNormValue); - foreach (IObservable changedObject in changedObjects) - { - changedObject.NotifyObservers(); - } - } - - private void ReturnPeriodNumericUpDownInnerTextBox_KeyDown(object sender, KeyEventArgs e) - { - if (e.KeyCode == Keys.Escape) - { - RevertReturnPeriodInputValue(); - - e.Handled = true; - e.SuppressKeyPress = true; - } - else if (e.KeyCode == Keys.Enter) - { - ActiveControl = null; - - e.Handled = true; - e.SuppressKeyPress = true; - } - } - - private void RevertReturnPeriodInputValue() - { - SetReturnPeriodText(); - ActiveControl = null; - } - #endregion } } \ No newline at end of file Index: Ringtoets/Integration/src/Ringtoets.Integration.Plugin/RingtoetsPlugin.cs =================================================================== diff -u -rc18f1b5eca111867195ebedf813fae22a12ce793 -r65eb603f0c22966e05487433a9deb80e3041fc47 --- Ringtoets/Integration/src/Ringtoets.Integration.Plugin/RingtoetsPlugin.cs (.../RingtoetsPlugin.cs) (revision c18f1b5eca111867195ebedf813fae22a12ce793) +++ Ringtoets/Integration/src/Ringtoets.Integration.Plugin/RingtoetsPlugin.cs (.../RingtoetsPlugin.cs) (revision 65eb603f0c22966e05487433a9deb80e3041fc47) @@ -308,9 +308,7 @@ GetViewData = context => context.WrappedData, Image = RingtoetsCommonFormsResources.FailureMechanismContributionIcon, CloseForData = CloseFailureMechanismContributionViewForData, - CreateInstance = () => new FailureMechanismContributionView(new FailureMechanismContributionNormChangeHandler(), - new AssessmentSectionCompositionChangeHandler(), - Gui.ViewCommands), + CreateInstance = () => new FailureMechanismContributionView(Gui.ViewCommands), AfterCreate = (view, context) => { view.AssessmentSection = context.Parent; Index: Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/FailureMechanismContributionContextPropertiesIntegrationTest.cs =================================================================== diff -u --- Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/FailureMechanismContributionContextPropertiesIntegrationTest.cs (revision 0) +++ Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/FailureMechanismContributionContextPropertiesIntegrationTest.cs (revision 65eb603f0c22966e05487433a9deb80e3041fc47) @@ -0,0 +1,582 @@ +// Copyright (C) Stichting Deltares 2016. All rights reserved. +// +// This file is part of Ringtoets. +// +// Ringtoets is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +// +// All names, logos, and references to "Deltares" are registered trademarks of +// Stichting Deltares and remain full property of Stichting Deltares at all times. +// All rights reserved. + +using System; +using System.Linq; +using Core.Common.Base; +using Core.Common.Base.Data; +using Core.Common.TestUtil; +using NUnit.Extensions.Forms; +using NUnit.Framework; +using Rhino.Mocks; +using Ringtoets.Common.Data.AssessmentSection; +using Ringtoets.Common.Data.Contribution; +using Ringtoets.Common.Data.Hydraulics; +using Ringtoets.Common.Data.Probability; +using Ringtoets.Common.Data.Structures; +using Ringtoets.Common.Data.TestUtil; +using Ringtoets.GrassCoverErosionInwards.Data; +using Ringtoets.GrassCoverErosionInwards.Data.TestUtil; +using Ringtoets.HeightStructures.Data; +using Ringtoets.Integration.Data; +using Ringtoets.Integration.Forms.PropertyClasses; +using Ringtoets.Integration.Plugin.Handlers; +using Ringtoets.Piping.Data; +using Ringtoets.Piping.Data.TestUtil; +using Ringtoets.Piping.KernelWrapper.TestUtil; + +namespace Ringtoets.Integration.Forms.Test +{ + [TestFixture] + public class FailureMechanismContributionContextPropertiesIntegrationTest : NUnitFormTest + { + private const string messageAllHydraulicBoundaryLocationOutputCleared = + "Alle berekende resultaten voor alle hydraulische randvoorwaardenlocaties zijn verwijderd."; + + private const string messageCalculationsremoved = "De resultaten van {0} berekeningen zijn verwijderd."; + + [Test] + public void ReturnPeriodProperty_ValueChanged_ClearsDependentDataAndNotifiesObserversAndLogsMessages() + { + // Setup + const int newReturnPeriod = 200; + const int numberOfCalculations = 3; + + var waveHeight = (RoundedDouble) 3.0; + var designWaterLevel = (RoundedDouble) 4.2; + + var hydraulicBoundaryLocation = new TestHydraulicBoundaryLocation(designWaterLevel, waveHeight); + var hydraulicBoundaryDatabase = new HydraulicBoundaryDatabase + { + Locations = + { + hydraulicBoundaryLocation + } + }; + + var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike) + { + HydraulicBoundaryDatabase = hydraulicBoundaryDatabase + }; + + var emptyPipingCalculation = new PipingCalculation(new GeneralPipingInput()); + var pipingCalculation = new PipingCalculation(new GeneralPipingInput()) + { + Output = new TestPipingOutput(), + SemiProbabilisticOutput = new TestPipingSemiProbabilisticOutput() + }; + var emptyGrassCoverErosionInwardsCalculation = new GrassCoverErosionInwardsCalculation(); + var grassCoverErosionInwardsCalculation = new GrassCoverErosionInwardsCalculation + { + Output = new GrassCoverErosionInwardsOutput(0, false, new ProbabilityAssessmentOutput(0, 0, 0, 0, 0), + new TestDikeHeightAssessmentOutput(0)) + }; + var emptyHeightStructuresCalculation = new StructuresCalculation(); + var heightStructuresCalculation = new StructuresCalculation + { + Output = new ProbabilityAssessmentOutput(0, 0, 0, 0, 0) + }; + + var grassCoverErosionOutwardsHydraulicBoundaryLocation = hydraulicBoundaryLocation; + grassCoverErosionOutwardsHydraulicBoundaryLocation.WaveHeightOutput = new TestHydraulicBoundaryLocationOutput( + waveHeight); + grassCoverErosionOutwardsHydraulicBoundaryLocation.DesignWaterLevelOutput = new TestHydraulicBoundaryLocationOutput( + designWaterLevel); + + assessmentSection.GrassCoverErosionOutwards.HydraulicBoundaryLocations.Add(grassCoverErosionOutwardsHydraulicBoundaryLocation); + + assessmentSection.PipingFailureMechanism.CalculationsGroup.Children.Add(emptyPipingCalculation); + assessmentSection.PipingFailureMechanism.CalculationsGroup.Children.Add(pipingCalculation); + assessmentSection.GrassCoverErosionInwards.CalculationsGroup.Children.Add(emptyGrassCoverErosionInwardsCalculation); + assessmentSection.GrassCoverErosionInwards.CalculationsGroup.Children.Add(grassCoverErosionInwardsCalculation); + assessmentSection.HeightStructures.CalculationsGroup.Children.Add(emptyHeightStructuresCalculation); + assessmentSection.HeightStructures.CalculationsGroup.Children.Add(heightStructuresCalculation); + + FailureMechanismContribution failureMechanismContribution = assessmentSection.FailureMechanismContribution; + + MockRepository mockRepository = new MockRepository(); + IObserver observerMock = mockRepository.StrictMock(); + observerMock.Expect(o => o.UpdateObserver()); + + IObserver pipingCalculationObserver = mockRepository.StrictMock(); + pipingCalculationObserver.Expect(o => o.UpdateObserver()); + IObserver grassCoverErosionInwardsCalculationObserver = mockRepository.StrictMock(); + grassCoverErosionInwardsCalculationObserver.Expect(o => o.UpdateObserver()); + IObserver heightStructuresCalculationObserver = mockRepository.StrictMock(); + heightStructuresCalculationObserver.Expect(o => o.UpdateObserver()); + IObserver emptyPipingCalculationObserver = mockRepository.StrictMock(); + IObserver emptyGrassCoverErosionInwardsCalculationObserver = mockRepository.StrictMock(); + IObserver emptyHeightStructuresCalculationObserver = mockRepository.StrictMock(); + + IObserver hydraulicBoundaryDatabaseObserver = mockRepository.StrictMock(); + hydraulicBoundaryDatabaseObserver.Expect(hbdo => hbdo.UpdateObserver()); + IObserver grassCoverErosionOutwardsObserver = mockRepository.StrictMock(); + grassCoverErosionOutwardsObserver.Expect(o => o.UpdateObserver()); + mockRepository.ReplayAll(); + + failureMechanismContribution.Attach(observerMock); + hydraulicBoundaryDatabase.Attach(hydraulicBoundaryDatabaseObserver); + + emptyPipingCalculation.Attach(emptyPipingCalculationObserver); + emptyGrassCoverErosionInwardsCalculation.Attach(emptyGrassCoverErosionInwardsCalculationObserver); + emptyHeightStructuresCalculation.Attach(emptyHeightStructuresCalculationObserver); + + pipingCalculation.Attach(pipingCalculationObserver); + grassCoverErosionInwardsCalculation.Attach(grassCoverErosionInwardsCalculationObserver); + heightStructuresCalculation.Attach(heightStructuresCalculationObserver); + + assessmentSection.GrassCoverErosionOutwards.HydraulicBoundaryLocations.Attach(grassCoverErosionOutwardsObserver); + + var properties = new FailureMechanismContributionContextProperties() + { + Data = failureMechanismContribution, + AssessmentSection = assessmentSection, + NormChangeHandler = new FailureMechanismContributionNormChangeHandler() + }; + + // Precondition + int originalReturnPeriodValue = Convert.ToInt32(1.0/failureMechanismContribution.Norm); + Assert.AreEqual(originalReturnPeriodValue, properties.ReturnPeriod); + Assert.AreEqual(waveHeight, hydraulicBoundaryLocation.WaveHeight, hydraulicBoundaryLocation.WaveHeight.GetAccuracy()); + Assert.AreEqual(designWaterLevel, hydraulicBoundaryLocation.DesignWaterLevel, hydraulicBoundaryLocation.DesignWaterLevel.GetAccuracy()); + Assert.AreEqual(waveHeight, grassCoverErosionOutwardsHydraulicBoundaryLocation.WaveHeight, grassCoverErosionOutwardsHydraulicBoundaryLocation.WaveHeight.GetAccuracy()); + Assert.AreEqual(designWaterLevel, grassCoverErosionOutwardsHydraulicBoundaryLocation.DesignWaterLevel, grassCoverErosionOutwardsHydraulicBoundaryLocation.DesignWaterLevel.GetAccuracy()); + + Assert.IsNotNull(pipingCalculation.Output); + Assert.IsNotNull(pipingCalculation.SemiProbabilisticOutput); + Assert.IsNotNull(grassCoverErosionInwardsCalculation.Output); + Assert.IsNotNull(heightStructuresCalculation.Output); + + DialogBoxHandler = (name, wnd) => + { + var dialogTester = new MessageBoxTester(wnd); + dialogTester.ClickOk(); + }; + + // Call + Action call = () => properties.ReturnPeriod = newReturnPeriod; + + // Assert + TestHelper.AssertLogMessages(call, msgs => + { + string[] messages = msgs.ToArray(); + Assert.AreEqual(string.Format(messageCalculationsremoved, numberOfCalculations), messages[0]); + Assert.AreEqual(messageAllHydraulicBoundaryLocationOutputCleared, messages[1]); + }); + Assert.AreEqual(1.0/newReturnPeriod, failureMechanismContribution.Norm); + Assert.IsNaN(hydraulicBoundaryLocation.WaveHeight); + Assert.IsNaN(hydraulicBoundaryLocation.DesignWaterLevel); + Assert.IsNaN(grassCoverErosionOutwardsHydraulicBoundaryLocation.WaveHeight); + Assert.IsNaN(grassCoverErosionOutwardsHydraulicBoundaryLocation.DesignWaterLevel); + Assert.IsNull(pipingCalculation.Output); + Assert.IsNull(pipingCalculation.SemiProbabilisticOutput); + Assert.IsNull(grassCoverErosionInwardsCalculation.Output); + Assert.IsNull(heightStructuresCalculation.Output); + + mockRepository.VerifyAll(); + } + + [Test] + public void ReturnPeriodProperty_HydraulicBoundarySetAndCalculationsNoOutput_HydraulicBoundaryDatabaseObserversNotifiedAndMessagesLogged() + { + // Setup + const int newReturnPeriod = 200; + + var waveHeight = (RoundedDouble) 3.0; + var designWaterLevel = (RoundedDouble) 4.2; + HydraulicBoundaryDatabase hydraulicBoundaryDatabase = new HydraulicBoundaryDatabase(); + hydraulicBoundaryDatabase.Locations.Add(new TestHydraulicBoundaryLocation(designWaterLevel, waveHeight)); + + AssessmentSection assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike) + { + HydraulicBoundaryDatabase = hydraulicBoundaryDatabase + }; + + PipingCalculation emptyPipingCalculation = new PipingCalculation(new GeneralPipingInput()); + GrassCoverErosionInwardsCalculation emptyGrassCoverErosionInwardsCalculation = new GrassCoverErosionInwardsCalculation(); + var emptyHeightStructuresCalculation = new StructuresCalculation(); + + 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(); // No update observers expected. + IObserver hydraulicBoundaryDatabaseObserver = mockRepository.StrictMock(); + hydraulicBoundaryDatabaseObserver.Expect(hbdo => hbdo.UpdateObserver()); + mockRepository.ReplayAll(); + + failureMechanismContribution.Attach(observerMock); + hydraulicBoundaryDatabase.Attach(hydraulicBoundaryDatabaseObserver); + + emptyPipingCalculation.Attach(calculationObserver); + emptyGrassCoverErosionInwardsCalculation.Attach(calculationObserver); + emptyHeightStructuresCalculation.Attach(calculationObserver); + + var properties = new FailureMechanismContributionContextProperties() + { + Data = failureMechanismContribution, + AssessmentSection = assessmentSection, + NormChangeHandler = new FailureMechanismContributionNormChangeHandler() + }; + + HydraulicBoundaryLocation hydraulicBoundaryLocation = assessmentSection.HydraulicBoundaryDatabase.Locations[0]; + + // Precondition + int originalReturnPeriodValue = Convert.ToInt32(1.0/failureMechanismContribution.Norm); + Assert.AreEqual(originalReturnPeriodValue, properties.ReturnPeriod); + Assert.AreEqual(waveHeight, hydraulicBoundaryLocation.WaveHeight, hydraulicBoundaryLocation.WaveHeight.GetAccuracy()); + Assert.AreEqual(designWaterLevel, hydraulicBoundaryLocation.DesignWaterLevel, hydraulicBoundaryLocation.DesignWaterLevel.GetAccuracy()); + + DialogBoxHandler = (name, wnd) => + { + var dialogTester = new MessageBoxTester(wnd); + dialogTester.ClickOk(); + }; + + // Call + Action call = () => properties.ReturnPeriod = newReturnPeriod; + + // Assert + TestHelper.AssertLogMessageIsGenerated(call, messageAllHydraulicBoundaryLocationOutputCleared, 1); + + Assert.AreEqual(1.0/newReturnPeriod, failureMechanismContribution.Norm); + Assert.IsNaN(hydraulicBoundaryLocation.WaveHeight); + Assert.IsNaN(hydraulicBoundaryLocation.DesignWaterLevel); + + mockRepository.VerifyAll(); + } + + [Test] + public void ReturnPeriodProperty_HydraulicBoundaryLocationNoOutputAndCalculationWithOutputAndValueChanged_CalculationObserverNotifiedAndMessageLogged() + { + // Setup + const int newReturnPeriod = 200; + const int numberOfCalculations = 3; + + HydraulicBoundaryDatabase hydraulicBoundaryDatabase = new HydraulicBoundaryDatabase(); + hydraulicBoundaryDatabase.Locations.Add(new TestHydraulicBoundaryLocation()); + + AssessmentSection assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike) + { + HydraulicBoundaryDatabase = hydraulicBoundaryDatabase + }; + + PipingCalculation emptyPipingCalculation = new PipingCalculation(new GeneralPipingInput()); + PipingCalculation pipingCalculation = new PipingCalculation(new GeneralPipingInput()) + { + Output = new TestPipingOutput(), + SemiProbabilisticOutput = new TestPipingSemiProbabilisticOutput() + }; + GrassCoverErosionInwardsCalculation emptyGrassCoverErosionInwardsCalculation = new GrassCoverErosionInwardsCalculation(); + GrassCoverErosionInwardsCalculation grassCoverErosionInwardsCalculation = new GrassCoverErosionInwardsCalculation + { + Output = new GrassCoverErosionInwardsOutput(0, false, new ProbabilityAssessmentOutput(0, 0, 0, 0, 0), + new TestDikeHeightAssessmentOutput(0)) + }; + var emptyHeightStructuresCalculation = new StructuresCalculation(); + var heightStructuresCalculation = new StructuresCalculation + { + Output = new ProbabilityAssessmentOutput(0, 0, 0, 0, 0) + }; + + assessmentSection.PipingFailureMechanism.CalculationsGroup.Children.Add(emptyPipingCalculation); + assessmentSection.PipingFailureMechanism.CalculationsGroup.Children.Add(pipingCalculation); + assessmentSection.GrassCoverErosionInwards.CalculationsGroup.Children.Add(emptyGrassCoverErosionInwardsCalculation); + assessmentSection.GrassCoverErosionInwards.CalculationsGroup.Children.Add(grassCoverErosionInwardsCalculation); + assessmentSection.HeightStructures.CalculationsGroup.Children.Add(emptyHeightStructuresCalculation); + assessmentSection.HeightStructures.CalculationsGroup.Children.Add(heightStructuresCalculation); + + FailureMechanismContribution failureMechanismContribution = assessmentSection.FailureMechanismContribution; + + MockRepository mockRepository = new MockRepository(); + IObserver observerMock = mockRepository.StrictMock(); + observerMock.Expect(o => o.UpdateObserver()); + + IObserver pipingCalculationObserver = mockRepository.StrictMock(); + pipingCalculationObserver.Expect(o => o.UpdateObserver()); + IObserver grassCoverErosionInwardsCalculationObserver = mockRepository.StrictMock(); + grassCoverErosionInwardsCalculationObserver.Expect(o => o.UpdateObserver()); + IObserver heightStructuresCalculationObserver = mockRepository.StrictMock(); + heightStructuresCalculationObserver.Expect(o => o.UpdateObserver()); + IObserver emptyPipingCalculationObserver = mockRepository.StrictMock(); + IObserver emptyGrassCoverErosionInwardsCalculationObserver = mockRepository.StrictMock(); + IObserver emptyHeightStructuresCalculationObserver = mockRepository.StrictMock(); + + IObserver hydraulicBoundaryDatabaseObserver = mockRepository.StrictMock(); // No update observer expected. + mockRepository.ReplayAll(); + + failureMechanismContribution.Attach(observerMock); + hydraulicBoundaryDatabase.Attach(hydraulicBoundaryDatabaseObserver); + + emptyPipingCalculation.Attach(emptyPipingCalculationObserver); + emptyGrassCoverErosionInwardsCalculation.Attach(emptyGrassCoverErosionInwardsCalculationObserver); + emptyHeightStructuresCalculation.Attach(emptyHeightStructuresCalculationObserver); + + pipingCalculation.Attach(pipingCalculationObserver); + grassCoverErosionInwardsCalculation.Attach(grassCoverErosionInwardsCalculationObserver); + heightStructuresCalculation.Attach(heightStructuresCalculationObserver); + + var properties = new FailureMechanismContributionContextProperties() + { + Data = failureMechanismContribution, + AssessmentSection = assessmentSection, + NormChangeHandler = new FailureMechanismContributionNormChangeHandler() + }; + + // Precondition + int originalReturnPeriodValue = Convert.ToInt32(1.0/failureMechanismContribution.Norm); + Assert.AreEqual(originalReturnPeriodValue, properties.ReturnPeriod); + Assert.IsNotNull(pipingCalculation.Output); + Assert.IsNotNull(pipingCalculation.SemiProbabilisticOutput); + Assert.IsNotNull(grassCoverErosionInwardsCalculation.Output); + Assert.IsNotNull(heightStructuresCalculation.Output); + + DialogBoxHandler = (name, wnd) => + { + var dialogTester = new MessageBoxTester(wnd); + dialogTester.ClickOk(); + }; + + // Call + Action call = () => properties.ReturnPeriod = newReturnPeriod; + + // Assert + string expectedMessage = string.Format(messageCalculationsremoved, + numberOfCalculations); + TestHelper.AssertLogMessageIsGenerated(call, expectedMessage, 1); + + Assert.AreEqual(1.0/newReturnPeriod, failureMechanismContribution.Norm); + Assert.IsNull(pipingCalculation.Output); + Assert.IsNull(pipingCalculation.SemiProbabilisticOutput); + Assert.IsNull(grassCoverErosionInwardsCalculation.Output); + Assert.IsNull(heightStructuresCalculation.Output); + + mockRepository.VerifyAll(); + } + + [Test] + public void ReturnPeriodProperty_NoHydraulicBoundaryLocationNoOutputAndCalculationWithOutputAndValueChanged_CalculationObserverNotifiedAndMessageLogged() + { + // Setup + const int newReturnPeriod = 200; + const int numberOfCalculations = 3; + + AssessmentSection assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); + + PipingCalculation emptyPipingCalculation = new PipingCalculation(new GeneralPipingInput()); + PipingCalculation pipingCalculation = new PipingCalculation(new GeneralPipingInput()) + { + Output = new TestPipingOutput(), + SemiProbabilisticOutput = new TestPipingSemiProbabilisticOutput() + }; + GrassCoverErosionInwardsCalculation emptyGrassCoverErosionInwardsCalculation = new GrassCoverErosionInwardsCalculation(); + GrassCoverErosionInwardsCalculation grassCoverErosionInwardsCalculation = new GrassCoverErosionInwardsCalculation + { + Output = new GrassCoverErosionInwardsOutput(0, false, new ProbabilityAssessmentOutput(0, 0, 0, 0, 0), + new TestDikeHeightAssessmentOutput(0)) + }; + var emptyHeightStructuresCalculation = new StructuresCalculation(); + var heightStructuresCalculation = new StructuresCalculation + { + Output = new ProbabilityAssessmentOutput(0, 0, 0, 0, 0) + }; + + assessmentSection.PipingFailureMechanism.CalculationsGroup.Children.Add(emptyPipingCalculation); + assessmentSection.PipingFailureMechanism.CalculationsGroup.Children.Add(pipingCalculation); + assessmentSection.GrassCoverErosionInwards.CalculationsGroup.Children.Add(emptyGrassCoverErosionInwardsCalculation); + assessmentSection.GrassCoverErosionInwards.CalculationsGroup.Children.Add(grassCoverErosionInwardsCalculation); + assessmentSection.HeightStructures.CalculationsGroup.Children.Add(emptyHeightStructuresCalculation); + assessmentSection.HeightStructures.CalculationsGroup.Children.Add(heightStructuresCalculation); + + FailureMechanismContribution failureMechanismContribution = assessmentSection.FailureMechanismContribution; + + MockRepository mockRepository = new MockRepository(); + IObserver observerMock = mockRepository.StrictMock(); + observerMock.Expect(o => o.UpdateObserver()); + + IObserver pipingCalculationObserver = mockRepository.StrictMock(); + pipingCalculationObserver.Expect(o => o.UpdateObserver()); + IObserver grassCoverErosionInwardsCalculationObserver = mockRepository.StrictMock(); + grassCoverErosionInwardsCalculationObserver.Expect(o => o.UpdateObserver()); + IObserver heightStructuresCalculationObserver = mockRepository.StrictMock(); + heightStructuresCalculationObserver.Expect(o => o.UpdateObserver()); + IObserver emptyPipingCalculationObserver = mockRepository.StrictMock(); + IObserver emptyGrassCoverErosionInwardsCalculationObserver = mockRepository.StrictMock(); + IObserver emptyHeightStructuresCalculationObserver = mockRepository.StrictMock(); + + mockRepository.ReplayAll(); + + failureMechanismContribution.Attach(observerMock); + + emptyPipingCalculation.Attach(emptyPipingCalculationObserver); + emptyGrassCoverErosionInwardsCalculation.Attach(emptyGrassCoverErosionInwardsCalculationObserver); + emptyHeightStructuresCalculation.Attach(emptyHeightStructuresCalculationObserver); + + pipingCalculation.Attach(pipingCalculationObserver); + grassCoverErosionInwardsCalculation.Attach(grassCoverErosionInwardsCalculationObserver); + heightStructuresCalculation.Attach(heightStructuresCalculationObserver); + + var properties = new FailureMechanismContributionContextProperties() + { + Data = failureMechanismContribution, + AssessmentSection = assessmentSection, + NormChangeHandler = new FailureMechanismContributionNormChangeHandler() + }; + + // Precondition + int originalReturnPeriodValue = Convert.ToInt32(1.0/failureMechanismContribution.Norm); + Assert.AreEqual(originalReturnPeriodValue, properties.ReturnPeriod); + Assert.IsNotNull(pipingCalculation.Output); + Assert.IsNotNull(pipingCalculation.SemiProbabilisticOutput); + Assert.IsNotNull(grassCoverErosionInwardsCalculation.Output); + Assert.IsNotNull(heightStructuresCalculation.Output); + + DialogBoxHandler = (name, wnd) => + { + var dialogTester = new MessageBoxTester(wnd); + dialogTester.ClickOk(); + }; + + // Call + Action call = () => properties.ReturnPeriod = newReturnPeriod; + + // Assert + string expectedMessage = string.Format(messageCalculationsremoved, + numberOfCalculations); + TestHelper.AssertLogMessageIsGenerated(call, expectedMessage, 1); + + Assert.AreEqual(1.0/newReturnPeriod, failureMechanismContribution.Norm); + Assert.IsNull(pipingCalculation.Output); + Assert.IsNull(pipingCalculation.SemiProbabilisticOutput); + Assert.IsNull(grassCoverErosionInwardsCalculation.Output); + Assert.IsNull(heightStructuresCalculation.Output); + + mockRepository.VerifyAll(); + } + + [Test] + public void ReturnPeriodProperty_HydraulicBoundaryLocationNoOutputAndNoCalculationsWithOutputAndValueChanged_NoObserversNotifiedAndMessagesLogged() + { + // Setup + const int newReturnPeriod = 200; + + HydraulicBoundaryDatabase hydraulicBoundaryDatabase = new HydraulicBoundaryDatabase(); + hydraulicBoundaryDatabase.Locations.Add(new TestHydraulicBoundaryLocation()); + + AssessmentSection assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike) + { + HydraulicBoundaryDatabase = hydraulicBoundaryDatabase + }; + + PipingCalculation emptyPipingCalculation = new PipingCalculation(new GeneralPipingInput()); + GrassCoverErosionInwardsCalculation emptyGrassCoverErosionInwardsCalculation = new GrassCoverErosionInwardsCalculation(); + var emptyHeightStructuresCalculation = new StructuresCalculation(); + + 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(); + IObserver hydraulicBoundaryDatabaseObserver = mockRepository.StrictMock(); + mockRepository.ReplayAll(); + + failureMechanismContribution.Attach(observerMock); + emptyPipingCalculation.Attach(calculationObserver); + emptyGrassCoverErosionInwardsCalculation.Attach(calculationObserver); + emptyHeightStructuresCalculation.Attach(calculationObserver); + hydraulicBoundaryDatabase.Attach(hydraulicBoundaryDatabaseObserver); + + var properties = new FailureMechanismContributionContextProperties() + { + Data = failureMechanismContribution, + AssessmentSection = assessmentSection, + NormChangeHandler = new FailureMechanismContributionNormChangeHandler() + }; + + // Precondition + int originalReturnPeriodValue = Convert.ToInt32(1.0/failureMechanismContribution.Norm); + Assert.AreEqual(originalReturnPeriodValue, properties.ReturnPeriod); + + DialogBoxHandler = (name, wnd) => + { + var dialogTester = new MessageBoxTester(wnd); + dialogTester.ClickOk(); + }; + + // Call + Action call = () => properties.ReturnPeriod = newReturnPeriod; + + // Assert + TestHelper.AssertLogMessagesCount(call, 0); + Assert.AreEqual(1.0/newReturnPeriod, failureMechanismContribution.Norm); + + mockRepository.VerifyAll(); // No update observer expected. + } + + [Test] + public void ReturnPeriodProperty_NoHydraulicBoundaryDatabaseAndNoCalculationsWithOutputAndValueChanged_NoObserversNotifiedAndMessagesLogged() + { + // Setup + const int newReturnPeriod = 200; + + AssessmentSection assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); + + PipingCalculation emptyPipingCalculation = new PipingCalculation(new GeneralPipingInput()); + GrassCoverErosionInwardsCalculation emptyGrassCoverErosionInwardsCalculation = new GrassCoverErosionInwardsCalculation(); + var emptyHeightStructuresCalculation = new StructuresCalculation(); + + assessmentSection.PipingFailureMechanism.CalculationsGroup.Children.Add(emptyPipingCalculation); + assessmentSection.GrassCoverErosionInwards.CalculationsGroup.Children.Add(emptyGrassCoverErosionInwardsCalculation); + assessmentSection.HeightStructures.CalculationsGroup.Children.Add(emptyHeightStructuresCalculation); + + FailureMechanismContribution failureMechanismContribution = assessmentSection.FailureMechanismContribution; + + var properties = new FailureMechanismContributionContextProperties() + { + Data = failureMechanismContribution, + AssessmentSection = assessmentSection, + NormChangeHandler = new FailureMechanismContributionNormChangeHandler() + }; + + // Precondition + int originalReturnPeriodValue = Convert.ToInt32(1.0/failureMechanismContribution.Norm); + Assert.AreEqual(originalReturnPeriodValue, properties.ReturnPeriod); + + // Call + failureMechanismContribution.Norm = 1.0/newReturnPeriod; + Action call = () => failureMechanismContribution.NotifyObservers(); + + // Assert + TestHelper.AssertLogMessagesCount(call, 0); + Assert.AreEqual(1.0/newReturnPeriod, failureMechanismContribution.Norm); + } + } +} \ No newline at end of file Index: Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/FailureMechanismContributionViewIntegrationTest.cs =================================================================== diff -u -rd56bec747401ad6676fac64af5eef6d5fd89c47c -r65eb603f0c22966e05487433a9deb80e3041fc47 --- Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/FailureMechanismContributionViewIntegrationTest.cs (.../FailureMechanismContributionViewIntegrationTest.cs) (revision d56bec747401ad6676fac64af5eef6d5fd89c47c) +++ Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/FailureMechanismContributionViewIntegrationTest.cs (.../FailureMechanismContributionViewIntegrationTest.cs) (revision 65eb603f0c22966e05487433a9deb80e3041fc47) @@ -19,46 +19,23 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. -using System; using System.Collections.Generic; -using System.ComponentModel; -using System.Globalization; using System.Linq; using System.Windows.Forms; -using Core.Common.Base; -using Core.Common.Base.Data; using Core.Common.Gui.Commands; -using Core.Common.TestUtil; using NUnit.Extensions.Forms; using NUnit.Framework; using Rhino.Mocks; using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.Contribution; -using Ringtoets.Common.Data.Hydraulics; -using Ringtoets.Common.Data.Probability; -using Ringtoets.Common.Data.Structures; -using Ringtoets.Common.Data.TestUtil; -using Ringtoets.GrassCoverErosionInwards.Data; -using Ringtoets.GrassCoverErosionInwards.Data.TestUtil; -using Ringtoets.HeightStructures.Data; using Ringtoets.Integration.Data; using Ringtoets.Integration.Forms.Views; -using Ringtoets.Integration.Plugin.Handlers; -using Ringtoets.Piping.Data; -using Ringtoets.Piping.Data.TestUtil; -using Ringtoets.Piping.KernelWrapper.TestUtil; -namespace Ringtoets.Integration.Forms.Test +namespace Ringtoets.Integration.Forms.Test.Views { [TestFixture] - public class FailureMechanismContributionViewIntegrationTest : NUnitFormTest + public class FailureMechanismContributionViewIntegrationTest { - private const string messageAllHydraulicBoundaryLocationOutputCleared = - "Alle berekende resultaten voor alle hydraulische randvoorwaardenlocaties zijn verwijderd."; - - private const string messageCalculationsremoved = "De resultaten van {0} berekeningen zijn verwijderd."; - - private const string returnPeriodInputTextBoxName = "returnPeriodInput"; private const string dataGridViewControlName = "dataGridView"; private const string assessmentSectionCompositionComboBoxName = "assessmentSectionCompositionComboBox"; private const int isRelevantColumnIndex = 0; @@ -68,616 +45,13 @@ private const int probabilitySpaceColumnIndex = 4; [Test] - public void ReturnPeriodTextBox_ValueChanged_ClearsDependentDataAndNotifiesObserversAndLogsMessages() - { - // Setup - const int newReturnPeriod = 200; - const int numberOfCalculations = 3; - - var waveHeight = (RoundedDouble) 3.0; - var designWaterLevel = (RoundedDouble) 4.2; - - var hydraulicBoundaryLocation = new TestHydraulicBoundaryLocation(designWaterLevel, waveHeight); - var hydraulicBoundaryDatabase = new HydraulicBoundaryDatabase - { - Locations = - { - hydraulicBoundaryLocation - } - }; - - var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike) - { - HydraulicBoundaryDatabase = hydraulicBoundaryDatabase - }; - - var emptyPipingCalculation = new PipingCalculation(new GeneralPipingInput()); - var pipingCalculation = new PipingCalculation(new GeneralPipingInput()) - { - Output = new TestPipingOutput(), - SemiProbabilisticOutput = new TestPipingSemiProbabilisticOutput() - }; - var emptyGrassCoverErosionInwardsCalculation = new GrassCoverErosionInwardsCalculation(); - var grassCoverErosionInwardsCalculation = new GrassCoverErosionInwardsCalculation - { - Output = new GrassCoverErosionInwardsOutput(0, false, new ProbabilityAssessmentOutput(0, 0, 0, 0, 0), - new TestDikeHeightAssessmentOutput(0)) - }; - var emptyHeightStructuresCalculation = new StructuresCalculation(); - var heightStructuresCalculation = new StructuresCalculation - { - Output = new ProbabilityAssessmentOutput(0, 0, 0, 0, 0) - }; - - var grassCoverErosionOutwardsHydraulicBoundaryLocation = hydraulicBoundaryLocation; - grassCoverErosionOutwardsHydraulicBoundaryLocation.WaveHeightOutput = new TestHydraulicBoundaryLocationOutput( - waveHeight); - grassCoverErosionOutwardsHydraulicBoundaryLocation.DesignWaterLevelOutput = new TestHydraulicBoundaryLocationOutput( - designWaterLevel); - - assessmentSection.GrassCoverErosionOutwards.HydraulicBoundaryLocations.Add(grassCoverErosionOutwardsHydraulicBoundaryLocation); - - assessmentSection.PipingFailureMechanism.CalculationsGroup.Children.Add(emptyPipingCalculation); - assessmentSection.PipingFailureMechanism.CalculationsGroup.Children.Add(pipingCalculation); - assessmentSection.GrassCoverErosionInwards.CalculationsGroup.Children.Add(emptyGrassCoverErosionInwardsCalculation); - assessmentSection.GrassCoverErosionInwards.CalculationsGroup.Children.Add(grassCoverErosionInwardsCalculation); - assessmentSection.HeightStructures.CalculationsGroup.Children.Add(emptyHeightStructuresCalculation); - assessmentSection.HeightStructures.CalculationsGroup.Children.Add(heightStructuresCalculation); - - FailureMechanismContribution failureMechanismContribution = assessmentSection.FailureMechanismContribution; - - MockRepository mockRepository = new MockRepository(); - IObserver observerMock = mockRepository.StrictMock(); - observerMock.Expect(o => o.UpdateObserver()); - - IObserver pipingCalculationObserver = mockRepository.StrictMock(); - pipingCalculationObserver.Expect(o => o.UpdateObserver()); - IObserver grassCoverErosionInwardsCalculationObserver = mockRepository.StrictMock(); - grassCoverErosionInwardsCalculationObserver.Expect(o => o.UpdateObserver()); - IObserver heightStructuresCalculationObserver = mockRepository.StrictMock(); - heightStructuresCalculationObserver.Expect(o => o.UpdateObserver()); - IObserver emptyPipingCalculationObserver = mockRepository.StrictMock(); - IObserver emptyGrassCoverErosionInwardsCalculationObserver = mockRepository.StrictMock(); - IObserver emptyHeightStructuresCalculationObserver = mockRepository.StrictMock(); - - IObserver hydraulicBoundaryDatabaseObserver = mockRepository.StrictMock(); - hydraulicBoundaryDatabaseObserver.Expect(hbdo => hbdo.UpdateObserver()); - IObserver grassCoverErosionOutwardsObserver = mockRepository.StrictMock(); - grassCoverErosionOutwardsObserver.Expect(o => o.UpdateObserver()); - - var viewCommands = mockRepository.Stub(); - mockRepository.ReplayAll(); - - failureMechanismContribution.Attach(observerMock); - hydraulicBoundaryDatabase.Attach(hydraulicBoundaryDatabaseObserver); - - emptyPipingCalculation.Attach(emptyPipingCalculationObserver); - emptyGrassCoverErosionInwardsCalculation.Attach(emptyGrassCoverErosionInwardsCalculationObserver); - emptyHeightStructuresCalculation.Attach(emptyHeightStructuresCalculationObserver); - - pipingCalculation.Attach(pipingCalculationObserver); - grassCoverErosionInwardsCalculation.Attach(grassCoverErosionInwardsCalculationObserver); - heightStructuresCalculation.Attach(heightStructuresCalculationObserver); - - assessmentSection.GrassCoverErosionOutwards.HydraulicBoundaryLocations.Attach(grassCoverErosionOutwardsObserver); - - var normChangeHandler = new FailureMechanismContributionNormChangeHandler(); - var compositionChangeHandler = new AssessmentSectionCompositionChangeHandler(); - - using (var form = new Form()) - using (var distributionView = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands) - { - Data = failureMechanismContribution, - AssessmentSection = assessmentSection - }) - { - form.Controls.Add(distributionView); - form.Show(); - - var returnPeriodTester = new ControlTester(returnPeriodInputTextBoxName); - - // Precondition - int originalReturnPeriodValue = Convert.ToInt32(1.0/failureMechanismContribution.Norm); - Assert.AreEqual(originalReturnPeriodValue.ToString(), returnPeriodTester.Text); - Assert.AreEqual(waveHeight, hydraulicBoundaryLocation.WaveHeight, hydraulicBoundaryLocation.WaveHeight.GetAccuracy()); - Assert.AreEqual(designWaterLevel, hydraulicBoundaryLocation.DesignWaterLevel, hydraulicBoundaryLocation.DesignWaterLevel.GetAccuracy()); - Assert.AreEqual(waveHeight, grassCoverErosionOutwardsHydraulicBoundaryLocation.WaveHeight, grassCoverErosionOutwardsHydraulicBoundaryLocation.WaveHeight.GetAccuracy()); - Assert.AreEqual(designWaterLevel, grassCoverErosionOutwardsHydraulicBoundaryLocation.DesignWaterLevel, grassCoverErosionOutwardsHydraulicBoundaryLocation.DesignWaterLevel.GetAccuracy()); - - Assert.IsNotNull(pipingCalculation.Output); - Assert.IsNotNull(pipingCalculation.SemiProbabilisticOutput); - Assert.IsNotNull(grassCoverErosionInwardsCalculation.Output); - Assert.IsNotNull(heightStructuresCalculation.Output); - - DialogBoxHandler = (name, wnd) => - { - var dialogTester = new MessageBoxTester(wnd); - dialogTester.ClickOk(); - }; - - // Call - Action call = () => SimulateUserCommittingReturnPeriodValue(returnPeriodTester, newReturnPeriod); - - // Assert - TestHelper.AssertLogMessages(call, msgs => - { - string[] messages = msgs.ToArray(); - Assert.AreEqual(string.Format(messageCalculationsremoved, numberOfCalculations), messages[0]); - Assert.AreEqual(messageAllHydraulicBoundaryLocationOutputCleared, messages[1]); - }); - Assert.AreEqual(1.0/newReturnPeriod, failureMechanismContribution.Norm); - Assert.IsNaN(hydraulicBoundaryLocation.WaveHeight); - Assert.IsNaN(hydraulicBoundaryLocation.DesignWaterLevel); - Assert.IsNaN(grassCoverErosionOutwardsHydraulicBoundaryLocation.WaveHeight); - Assert.IsNaN(grassCoverErosionOutwardsHydraulicBoundaryLocation.DesignWaterLevel); - Assert.IsNull(pipingCalculation.Output); - Assert.IsNull(pipingCalculation.SemiProbabilisticOutput); - Assert.IsNull(grassCoverErosionInwardsCalculation.Output); - Assert.IsNull(heightStructuresCalculation.Output); - } - mockRepository.VerifyAll(); - } - - [Test] - public void ReturnPeriodTextBox_HydraulicBoundarySetAndCalculationsNoOutput_HydraulicBoundaryDatabaseObserversNotifiedAndMessagesLogged() - { - // Setup - const int newReturnPeriod = 200; - - var waveHeight = (RoundedDouble) 3.0; - var designWaterLevel = (RoundedDouble) 4.2; - HydraulicBoundaryDatabase hydraulicBoundaryDatabase = new HydraulicBoundaryDatabase(); - hydraulicBoundaryDatabase.Locations.Add(new TestHydraulicBoundaryLocation(designWaterLevel, waveHeight)); - - AssessmentSection assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike) - { - HydraulicBoundaryDatabase = hydraulicBoundaryDatabase - }; - - PipingCalculation emptyPipingCalculation = new PipingCalculation(new GeneralPipingInput()); - GrassCoverErosionInwardsCalculation emptyGrassCoverErosionInwardsCalculation = new GrassCoverErosionInwardsCalculation(); - var emptyHeightStructuresCalculation = new StructuresCalculation(); - - 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(); // No update observers expected. - IObserver hydraulicBoundaryDatabaseObserver = mockRepository.StrictMock(); - hydraulicBoundaryDatabaseObserver.Expect(hbdo => hbdo.UpdateObserver()); - - var viewCommands = mockRepository.Stub(); - mockRepository.ReplayAll(); - - failureMechanismContribution.Attach(observerMock); - hydraulicBoundaryDatabase.Attach(hydraulicBoundaryDatabaseObserver); - - emptyPipingCalculation.Attach(calculationObserver); - emptyGrassCoverErosionInwardsCalculation.Attach(calculationObserver); - emptyHeightStructuresCalculation.Attach(calculationObserver); - - var normChangeHandler = new FailureMechanismContributionNormChangeHandler(); - var compositionChangeHandler = new AssessmentSectionCompositionChangeHandler(); - - using (Form form = new Form()) - using (FailureMechanismContributionView distributionView = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands) - { - Data = failureMechanismContribution, - AssessmentSection = assessmentSection - }) - { - form.Controls.Add(distributionView); - form.Show(); - - ControlTester returnPeriodTester = new ControlTester(returnPeriodInputTextBoxName); - - HydraulicBoundaryLocation hydraulicBoundaryLocation = assessmentSection.HydraulicBoundaryDatabase.Locations[0]; - - // Precondition - int originalReturnPeriodValue = Convert.ToInt32(1.0/failureMechanismContribution.Norm); - Assert.AreEqual(originalReturnPeriodValue.ToString(CultureInfo.CurrentCulture), returnPeriodTester.Text); - Assert.AreEqual(waveHeight, hydraulicBoundaryLocation.WaveHeight, hydraulicBoundaryLocation.WaveHeight.GetAccuracy()); - Assert.AreEqual(designWaterLevel, hydraulicBoundaryLocation.DesignWaterLevel, hydraulicBoundaryLocation.DesignWaterLevel.GetAccuracy()); - - DialogBoxHandler = (name, wnd) => - { - var dialogTester = new MessageBoxTester(wnd); - dialogTester.ClickOk(); - }; - - // Call - Action call = () => SimulateUserCommittingReturnPeriodValue(returnPeriodTester, newReturnPeriod); - - // Assert - TestHelper.AssertLogMessageIsGenerated(call, messageAllHydraulicBoundaryLocationOutputCleared, 1); - - Assert.AreEqual(1.0/newReturnPeriod, failureMechanismContribution.Norm); - Assert.IsNaN(hydraulicBoundaryLocation.WaveHeight); - Assert.IsNaN(hydraulicBoundaryLocation.DesignWaterLevel); - } - mockRepository.VerifyAll(); - } - - [Test] - public void ReturnPeriodTextBox_HydraulicBoundaryLocationNoOutputAndCalculationWithOutputAndValueChanged_CalculationObserverNotifiedAndMessageLogged() - { - // Setup - const int newReturnPeriod = 200; - const int numberOfCalculations = 3; - - HydraulicBoundaryDatabase hydraulicBoundaryDatabase = new HydraulicBoundaryDatabase(); - hydraulicBoundaryDatabase.Locations.Add(new TestHydraulicBoundaryLocation()); - - AssessmentSection assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike) - { - HydraulicBoundaryDatabase = hydraulicBoundaryDatabase - }; - - PipingCalculation emptyPipingCalculation = new PipingCalculation(new GeneralPipingInput()); - PipingCalculation pipingCalculation = new PipingCalculation(new GeneralPipingInput()) - { - Output = new TestPipingOutput(), - SemiProbabilisticOutput = new TestPipingSemiProbabilisticOutput() - }; - GrassCoverErosionInwardsCalculation emptyGrassCoverErosionInwardsCalculation = new GrassCoverErosionInwardsCalculation(); - GrassCoverErosionInwardsCalculation grassCoverErosionInwardsCalculation = new GrassCoverErosionInwardsCalculation - { - Output = new GrassCoverErosionInwardsOutput(0, false, new ProbabilityAssessmentOutput(0, 0, 0, 0, 0), - new TestDikeHeightAssessmentOutput(0)) - }; - var emptyHeightStructuresCalculation = new StructuresCalculation(); - var heightStructuresCalculation = new StructuresCalculation - { - Output = new ProbabilityAssessmentOutput(0, 0, 0, 0, 0) - }; - - assessmentSection.PipingFailureMechanism.CalculationsGroup.Children.Add(emptyPipingCalculation); - assessmentSection.PipingFailureMechanism.CalculationsGroup.Children.Add(pipingCalculation); - assessmentSection.GrassCoverErosionInwards.CalculationsGroup.Children.Add(emptyGrassCoverErosionInwardsCalculation); - assessmentSection.GrassCoverErosionInwards.CalculationsGroup.Children.Add(grassCoverErosionInwardsCalculation); - assessmentSection.HeightStructures.CalculationsGroup.Children.Add(emptyHeightStructuresCalculation); - assessmentSection.HeightStructures.CalculationsGroup.Children.Add(heightStructuresCalculation); - - FailureMechanismContribution failureMechanismContribution = assessmentSection.FailureMechanismContribution; - - MockRepository mockRepository = new MockRepository(); - IObserver observerMock = mockRepository.StrictMock(); - observerMock.Expect(o => o.UpdateObserver()); - - IObserver pipingCalculationObserver = mockRepository.StrictMock(); - pipingCalculationObserver.Expect(o => o.UpdateObserver()); - IObserver grassCoverErosionInwardsCalculationObserver = mockRepository.StrictMock(); - grassCoverErosionInwardsCalculationObserver.Expect(o => o.UpdateObserver()); - IObserver heightStructuresCalculationObserver = mockRepository.StrictMock(); - heightStructuresCalculationObserver.Expect(o => o.UpdateObserver()); - IObserver emptyPipingCalculationObserver = mockRepository.StrictMock(); - IObserver emptyGrassCoverErosionInwardsCalculationObserver = mockRepository.StrictMock(); - IObserver emptyHeightStructuresCalculationObserver = mockRepository.StrictMock(); - - IObserver hydraulicBoundaryDatabaseObserver = mockRepository.StrictMock(); // No update observer expected. - - var viewCommands = mockRepository.Stub(); - mockRepository.ReplayAll(); - - failureMechanismContribution.Attach(observerMock); - hydraulicBoundaryDatabase.Attach(hydraulicBoundaryDatabaseObserver); - - emptyPipingCalculation.Attach(emptyPipingCalculationObserver); - emptyGrassCoverErosionInwardsCalculation.Attach(emptyGrassCoverErosionInwardsCalculationObserver); - emptyHeightStructuresCalculation.Attach(emptyHeightStructuresCalculationObserver); - - pipingCalculation.Attach(pipingCalculationObserver); - grassCoverErosionInwardsCalculation.Attach(grassCoverErosionInwardsCalculationObserver); - heightStructuresCalculation.Attach(heightStructuresCalculationObserver); - - var normChangeHandler = new FailureMechanismContributionNormChangeHandler(); - var compositionChangeHandler = new AssessmentSectionCompositionChangeHandler(); - - using (Form form = new Form()) - using (FailureMechanismContributionView distributionView = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands) - { - Data = failureMechanismContribution, - AssessmentSection = assessmentSection - }) - { - form.Controls.Add(distributionView); - form.Show(); - - ControlTester returnPeriodTester = new ControlTester(returnPeriodInputTextBoxName); - - // Precondition - int originalReturnPeriodValue = Convert.ToInt32(1.0/failureMechanismContribution.Norm); - Assert.AreEqual(originalReturnPeriodValue.ToString(CultureInfo.CurrentCulture), returnPeriodTester.Text); - Assert.IsNotNull(pipingCalculation.Output); - Assert.IsNotNull(pipingCalculation.SemiProbabilisticOutput); - Assert.IsNotNull(grassCoverErosionInwardsCalculation.Output); - Assert.IsNotNull(heightStructuresCalculation.Output); - - DialogBoxHandler = (name, wnd) => - { - var dialogTester = new MessageBoxTester(wnd); - dialogTester.ClickOk(); - }; - - // Call - Action call = () => SimulateUserCommittingReturnPeriodValue(returnPeriodTester, newReturnPeriod); - - // Assert - string expectedMessage = string.Format(messageCalculationsremoved, - numberOfCalculations); - TestHelper.AssertLogMessageIsGenerated(call, expectedMessage, 1); - - Assert.AreEqual(1.0/newReturnPeriod, failureMechanismContribution.Norm); - Assert.IsNull(pipingCalculation.Output); - Assert.IsNull(pipingCalculation.SemiProbabilisticOutput); - Assert.IsNull(grassCoverErosionInwardsCalculation.Output); - Assert.IsNull(heightStructuresCalculation.Output); - } - mockRepository.VerifyAll(); - } - - [Test] - public void ReturnPeriodTextBox_NoHydraulicBoundaryLocationNoOutputAndCalculationWithOutputAndValueChanged_CalculationObserverNotifiedAndMessageLogged() - { - // Setup - const int newReturnPeriod = 200; - const int numberOfCalculations = 3; - - AssessmentSection assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); - - PipingCalculation emptyPipingCalculation = new PipingCalculation(new GeneralPipingInput()); - PipingCalculation pipingCalculation = new PipingCalculation(new GeneralPipingInput()) - { - Output = new TestPipingOutput(), - SemiProbabilisticOutput = new TestPipingSemiProbabilisticOutput() - }; - GrassCoverErosionInwardsCalculation emptyGrassCoverErosionInwardsCalculation = new GrassCoverErosionInwardsCalculation(); - GrassCoverErosionInwardsCalculation grassCoverErosionInwardsCalculation = new GrassCoverErosionInwardsCalculation - { - Output = new GrassCoverErosionInwardsOutput(0, false, new ProbabilityAssessmentOutput(0, 0, 0, 0, 0), - new TestDikeHeightAssessmentOutput(0)) - }; - var emptyHeightStructuresCalculation = new StructuresCalculation(); - var heightStructuresCalculation = new StructuresCalculation - { - Output = new ProbabilityAssessmentOutput(0, 0, 0, 0, 0) - }; - - assessmentSection.PipingFailureMechanism.CalculationsGroup.Children.Add(emptyPipingCalculation); - assessmentSection.PipingFailureMechanism.CalculationsGroup.Children.Add(pipingCalculation); - assessmentSection.GrassCoverErosionInwards.CalculationsGroup.Children.Add(emptyGrassCoverErosionInwardsCalculation); - assessmentSection.GrassCoverErosionInwards.CalculationsGroup.Children.Add(grassCoverErosionInwardsCalculation); - assessmentSection.HeightStructures.CalculationsGroup.Children.Add(emptyHeightStructuresCalculation); - assessmentSection.HeightStructures.CalculationsGroup.Children.Add(heightStructuresCalculation); - - FailureMechanismContribution failureMechanismContribution = assessmentSection.FailureMechanismContribution; - - MockRepository mockRepository = new MockRepository(); - IObserver observerMock = mockRepository.StrictMock(); - observerMock.Expect(o => o.UpdateObserver()); - - IObserver pipingCalculationObserver = mockRepository.StrictMock(); - pipingCalculationObserver.Expect(o => o.UpdateObserver()); - IObserver grassCoverErosionInwardsCalculationObserver = mockRepository.StrictMock(); - grassCoverErosionInwardsCalculationObserver.Expect(o => o.UpdateObserver()); - IObserver heightStructuresCalculationObserver = mockRepository.StrictMock(); - heightStructuresCalculationObserver.Expect(o => o.UpdateObserver()); - IObserver emptyPipingCalculationObserver = mockRepository.StrictMock(); - IObserver emptyGrassCoverErosionInwardsCalculationObserver = mockRepository.StrictMock(); - IObserver emptyHeightStructuresCalculationObserver = mockRepository.StrictMock(); - - var viewCommands = mockRepository.Stub(); - mockRepository.ReplayAll(); - - failureMechanismContribution.Attach(observerMock); - - emptyPipingCalculation.Attach(emptyPipingCalculationObserver); - emptyGrassCoverErosionInwardsCalculation.Attach(emptyGrassCoverErosionInwardsCalculationObserver); - emptyHeightStructuresCalculation.Attach(emptyHeightStructuresCalculationObserver); - - pipingCalculation.Attach(pipingCalculationObserver); - grassCoverErosionInwardsCalculation.Attach(grassCoverErosionInwardsCalculationObserver); - heightStructuresCalculation.Attach(heightStructuresCalculationObserver); - - var normChangeHandler = new FailureMechanismContributionNormChangeHandler(); - var compositionChangeHandler = new AssessmentSectionCompositionChangeHandler(); - - using (Form form = new Form()) - using (FailureMechanismContributionView distributionView = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands) - { - Data = failureMechanismContribution, - AssessmentSection = assessmentSection - }) - { - form.Controls.Add(distributionView); - form.Show(); - - ControlTester returnPeriodTester = new ControlTester(returnPeriodInputTextBoxName); - - // Precondition - int originalReturnPeriodValue = Convert.ToInt32(1.0/failureMechanismContribution.Norm); - Assert.AreEqual(originalReturnPeriodValue.ToString(), returnPeriodTester.Text); - Assert.IsNotNull(pipingCalculation.Output); - Assert.IsNotNull(pipingCalculation.SemiProbabilisticOutput); - Assert.IsNotNull(grassCoverErosionInwardsCalculation.Output); - Assert.IsNotNull(heightStructuresCalculation.Output); - - DialogBoxHandler = (name, wnd) => - { - var dialogTester = new MessageBoxTester(wnd); - dialogTester.ClickOk(); - }; - - // Call - Action call = () => SimulateUserCommittingReturnPeriodValue(returnPeriodTester, newReturnPeriod); - - // Assert - string expectedMessage = string.Format(messageCalculationsremoved, - numberOfCalculations); - TestHelper.AssertLogMessageIsGenerated(call, expectedMessage, 1); - - Assert.AreEqual(1.0/newReturnPeriod, failureMechanismContribution.Norm); - Assert.IsNull(pipingCalculation.Output); - Assert.IsNull(pipingCalculation.SemiProbabilisticOutput); - Assert.IsNull(grassCoverErosionInwardsCalculation.Output); - Assert.IsNull(heightStructuresCalculation.Output); - } - mockRepository.VerifyAll(); - } - - [Test] - public void ReturnPeriodTextBox_HydraulicBoundaryLocationNoOutputAndNoCalculationsWithOutputAndValueChanged_NoObserversNotifiedAndMessagesLogged() - { - // Setup - const int newReturnPeriod = 200; - - HydraulicBoundaryDatabase hydraulicBoundaryDatabase = new HydraulicBoundaryDatabase(); - hydraulicBoundaryDatabase.Locations.Add(new TestHydraulicBoundaryLocation()); - - AssessmentSection assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike) - { - HydraulicBoundaryDatabase = hydraulicBoundaryDatabase - }; - - PipingCalculation emptyPipingCalculation = new PipingCalculation(new GeneralPipingInput()); - GrassCoverErosionInwardsCalculation emptyGrassCoverErosionInwardsCalculation = new GrassCoverErosionInwardsCalculation(); - var emptyHeightStructuresCalculation = new StructuresCalculation(); - - 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(); - IObserver hydraulicBoundaryDatabaseObserver = mockRepository.StrictMock(); - - var viewCommands = mockRepository.Stub(); - mockRepository.ReplayAll(); - - failureMechanismContribution.Attach(observerMock); - emptyPipingCalculation.Attach(calculationObserver); - emptyGrassCoverErosionInwardsCalculation.Attach(calculationObserver); - emptyHeightStructuresCalculation.Attach(calculationObserver); - hydraulicBoundaryDatabase.Attach(hydraulicBoundaryDatabaseObserver); - - var normChangeHandler = new FailureMechanismContributionNormChangeHandler(); - var compositionChangeHandler = new AssessmentSectionCompositionChangeHandler(); - - using (Form form = new Form()) - using (FailureMechanismContributionView distributionView = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands) - { - Data = failureMechanismContribution, - AssessmentSection = assessmentSection - }) - { - form.Controls.Add(distributionView); - form.Show(); - - ControlTester normTester = new ControlTester(returnPeriodInputTextBoxName); - - // Precondition - int originalReturnPeriodValue = Convert.ToInt32(1.0/failureMechanismContribution.Norm); - Assert.AreEqual(originalReturnPeriodValue.ToString(CultureInfo.CurrentCulture), normTester.Text); - - DialogBoxHandler = (name, wnd) => - { - var dialogTester = new MessageBoxTester(wnd); - dialogTester.ClickOk(); - }; - - // Call - Action call = () => SimulateUserCommittingReturnPeriodValue(normTester, newReturnPeriod); - - // Assert - TestHelper.AssertLogMessagesCount(call, 0); - Assert.AreEqual(1.0/newReturnPeriod, failureMechanismContribution.Norm); - } - mockRepository.VerifyAll(); // No update observer expected. - } - - [Test] - public void ReturnPeriodTextBox_NoHydraulicBoundaryDatabaseAndNoCalculationsWithOutputAndValueChanged_NoObserversNotifiedAndMessagesLogged() - { - // Setup - const int newReturnPeriod = 200; - - AssessmentSection assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); - - PipingCalculation emptyPipingCalculation = new PipingCalculation(new GeneralPipingInput()); - GrassCoverErosionInwardsCalculation emptyGrassCoverErosionInwardsCalculation = new GrassCoverErosionInwardsCalculation(); - var emptyHeightStructuresCalculation = new StructuresCalculation(); - - 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(); - - var viewCommands = mockRepository.Stub(); - mockRepository.ReplayAll(); - - failureMechanismContribution.Attach(observerMock); - emptyPipingCalculation.Attach(calculationObserver); - emptyGrassCoverErosionInwardsCalculation.Attach(calculationObserver); - emptyHeightStructuresCalculation.Attach(calculationObserver); - - var normChangeHandler = new FailureMechanismContributionNormChangeHandler(); - var compositionChangeHandler = new AssessmentSectionCompositionChangeHandler(); - - using (Form form = new Form()) - using (FailureMechanismContributionView distributionView = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands) - { - Data = failureMechanismContribution, - AssessmentSection = assessmentSection - }) - { - form.Controls.Add(distributionView); - form.Show(); - - ControlTester returnPeriodTester = new ControlTester(returnPeriodInputTextBoxName); - - // Precondition - int originalReturnPeriodValue = Convert.ToInt32(1.0/failureMechanismContribution.Norm); - Assert.AreEqual(originalReturnPeriodValue.ToString(), returnPeriodTester.Text); - - DialogBoxHandler = (name, wnd) => - { - var dialogTester = new MessageBoxTester(wnd); - dialogTester.ClickOk(); - }; - - // Call - Action call = () => SimulateUserCommittingReturnPeriodValue(returnPeriodTester, newReturnPeriod); - - // Assert - TestHelper.AssertLogMessagesCount(call, 0); - Assert.AreEqual(1.0/newReturnPeriod, failureMechanismContribution.Norm); - } - mockRepository.VerifyAll(); // No update observer expected. - } - - [Test] [TestCase(AssessmentSectionComposition.Dike, AssessmentSectionComposition.Dune)] [TestCase(AssessmentSectionComposition.Dike, AssessmentSectionComposition.DikeAndDune)] [TestCase(AssessmentSectionComposition.Dune, AssessmentSectionComposition.Dike)] [TestCase(AssessmentSectionComposition.Dune, AssessmentSectionComposition.DikeAndDune)] [TestCase(AssessmentSectionComposition.DikeAndDune, AssessmentSectionComposition.Dike)] [TestCase(AssessmentSectionComposition.DikeAndDune, AssessmentSectionComposition.Dune)] - public void GivenViewWithAssessmentSection_WhenChangingCompositionComboBoxAndOk_ThenUpdateAssessmentSectionContributionAndView( + public void GivenViewWithAssessmentSection_WhenChangingCompositionAndNotify_ThenUpdateAssessmentSectionContributionAndView( AssessmentSectionComposition initialComposition, AssessmentSectionComposition newComposition) { @@ -688,11 +62,8 @@ var assessmentSection = new AssessmentSection(initialComposition); - var normChangeHandler = new FailureMechanismContributionNormChangeHandler(); - var compositionChangeHandler = new AssessmentSectionCompositionChangeHandler(); - using (var form = new Form()) - using (var view = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands) + using (var view = new FailureMechanismContributionView(viewCommands) { Data = assessmentSection.FailureMechanismContribution, AssessmentSection = assessmentSection @@ -705,20 +76,15 @@ Assert.AreNotEqual(assessmentSection.Composition, newComposition); bool dataGridInvalidated = false; - var contributionGridView = (DataGridView) new ControlTester(dataGridViewControlName).TheObject; + var contributionGridView = (DataGridView)new ControlTester(dataGridViewControlName).TheObject; contributionGridView.Invalidated += (sender, args) => dataGridInvalidated = true; - var compositionComboBox = (ComboBox) new ControlTester(assessmentSectionCompositionComboBoxName).TheObject; - // When - DialogBoxHandler = (name, wnd) => - { - var tester = new MessageBoxTester(wnd); - tester.ClickOk(); - }; - ControlsTestHelper.FakeUserSelectingNewValue(compositionComboBox, newComposition); + assessmentSection.ChangeComposition(newComposition); + assessmentSection.FailureMechanismContribution.NotifyObservers(); // Then + var compositionComboBox = (ComboBox)new ControlTester(assessmentSectionCompositionComboBoxName).TheObject; Assert.AreEqual(newComposition, compositionComboBox.SelectedValue); Assert.IsTrue(dataGridInvalidated, @@ -743,17 +109,5 @@ Assert.AreEqual(expectedElement.ProbabilitySpace, row.Cells[probabilitySpaceColumnIndex].Value); } } - - private static void SimulateUserCommittingReturnPeriodValue(ControlTester returnPeriodTester, int returnPeriod) - { - var returnPeriodInput = (NumericUpDown) returnPeriodTester.TheObject; - returnPeriodInput.Value = returnPeriod; - var eventArgs = new CancelEventArgs(); - EventHelper.RaiseEvent(returnPeriodTester.TheObject, "Validating", eventArgs); - if (!eventArgs.Cancel) - { - returnPeriodTester.FireEvent("Validated"); - } - } } -} \ No newline at end of file +} Index: Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Ringtoets.Integration.Forms.Test.csproj =================================================================== diff -u -rd56bec747401ad6676fac64af5eef6d5fd89c47c -r65eb603f0c22966e05487433a9deb80e3041fc47 --- Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Ringtoets.Integration.Forms.Test.csproj (.../Ringtoets.Integration.Forms.Test.csproj) (revision d56bec747401ad6676fac64af5eef6d5fd89c47c) +++ Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Ringtoets.Integration.Forms.Test.csproj (.../Ringtoets.Integration.Forms.Test.csproj) (revision 65eb603f0c22966e05487433a9deb80e3041fc47) @@ -72,7 +72,7 @@ - + @@ -125,6 +125,7 @@ + Index: Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Views/FailureMechanismContributionViewTest.cs =================================================================== diff -u -r4fda2f3f6be17051ed305f0ea2d1b15fa87fc55f -r65eb603f0c22966e05487433a9deb80e3041fc47 --- Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Views/FailureMechanismContributionViewTest.cs (.../FailureMechanismContributionViewTest.cs) (revision 4fda2f3f6be17051ed305f0ea2d1b15fa87fc55f) +++ Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Views/FailureMechanismContributionViewTest.cs (.../FailureMechanismContributionViewTest.cs) (revision 65eb603f0c22966e05487433a9deb80e3041fc47) @@ -21,15 +21,13 @@ using System; using System.Collections.Generic; -using System.ComponentModel; using System.Drawing; using System.Globalization; using System.Linq; using System.Windows.Forms; using Core.Common.Base; using Core.Common.Controls.DataGrid; using Core.Common.Gui.Commands; -using Core.Common.TestUtil; using NUnit.Extensions.Forms; using NUnit.Framework; using Rhino.Mocks; @@ -71,54 +69,14 @@ } [Test] - public void Constructor_NormChangeHandlerNull_ThrowArgumentNullException() - { - // Setup - var mocks = new MockRepository(); - var compositionChangeHandler = mocks.Stub(); - var viewCommands = mocks.Stub(); - mocks.ReplayAll(); - - // Call - TestDelegate call = () => new FailureMechanismContributionView(null, compositionChangeHandler, viewCommands); - - // Assert - string paramName = Assert.Throws(call).ParamName; - Assert.AreEqual("normChangeHandler", paramName); - - mocks.VerifyAll(); - } - - [Test] - public void Constructor_CompositionChangeHandlerNull_ThrowArgumentNullException() - { - // Setup - var mocks = new MockRepository(); - var normChangeHandler = mocks.Stub(); - var viewCommands = mocks.Stub(); - mocks.ReplayAll(); - - // Call - TestDelegate call = () => new FailureMechanismContributionView(normChangeHandler, null, viewCommands); - - // Assert - string paramName = Assert.Throws(call).ParamName; - Assert.AreEqual("compositionChangeHandler", paramName); - - mocks.VerifyAll(); - } - - [Test] public void Constructor_ViewCommandsNull_ThrowArgumentNullException() { // Setup var mocks = new MockRepository(); - var normChangeHandler = mocks.Stub(); - var compositionChangeHandler = mocks.Stub(); mocks.ReplayAll(); // Call - TestDelegate call = () => new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, null); + TestDelegate call = () => new FailureMechanismContributionView(null); // Assert string paramName = Assert.Throws(call).ParamName; @@ -132,13 +90,11 @@ { // Setup var mocks = new MockRepository(); - var normChangeHandler = mocks.Stub(); - var compositionChangeHandler = mocks.Stub(); var viewCommands = mocks.Stub(); mocks.ReplayAll(); // Call - using (var contributionView = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands)) + using (var contributionView = new FailureMechanismContributionView(viewCommands)) { ShowFormWithView(contributionView); @@ -164,16 +120,14 @@ { // Setup var mocks = new MockRepository(); - var normChangeHandler = mocks.Stub(); - var compositionChangeHandler = mocks.Stub(); var viewCommands = mocks.Stub(); mocks.ReplayAll(); AssessmentSection assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); FailureMechanismContribution failureMechanismContribution = assessmentSection.FailureMechanismContribution; // Call - using (var contributionView = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands) + using (var contributionView = new FailureMechanismContributionView(viewCommands) { Data = failureMechanismContribution, AssessmentSection = assessmentSection @@ -196,105 +150,14 @@ } [Test] - public void ReturnPeriodTextBox_ValueChangedAndUserConfirmsChange_UpdatesDataWithNewValue() - { - // Setup - const int returnPeriod = 200; - const double norm = 1.0/returnPeriod; - - AssessmentSection assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); - FailureMechanismContribution failureMechanismContribution = assessmentSection.FailureMechanismContribution; - int initialReturnPeriod = Convert.ToInt32(1.0/failureMechanismContribution.Norm); - - MockRepository mockRepository = new MockRepository(); - var observable1 = mockRepository.StrictMock(); - observable1.Expect(o => o.NotifyObservers()); - var observable2 = mockRepository.StrictMock(); - observable2.Expect(o => o.NotifyObservers()); - - var normChangeHandler = mockRepository.StrictMock(); - normChangeHandler.Expect(h => h.ConfirmNormChange()).Return(true); - normChangeHandler.Expect(h => h.ChangeNorm(assessmentSection, norm)) - .Return(new[] - { - observable1, - observable2 - }); - var compositionChangeHandler = mockRepository.Stub(); - var viewCommands = mockRepository.Stub(); - mockRepository.ReplayAll(); - - using (FailureMechanismContributionView distributionView = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands) - { - Data = failureMechanismContribution, - AssessmentSection = assessmentSection - }) - { - ShowFormWithView(distributionView); - ControlTester returnPeriodTester = new ControlTester(returnPeriodInputTextBoxName); - - // Precondition - Assert.AreEqual(initialReturnPeriod.ToString(CultureInfo.CurrentCulture), returnPeriodTester.Text); - - // Call - SimulateUserCommittingReturnPeriodValue(returnPeriodTester, returnPeriod); - } - // Assert - mockRepository.VerifyAll(); - } - - [Test] - public void ReturnPeriodTextBox_ValueChangedAndUserDisallowsChange_NothingHappens() - { - // Setup - const int newReturnPeriod = 200; - - AssessmentSection assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); - FailureMechanismContribution failureMechanismContribution = assessmentSection.FailureMechanismContribution; - int initialReturnPeriod = Convert.ToInt32(1.0/failureMechanismContribution.Norm); - - MockRepository mockRepository = new MockRepository(); - var normChangeHandler = mockRepository.StrictMock(); - normChangeHandler.Expect(h => h.ConfirmNormChange()).Return(false); - normChangeHandler.Expect(h => h.ChangeNorm(assessmentSection, newReturnPeriod)) - .Return(Enumerable.Empty()) - .Repeat.Never(); - var compositionChangeHandler = mockRepository.Stub(); - var viewCommands = mockRepository.Stub(); - mockRepository.ReplayAll(); - - using (FailureMechanismContributionView distributionView = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands) - { - Data = failureMechanismContribution, - AssessmentSection = assessmentSection - }) - { - ShowFormWithView(distributionView); - ControlTester returnPeriodTester = new ControlTester(returnPeriodInputTextBoxName); - - // Precondition - Assert.AreEqual(initialReturnPeriod.ToString(CultureInfo.CurrentCulture), returnPeriodTester.Text); - - // Call - SimulateUserCommittingReturnPeriodValue(returnPeriodTester, newReturnPeriod); - - // Assert - Assert.AreEqual(initialReturnPeriod.ToString(CultureInfo.CurrentCulture), returnPeriodTester.Properties.Text); - } - mockRepository.VerifyAll(); - } - - [Test] public void Data_Always_CorrectHeaders() { // Setup var mocks = new MockRepository(); - var normChangeHandler = mocks.Stub(); - var compositionChangeHandler = mocks.Stub(); var viewCommands = mocks.Stub(); mocks.ReplayAll(); - using (var distributionView = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands)) + using (var distributionView = new FailureMechanismContributionView(viewCommands)) { // Call ShowFormWithView(distributionView); @@ -334,8 +197,6 @@ double testContribution = 100 - otherContribution; var mockRepository = new MockRepository(); - var normChangeHandler = mockRepository.Stub(); - var compositionChangeHandler = mockRepository.Stub(); var viewCommands = mockRepository.Stub(); var someMechanism = mockRepository.StrictMock(testName, testCode); @@ -348,7 +209,7 @@ someMechanism }, otherContribution, 0.01); - using (var distributionView = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands) + using (var distributionView = new FailureMechanismContributionView(viewCommands) { AssessmentSection = assessmentSection }) @@ -387,8 +248,6 @@ var assessmentSection2 = new AssessmentSection(AssessmentSectionComposition.Dike); var mockRepository = new MockRepository(); - var normChangeHandler = mockRepository.Stub(); - var compositionChangeHandler = mockRepository.Stub(); var viewCommands = mockRepository.Stub(); var someMechanism = mockRepository.Stub(); mockRepository.ReplayAll(); @@ -402,7 +261,7 @@ someMechanism }, random.Next(0, 100), 1.0/newReturnPeriod); - using (var distributionView = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands) + using (var distributionView = new FailureMechanismContributionView(viewCommands) { Data = initialContribution, AssessmentSection = assessmentSection1 @@ -436,8 +295,6 @@ var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); var mockRepository = new MockRepository(); - var normChangeHandler = mockRepository.Stub(); - var compositionChangeHandler = mockRepository.Stub(); var viewCommands = mockRepository.Stub(); var someMechanism = mockRepository.Stub(); mockRepository.ReplayAll(); @@ -447,7 +304,7 @@ someMechanism }, random.Next(0, 100), 1.0/initialReturnPeriod); - using (var distributionView = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands) + using (var distributionView = new FailureMechanismContributionView(viewCommands) { Data = contribution, AssessmentSection = assessmentSection @@ -479,8 +336,6 @@ var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); var mockRepository = new MockRepository(); - var normChangeHandler = mockRepository.Stub(); - var compositionChangeHandler = mockRepository.Stub(); var viewCommands = mockRepository.Stub(); var failureMechanismStub = mockRepository.Stub(); failureMechanismStub.Stub(fm => fm.Name).Return("A"); @@ -489,7 +344,7 @@ failureMechanismStub.IsRelevant = isFailureMechanismRelevant; mockRepository.ReplayAll(); - using (var view = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands)) + using (var view = new FailureMechanismContributionView(viewCommands)) { // When var contributionData = new FailureMechanismContribution(new[] @@ -518,16 +373,14 @@ var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); var mockRepository = new MockRepository(); - var normChangeHandler = mockRepository.Stub(); - var compositionChangeHandler = mockRepository.Stub(); var viewCommands = mockRepository.Stub(); var failureMechanismStub = mockRepository.Stub(); failureMechanismStub.Stub(fm => fm.Name).Return("A"); failureMechanismStub.Stub(fm => fm.Code).Return("C"); failureMechanismStub.Contribution = 0; mockRepository.ReplayAll(); - using (var view = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands)) + using (var view = new FailureMechanismContributionView(viewCommands)) { // When var contributionData = new FailureMechanismContribution(new[] @@ -559,16 +412,14 @@ var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); var mockRepository = new MockRepository(); - var normChangeHandler = mockRepository.Stub(); - var compositionChangeHandler = mockRepository.Stub(); var viewCommands = mockRepository.Stub(); var failureMechanismStub = mockRepository.Stub(); failureMechanismStub.Stub(fm => fm.Name).Return("A"); failureMechanismStub.Stub(fm => fm.Code).Return("C"); failureMechanismStub.Contribution = contribution; mockRepository.ReplayAll(); - using (var view = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands)) + using (var view = new FailureMechanismContributionView(viewCommands)) { // When var contributionData = new FailureMechanismContribution(new[] @@ -602,12 +453,10 @@ { // Setup var mocks = new MockRepository(); - var normChangeHandler = mocks.Stub(); - var compositionChangeHandler = mocks.Stub(); var viewCommands = mocks.Stub(); mocks.ReplayAll(); - using (var view = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands)) + using (var view = new FailureMechanismContributionView(viewCommands)) { ShowFormWithView(view); @@ -633,31 +482,18 @@ [TestCase(AssessmentSectionComposition.Dune, AssessmentSectionComposition.DikeAndDune)] [TestCase(AssessmentSectionComposition.DikeAndDune, AssessmentSectionComposition.Dike)] [TestCase(AssessmentSectionComposition.DikeAndDune, AssessmentSectionComposition.Dune)] - public void CompositionComboBox_ChangeCompositionAndOk_ChangeCompositionAndNotifyAffectedObjects(AssessmentSectionComposition initialComposition, AssessmentSectionComposition newComposition) + public void UpdateObserver_ChangeAssessmentSectionCompositionAndNotify_ChangeCompositionComboBoxItem( + AssessmentSectionComposition initialComposition, + AssessmentSectionComposition newComposition) { - // Setup + // Given var assessmentSection = new AssessmentSection(initialComposition); var mocks = new MockRepository(); - var observable1 = mocks.StrictMock(); - observable1.Expect(o => o.NotifyObservers()); - var observable2 = mocks.StrictMock(); - observable2.Expect(o => o.NotifyObservers()); - - var normChangeHandler = mocks.Stub(); - var compositionChangeHandler = mocks.StrictMock(); - compositionChangeHandler.Expect(h => h.ConfirmCompositionChange()) - .Return(true); - compositionChangeHandler.Expect(h => h.ChangeComposition(assessmentSection, newComposition)) - .Return(new[] - { - observable1, - observable2 - }); var viewCommands = mocks.Stub(); mocks.ReplayAll(); - using (var view = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands) + using (var view = new FailureMechanismContributionView(viewCommands) { Data = assessmentSection.FailureMechanismContribution, AssessmentSection = assessmentSection @@ -668,77 +504,28 @@ // Precondition Assert.AreNotEqual(assessmentSection.Composition, newComposition); - var compositionComboBox = (ComboBox) new ControlTester(assessmentSectionCompositionComboBoxName).TheObject; - // Call - ControlsTestHelper.FakeUserSelectingNewValue(compositionComboBox, newComposition); + assessmentSection.ChangeComposition(newComposition); + assessmentSection.FailureMechanismContribution.NotifyObservers(); // Assert + var compositionComboBox = (ComboBox) new ControlTester(assessmentSectionCompositionComboBoxName).TheObject; Assert.AreEqual(newComposition, compositionComboBox.SelectedValue); } mocks.VerifyAll(); } [Test] - [TestCase(AssessmentSectionComposition.Dike, AssessmentSectionComposition.Dune)] - [TestCase(AssessmentSectionComposition.Dike, AssessmentSectionComposition.DikeAndDune)] - [TestCase(AssessmentSectionComposition.Dune, AssessmentSectionComposition.Dike)] - [TestCase(AssessmentSectionComposition.Dune, AssessmentSectionComposition.DikeAndDune)] - [TestCase(AssessmentSectionComposition.DikeAndDune, AssessmentSectionComposition.Dike)] - [TestCase(AssessmentSectionComposition.DikeAndDune, AssessmentSectionComposition.Dune)] - public void CompositionComboBox_ChangeCompositionAndCancel_ComboBoxStillAtOriginalValue(AssessmentSectionComposition initialComposition, AssessmentSectionComposition newComposition) - { - // Setup - var assessmentSection = new AssessmentSection(initialComposition); - - var mocks = new MockRepository(); - var normChangeHandler = mocks.Stub(); - var compositionChangeHandler = mocks.StrictMock(); - compositionChangeHandler.Expect(h => h.ConfirmCompositionChange()) - .Return(false); - compositionChangeHandler.Expect(h => h.ChangeComposition(null, AssessmentSectionComposition.Dike)) - .IgnoreArguments() - .Return(new IObservable[0]) - .Repeat.Never(); - var viewCommands = mocks.Stub(); - mocks.ReplayAll(); - - using (var view = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands) - { - Data = assessmentSection.FailureMechanismContribution, - AssessmentSection = assessmentSection - }) - { - ShowFormWithView(view); - - // Precondition - Assert.AreNotEqual(assessmentSection.Composition, newComposition); - - var compositionComboBox = (ComboBox) new ControlTester(assessmentSectionCompositionComboBoxName).TheObject; - - // Call - ControlsTestHelper.FakeUserSelectingNewValue(compositionComboBox, newComposition); - - // Assert - Assert.AreEqual(initialComposition, compositionComboBox.SelectedValue, - "The ComboBox should be reset to the original composition value, as change was not accepted by user."); - } - mocks.VerifyAll(); - } - - [Test] public void GivenView_WhenSettingRelevantFailureMechanism_RowIsStylesAsEnabled() { // Given var mocks = new MockRepository(); - var normChangeHandler = mocks.Stub(); - var compositionChangeHandler = mocks.Stub(); var viewCommands = mocks.Stub(); var failureMechanism = mocks.Stub(); failureMechanism.IsRelevant = true; mocks.ReplayAll(); - using (var view = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands)) + using (var view = new FailureMechanismContributionView(viewCommands)) { ShowFormWithView(view); @@ -775,14 +562,12 @@ { // Given var mocks = new MockRepository(); - var normChangeHandler = mocks.Stub(); - var compositionChangeHandler = mocks.Stub(); var viewCommands = mocks.Stub(); var failureMechanism = mocks.Stub(); failureMechanism.IsRelevant = false; mocks.ReplayAll(); - using (var view = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands)) + using (var view = new FailureMechanismContributionView(viewCommands)) { ShowFormWithView(view); @@ -822,8 +607,6 @@ // Given List failureMechanismObservers = new List(); var mocks = new MockRepository(); - var normChangeHandler = mocks.Stub(); - var compositionChangeHandler = mocks.Stub(); var viewCommands = mocks.Stub(); var failureMechanism = mocks.Stub(); failureMechanism.Stub(fm => fm.Name).Return("A"); @@ -848,7 +631,7 @@ assessmentSection.Stub(section => section.Composition).Return(AssessmentSectionComposition.Dike); mocks.ReplayAll(); - using (var view = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands)) + using (var view = new FailureMechanismContributionView(viewCommands)) { ShowFormWithView(view); @@ -905,8 +688,6 @@ { // Given var mocks = new MockRepository(); - var normChangeHandler = mocks.Stub(); - var compositionChangeHandler = mocks.Stub(); var failureMechanism = mocks.Stub(); failureMechanism.Stub(fm => fm.Name).Return("A"); failureMechanism.Stub(fm => fm.Code).Return("b"); @@ -922,7 +703,7 @@ }; var contribution = new FailureMechanismContribution(failureMechanisms, 50.0, 1.0/30000); - using (var view = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands)) + using (var view = new FailureMechanismContributionView(viewCommands)) { ShowFormWithView(view); @@ -945,12 +726,10 @@ { // Given var mocks = new MockRepository(); - var normChangeHandler = mocks.Stub(); - var compositionChangeHandler = mocks.Stub(); var viewCommands = mocks.Stub(); mocks.ReplayAll(); - using (var view = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands)) + using (var view = new FailureMechanismContributionView(viewCommands)) { ShowFormWithView(view); @@ -976,112 +755,6 @@ mocks.VerifyAll(); } - [Test] - public void GivenView_WhenEscapeAfterEnteringDifferentNormNotCommited_RevertNormAndNoChangedToData() - { - // Given - var mocks = new MockRepository(); - var normChangeHandler = mocks.Stub(); - normChangeHandler.Stub(h => h.ChangeNorm(null, 1)) - .IgnoreArguments() - .Return(Enumerable.Empty()); - var compositionChangeHandler = mocks.Stub(); - var viewCommands = mocks.Stub(); - mocks.ReplayAll(); - - AssessmentSection assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); - FailureMechanismContribution failureMechanismContribution = assessmentSection.FailureMechanismContribution; - - const int returnPeriod = 200; - int originalReturnPeriodValue = Convert.ToInt32(1.0/failureMechanismContribution.Norm); - - using (var view = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands) - { - Data = failureMechanismContribution, - AssessmentSection = assessmentSection - }) - { - ShowFormWithView(view); - ControlTester normTester = new ControlTester(returnPeriodInputTextBoxName); - - // When - var normInput = (NumericUpDown) normTester.TheObject; - view.ActiveControl = normInput; - normInput.Value = returnPeriod; - var keyEventArgs = new KeyEventArgs(Keys.Escape); - EventHelper.RaiseEvent(normInput.Controls.OfType().First(), "KeyDown", keyEventArgs); - - // Then - Assert.IsTrue(keyEventArgs.Handled); - Assert.IsTrue(keyEventArgs.SuppressKeyPress); - - Assert.AreEqual(originalReturnPeriodValue, normInput.Value); - Assert.AreEqual(originalReturnPeriodValue, normInput.Value); - Assert.AreNotSame(normInput, view.ActiveControl); - } - mocks.VerifyAll(); - } - - [Test] - public void GivenView_WhenEnterAfterEnteringDifferentReturnPeriodNotCommitted_CommitValueAndChangeData() - { - // Given - const int returnPeriod = 200; - const double norm = 1.0/returnPeriod; - - AssessmentSection assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); - FailureMechanismContribution failureMechanismContribution = assessmentSection.FailureMechanismContribution; - - var mocks = new MockRepository(); - var normChangeHandler = mocks.StrictMock(); - normChangeHandler.Expect(h => h.ConfirmNormChange()) - .Return(true); - normChangeHandler.Expect(h => h.ChangeNorm(assessmentSection, norm)) - .Return(Enumerable.Empty()); - var compositionChangeHandler = mocks.Stub(); - compositionChangeHandler.Stub(h => h.ConfirmCompositionChange()) - .Return(false); - var viewCommands = mocks.Stub(); - mocks.ReplayAll(); - - using (var view = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands) - { - Data = failureMechanismContribution, - AssessmentSection = assessmentSection - }) - { - ShowFormWithView(view); - ControlTester normTester = new ControlTester(returnPeriodInputTextBoxName); - - // When - var returnPeriodInput = (NumericUpDown) normTester.TheObject; - view.ActiveControl = returnPeriodInput; - returnPeriodInput.Value = returnPeriod; - var keyEventArgs = new KeyEventArgs(Keys.Enter); - EventHelper.RaiseEvent(returnPeriodInput.Controls.OfType().First(), "KeyDown", keyEventArgs); - - // Then - Assert.IsTrue(keyEventArgs.Handled); - Assert.IsTrue(keyEventArgs.SuppressKeyPress); - - Assert.AreEqual(returnPeriod, returnPeriodInput.Value); - Assert.AreNotSame(returnPeriodInput, view.ActiveControl); - } - mocks.VerifyAll(); - } - - private static void SimulateUserCommittingReturnPeriodValue(ControlTester returnPeriodTester, int returnPeriod) - { - var returnPeriodInput = (NumericUpDown) returnPeriodTester.TheObject; - returnPeriodInput.Value = returnPeriod; - var eventArgs = new CancelEventArgs(); - EventHelper.RaiseEvent(returnPeriodTester.TheObject, "Validating", eventArgs); - if (!eventArgs.Cancel) - { - returnPeriodTester.FireEvent("Validated"); - } - } - private void ShowFormWithView(FailureMechanismContributionView distributionView) { testForm.Controls.Add(distributionView); Index: Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/ViewInfos/FailureMechanismContributionViewInfoTest.cs =================================================================== diff -u -r4fda2f3f6be17051ed305f0ea2d1b15fa87fc55f -r65eb603f0c22966e05487433a9deb80e3041fc47 --- Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/ViewInfos/FailureMechanismContributionViewInfoTest.cs (.../FailureMechanismContributionViewInfoTest.cs) (revision 4fda2f3f6be17051ed305f0ea2d1b15fa87fc55f) +++ Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/ViewInfos/FailureMechanismContributionViewInfoTest.cs (.../FailureMechanismContributionViewInfoTest.cs) (revision 65eb603f0c22966e05487433a9deb80e3041fc47) @@ -60,13 +60,11 @@ public void GetViewName_Always_ReturnsViewName() { // Setup - var normChangeHandler = mocks.Stub(); - var compositionChangeHandler = mocks.Stub(); var viewCommands = mocks.Stub(); IAssessmentSection assessmentSectionStub = AssessmentSectionHelper.CreateAssessmentSectionStubWithoutBoundaryDatabaseOrFailureMechanisms(mocks); mocks.ReplayAll(); - var view = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands); + var view = new FailureMechanismContributionView(viewCommands); // Call var viewName = info.GetViewName(view, assessmentSectionStub.FailureMechanismContribution); @@ -137,16 +135,14 @@ public void CloseForData_ViewCorrespondingToRemovedAssessmentSection_ReturnsTrue() { // Setup - var normChangeHandler = mocks.Stub(); - var compositionChangeHandler = mocks.Stub(); var viewCommands = mocks.Stub(); IAssessmentSection assessmentSectionStub = AssessmentSectionHelper.CreateAssessmentSectionStubWithoutBoundaryDatabaseOrFailureMechanisms(mocks); assessmentSectionStub.Stub(section => section.Composition) .Return(AssessmentSectionComposition.Dike); mocks.ReplayAll(); - using (var view = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands) + using (var view = new FailureMechanismContributionView(viewCommands) { Data = assessmentSectionStub.FailureMechanismContribution, AssessmentSection = assessmentSectionStub @@ -165,8 +161,6 @@ public void CloseForData_ViewNotCorrespondingToRemovedAssessmentSection_ReturnsFalse() { // Setup - var normChangeHandler = mocks.Stub(); - var compositionChangeHandler = mocks.Stub(); var viewCommands = mocks.Stub(); IAssessmentSection assessmentSection1 = AssessmentSectionHelper.CreateAssessmentSectionStubWithoutBoundaryDatabaseOrFailureMechanisms(mocks); @@ -178,7 +172,7 @@ .Return(AssessmentSectionComposition.DikeAndDune); mocks.ReplayAll(); - using (var view = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands) + using (var view = new FailureMechanismContributionView(viewCommands) { Data = assessmentSection1.FailureMechanismContribution, AssessmentSection = assessmentSection1 @@ -198,14 +192,12 @@ public void CloseForData_ViewWithoutData_ReturnsFalse() { // Setup - var normChangeHandler = mocks.Stub(); - var compositionChangeHandler = mocks.Stub(); var viewCommands = mocks.Stub(); IAssessmentSection assessmentSectionStub = AssessmentSectionHelper.CreateAssessmentSectionStubWithoutBoundaryDatabaseOrFailureMechanisms(mocks); mocks.ReplayAll(); - using (var view = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands)) + using (var view = new FailureMechanismContributionView(viewCommands)) { // Call var closeForData = info.CloseForData(view, assessmentSectionStub); @@ -220,8 +212,6 @@ public void AfterCreate_WithGuiSet_SetsAssessmentSection() { // Setup - var normChangeHandler = mocks.Stub(); - var compositionChangeHandler = mocks.Stub(); var viewCommands = mocks.Stub(); IAssessmentSection assessmentSectionStub = AssessmentSectionHelper.CreateAssessmentSectionStubWithoutBoundaryDatabaseOrFailureMechanisms(mocks); @@ -235,7 +225,7 @@ var context = new FailureMechanismContributionContext(assessmentSectionStub.FailureMechanismContribution, assessmentSectionStub); - using (var view = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands)) + using (var view = new FailureMechanismContributionView(viewCommands)) using (var ringtoetsPlugin = new RingtoetsPlugin()) { info = ringtoetsPlugin.GetViewInfos().First(tni => tni.ViewType == typeof(FailureMechanismContributionView));