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 +}