Index: Core/Common/test/Core.Common.TestUtil.Test/ControlsTestHelperTest.cs =================================================================== diff -u -r2ff2a985fe9015df6da49fe43006e5c7631434c3 -r4fda2f3f6be17051ed305f0ea2d1b15fa87fc55f --- Core/Common/test/Core.Common.TestUtil.Test/ControlsTestHelperTest.cs (.../ControlsTestHelperTest.cs) (revision 2ff2a985fe9015df6da49fe43006e5c7631434c3) +++ Core/Common/test/Core.Common.TestUtil.Test/ControlsTestHelperTest.cs (.../ControlsTestHelperTest.cs) (revision 4fda2f3f6be17051ed305f0ea2d1b15fa87fc55f) @@ -37,7 +37,8 @@ const string selectedvaluechanged = "SelectedValueChanged"; const string selectionchangecommitted = "SelectionChangeCommitted"; - string value1 = "1", value2 = "2"; + string value1 = "1"; + string value2 = "2"; using(var form = new Form()) using (var control = new ComboBox Index: Core/Common/test/Core.Common.TestUtil/ControlsTestHelper.cs =================================================================== diff -u -r2ff2a985fe9015df6da49fe43006e5c7631434c3 -r4fda2f3f6be17051ed305f0ea2d1b15fa87fc55f --- Core/Common/test/Core.Common.TestUtil/ControlsTestHelper.cs (.../ControlsTestHelper.cs) (revision 2ff2a985fe9015df6da49fe43006e5c7631434c3) +++ Core/Common/test/Core.Common.TestUtil/ControlsTestHelper.cs (.../ControlsTestHelper.cs) (revision 4fda2f3f6be17051ed305f0ea2d1b15fa87fc55f) @@ -31,7 +31,7 @@ public static class ControlsTestHelper { /// - /// Emulates the user selecting new value a . + /// Emulates the user selecting new value for a . /// /// The combo box to be edited. /// The new value to be selected. Index: Ringtoets/Common/src/Ringtoets.Common.IO/Structures/StructuresCharacteristicsCsvReader.cs =================================================================== diff -u -r24ed17047f5f34a54a707b3283d97f36e1b67f58 -r4fda2f3f6be17051ed305f0ea2d1b15fa87fc55f --- Ringtoets/Common/src/Ringtoets.Common.IO/Structures/StructuresCharacteristicsCsvReader.cs (.../StructuresCharacteristicsCsvReader.cs) (revision 24ed17047f5f34a54a707b3283d97f36e1b67f58) +++ Ringtoets/Common/src/Ringtoets.Common.IO/Structures/StructuresCharacteristicsCsvReader.cs (.../StructuresCharacteristicsCsvReader.cs) (revision 4fda2f3f6be17051ed305f0ea2d1b15fa87fc55f) @@ -168,7 +168,8 @@ /// Thrown when an I/O exception occurred. private int CountNonEmptyLines(TextReader reader, int currentLine) { - int count = 0, lineNumberForMessage = currentLine; + int count = 0; + int lineNumberForMessage = currentLine; string line; while ((line = ReadLineAndHandleIOExceptions(reader, lineNumberForMessage)) != null) { Index: Ringtoets/Common/test/Ringtoets.Common.Data.Test/Contribution/FailureMechanismContributionTest.cs =================================================================== diff -u -r0a5a1c7fad7e52c152e3ff34eebcccf7785b377d -r4fda2f3f6be17051ed305f0ea2d1b15fa87fc55f --- Ringtoets/Common/test/Ringtoets.Common.Data.Test/Contribution/FailureMechanismContributionTest.cs (.../FailureMechanismContributionTest.cs) (revision 0a5a1c7fad7e52c152e3ff34eebcccf7785b377d) +++ Ringtoets/Common/test/Ringtoets.Common.Data.Test/Contribution/FailureMechanismContributionTest.cs (.../FailureMechanismContributionTest.cs) (revision 4fda2f3f6be17051ed305f0ea2d1b15fa87fc55f) @@ -255,8 +255,14 @@ public void UpdateContributions_FailureMechanismsChangesAfterConstruction_UpdateDistribution(double newOtherContribution) { // Setup - string name1 = "A", name2 = "B", name3 = "C", name4 = "D"; - double contribution1 = 1.1, contribution2 = 5.5, contribution3 = 23.45, contribution4 = 67.89; + string name1 = "A"; + string name2 = "B"; + string name3 = "C"; + string name4 = "D"; + double contribution1 = 1.1; + double contribution2 = 5.5; + double contribution3 = 23.45; + double contribution4 = 67.89; var mocks = new MockRepository(); var failureMechanism1 = mocks.Stub(); Index: Ringtoets/Integration/src/Ringtoets.Integration.Forms/Views/FailureMechanismContributionView.cs =================================================================== diff -u -r9ffe6315bcf05d461cb320ff137d4d3c6a552ba0 -r4fda2f3f6be17051ed305f0ea2d1b15fa87fc55f --- Ringtoets/Integration/src/Ringtoets.Integration.Forms/Views/FailureMechanismContributionView.cs (.../FailureMechanismContributionView.cs) (revision 9ffe6315bcf05d461cb320ff137d4d3c6a552ba0) +++ Ringtoets/Integration/src/Ringtoets.Integration.Forms/Views/FailureMechanismContributionView.cs (.../FailureMechanismContributionView.cs) (revision 4fda2f3f6be17051ed305f0ea2d1b15fa87fc55f) @@ -49,13 +49,13 @@ private const int isRelevantColumnIndex = 0; private const int probabilityPerYearColumnIndex = 4; - /// - /// This observer is listening for changes to: + /// + /// Actually only interested in the following changes: /// /// /// /// - /// + /// private readonly Observer failureMechanismObserver; private readonly IFailureMechanismContributionNormChangeHandler normChangeHandler; @@ -400,8 +400,13 @@ private void AssessmentSectionCompositionComboBoxSelectionChangeCommitted(object sender, EventArgs e) { var newComposition = (AssessmentSectionComposition) assessmentSectionCompositionComboBox.SelectedValue; - if (assessmentSection.Composition != newComposition && compositionChangeHandler.ConfirmCompositionChange()) + if (assessmentSection.Composition == newComposition) { + return; + } + + if (compositionChangeHandler.ConfirmCompositionChange()) + { IEnumerable changedObjects = compositionChangeHandler.ChangeComposition(assessmentSection, newComposition); foreach (IObservable changedObject in changedObjects) { Index: Ringtoets/Integration/src/Ringtoets.Integration.Forms/Views/IAssessmentSectionCompositionChangeHandler.cs =================================================================== diff -u -r2ff2a985fe9015df6da49fe43006e5c7631434c3 -r4fda2f3f6be17051ed305f0ea2d1b15fa87fc55f --- Ringtoets/Integration/src/Ringtoets.Integration.Forms/Views/IAssessmentSectionCompositionChangeHandler.cs (.../IAssessmentSectionCompositionChangeHandler.cs) (revision 2ff2a985fe9015df6da49fe43006e5c7631434c3) +++ Ringtoets/Integration/src/Ringtoets.Integration.Forms/Views/IAssessmentSectionCompositionChangeHandler.cs (.../IAssessmentSectionCompositionChangeHandler.cs) (revision 4fda2f3f6be17051ed305f0ea2d1b15fa87fc55f) @@ -43,7 +43,7 @@ /// and propagates the changes to underlying data structure. /// /// The section to be updated. - /// The new norm value. + /// The new composition value. /// All objects that have been affected by the change. /// Thrown when /// is null. Index: Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Handlers/AssessmentSectionCompositionChangeHandler.cs =================================================================== diff -u -r2ff2a985fe9015df6da49fe43006e5c7631434c3 -r4fda2f3f6be17051ed305f0ea2d1b15fa87fc55f --- Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Handlers/AssessmentSectionCompositionChangeHandler.cs (.../AssessmentSectionCompositionChangeHandler.cs) (revision 2ff2a985fe9015df6da49fe43006e5c7631434c3) +++ Ringtoets/Integration/src/Ringtoets.Integration.Plugin/Handlers/AssessmentSectionCompositionChangeHandler.cs (.../AssessmentSectionCompositionChangeHandler.cs) (revision 4fda2f3f6be17051ed305f0ea2d1b15fa87fc55f) @@ -36,7 +36,7 @@ { /// /// Class responsible for changing the - /// value clearing all data dependent on the original norm value. + /// value clearing all data dependent on the original composition value. /// public class AssessmentSectionCompositionChangeHandler : IAssessmentSectionCompositionChangeHandler { Index: Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/FailureMechanismContributionViewIntegrationTest.cs =================================================================== diff -u -r9ffe6315bcf05d461cb320ff137d4d3c6a552ba0 -r4fda2f3f6be17051ed305f0ea2d1b15fa87fc55f --- Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/FailureMechanismContributionViewIntegrationTest.cs (.../FailureMechanismContributionViewIntegrationTest.cs) (revision 9ffe6315bcf05d461cb320ff137d4d3c6a552ba0) +++ Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/FailureMechanismContributionViewIntegrationTest.cs (.../FailureMechanismContributionViewIntegrationTest.cs) (revision 4fda2f3f6be17051ed305f0ea2d1b15fa87fc55f) @@ -162,11 +162,11 @@ assessmentSection.GrassCoverErosionOutwards.HydraulicBoundaryLocations.Attach(grassCoverErosionOutwardsObserver); - var handler1 = new FailureMechanismContributionNormChangeHandler(); - var handler2 = new AssessmentSectionCompositionChangeHandler(); + var normChangeHandler = new FailureMechanismContributionNormChangeHandler(); + var compositionChangeHandler = new AssessmentSectionCompositionChangeHandler(); using (var form = new Form()) - using (var distributionView = new FailureMechanismContributionView(handler1, handler2, viewCommands) + using (var distributionView = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands) { Data = failureMechanismContribution, AssessmentSection = assessmentSection @@ -266,11 +266,11 @@ emptyGrassCoverErosionInwardsCalculation.Attach(calculationObserver); emptyHeightStructuresCalculation.Attach(calculationObserver); - var handler1 = new FailureMechanismContributionNormChangeHandler(); - var handler2 = new AssessmentSectionCompositionChangeHandler(); + var normChangeHandler = new FailureMechanismContributionNormChangeHandler(); + var compositionChangeHandler = new AssessmentSectionCompositionChangeHandler(); using (Form form = new Form()) - using (FailureMechanismContributionView distributionView = new FailureMechanismContributionView(handler1, handler2, viewCommands) + using (FailureMechanismContributionView distributionView = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands) { Data = failureMechanismContribution, AssessmentSection = assessmentSection @@ -379,11 +379,11 @@ grassCoverErosionInwardsCalculation.Attach(grassCoverErosionInwardsCalculationObserver); heightStructuresCalculation.Attach(heightStructuresCalculationObserver); - var handler1 = new FailureMechanismContributionNormChangeHandler(); - var handler2 = new AssessmentSectionCompositionChangeHandler(); + var normChangeHandler = new FailureMechanismContributionNormChangeHandler(); + var compositionChangeHandler = new AssessmentSectionCompositionChangeHandler(); using (Form form = new Form()) - using (FailureMechanismContributionView distributionView = new FailureMechanismContributionView(handler1, handler2, viewCommands) + using (FailureMechanismContributionView distributionView = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands) { Data = failureMechanismContribution, AssessmentSection = assessmentSection @@ -487,11 +487,11 @@ grassCoverErosionInwardsCalculation.Attach(grassCoverErosionInwardsCalculationObserver); heightStructuresCalculation.Attach(heightStructuresCalculationObserver); - var handler1 = new FailureMechanismContributionNormChangeHandler(); - var handler2 = new AssessmentSectionCompositionChangeHandler(); + var normChangeHandler = new FailureMechanismContributionNormChangeHandler(); + var compositionChangeHandler = new AssessmentSectionCompositionChangeHandler(); using (Form form = new Form()) - using (FailureMechanismContributionView distributionView = new FailureMechanismContributionView(handler1, handler2, viewCommands) + using (FailureMechanismContributionView distributionView = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands) { Data = failureMechanismContribution, AssessmentSection = assessmentSection @@ -572,11 +572,11 @@ emptyHeightStructuresCalculation.Attach(calculationObserver); hydraulicBoundaryDatabase.Attach(hydraulicBoundaryDatabaseObserver); - var handler1 = new FailureMechanismContributionNormChangeHandler(); - var handler2 = new AssessmentSectionCompositionChangeHandler(); + var normChangeHandler = new FailureMechanismContributionNormChangeHandler(); + var compositionChangeHandler = new AssessmentSectionCompositionChangeHandler(); using (Form form = new Form()) - using (FailureMechanismContributionView distributionView = new FailureMechanismContributionView(handler1, handler2, viewCommands) + using (FailureMechanismContributionView distributionView = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands) { Data = failureMechanismContribution, AssessmentSection = assessmentSection @@ -638,11 +638,11 @@ emptyGrassCoverErosionInwardsCalculation.Attach(calculationObserver); emptyHeightStructuresCalculation.Attach(calculationObserver); - var handler1 = new FailureMechanismContributionNormChangeHandler(); - var handler2 = new AssessmentSectionCompositionChangeHandler(); + var normChangeHandler = new FailureMechanismContributionNormChangeHandler(); + var compositionChangeHandler = new AssessmentSectionCompositionChangeHandler(); using (Form form = new Form()) - using (FailureMechanismContributionView distributionView = new FailureMechanismContributionView(handler1, handler2, viewCommands) + using (FailureMechanismContributionView distributionView = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands) { Data = failureMechanismContribution, AssessmentSection = assessmentSection @@ -691,11 +691,11 @@ var assessmentSection = new AssessmentSection(initialComposition); - var handler1 = new FailureMechanismContributionNormChangeHandler(); - var handler2 = new AssessmentSectionCompositionChangeHandler(); + var normChangeHandler = new FailureMechanismContributionNormChangeHandler(); + var compositionChangeHandler = new AssessmentSectionCompositionChangeHandler(); using (var form = new Form()) - using (var view = new FailureMechanismContributionView(handler1, handler2, viewCommands) + using (var view = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands) { Data = assessmentSection.FailureMechanismContribution, AssessmentSection = assessmentSection Index: Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Views/FailureMechanismContributionViewTest.cs =================================================================== diff -u -r9ffe6315bcf05d461cb320ff137d4d3c6a552ba0 -r4fda2f3f6be17051ed305f0ea2d1b15fa87fc55f --- Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Views/FailureMechanismContributionViewTest.cs (.../FailureMechanismContributionViewTest.cs) (revision 9ffe6315bcf05d461cb320ff137d4d3c6a552ba0) +++ Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/Views/FailureMechanismContributionViewTest.cs (.../FailureMechanismContributionViewTest.cs) (revision 4fda2f3f6be17051ed305f0ea2d1b15fa87fc55f) @@ -132,13 +132,13 @@ { // Setup var mocks = new MockRepository(); - var handler1 = mocks.Stub(); - var handler2 = mocks.Stub(); + var normChangeHandler = mocks.Stub(); + var compositionChangeHandler = mocks.Stub(); var viewCommands = mocks.Stub(); mocks.ReplayAll(); // Call - using (var contributionView = new FailureMechanismContributionView(handler1, handler2, viewCommands)) + using (var contributionView = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands)) { ShowFormWithView(contributionView); @@ -164,16 +164,16 @@ { // Setup var mocks = new MockRepository(); - var handler1 = mocks.Stub(); - var handler2 = mocks.Stub(); + 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(handler1, handler2, viewCommands) + using (var contributionView = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands) { Data = failureMechanismContribution, AssessmentSection = assessmentSection @@ -212,19 +212,19 @@ var observable2 = mockRepository.StrictMock(); observable2.Expect(o => o.NotifyObservers()); - var handler1 = mockRepository.StrictMock(); - handler1.Expect(h => h.ConfirmNormChange()).Return(true); - handler1.Expect(h => h.ChangeNorm(assessmentSection, norm)) - .Return(new[] - { - observable1, - observable2 - }); - var handler2 = mockRepository.Stub(); + 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(handler1, handler2, viewCommands) + using (FailureMechanismContributionView distributionView = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands) { Data = failureMechanismContribution, AssessmentSection = assessmentSection @@ -254,16 +254,16 @@ int initialReturnPeriod = Convert.ToInt32(1.0/failureMechanismContribution.Norm); MockRepository mockRepository = new MockRepository(); - var handler1 = mockRepository.StrictMock(); - handler1.Expect(h => h.ConfirmNormChange()).Return(false); - handler1.Expect(h => h.ChangeNorm(assessmentSection, newReturnPeriod)) - .Return(Enumerable.Empty()) - .Repeat.Never(); - var handler2 = mockRepository.Stub(); + 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(handler1, handler2, viewCommands) + using (FailureMechanismContributionView distributionView = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands) { Data = failureMechanismContribution, AssessmentSection = assessmentSection @@ -289,12 +289,12 @@ { // Setup var mocks = new MockRepository(); - var handler1 = mocks.Stub(); - var handler2 = mocks.Stub(); + var normChangeHandler = mocks.Stub(); + var compositionChangeHandler = mocks.Stub(); var viewCommands = mocks.Stub(); mocks.ReplayAll(); - using (var distributionView = new FailureMechanismContributionView(handler1, handler2, viewCommands)) + using (var distributionView = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands)) { // Call ShowFormWithView(distributionView); @@ -334,8 +334,8 @@ double testContribution = 100 - otherContribution; var mockRepository = new MockRepository(); - var handler1 = mockRepository.Stub(); - var handler2 = mockRepository.Stub(); + var normChangeHandler = mockRepository.Stub(); + var compositionChangeHandler = mockRepository.Stub(); var viewCommands = mockRepository.Stub(); var someMechanism = mockRepository.StrictMock(testName, testCode); @@ -348,7 +348,7 @@ someMechanism }, otherContribution, 0.01); - using (var distributionView = new FailureMechanismContributionView(handler1, handler2, viewCommands) + using (var distributionView = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands) { AssessmentSection = assessmentSection }) @@ -387,8 +387,8 @@ var assessmentSection2 = new AssessmentSection(AssessmentSectionComposition.Dike); var mockRepository = new MockRepository(); - var handler1 = mockRepository.Stub(); - var handler2 = mockRepository.Stub(); + var normChangeHandler = mockRepository.Stub(); + var compositionChangeHandler = mockRepository.Stub(); var viewCommands = mockRepository.Stub(); var someMechanism = mockRepository.Stub(); mockRepository.ReplayAll(); @@ -402,7 +402,7 @@ someMechanism }, random.Next(0, 100), 1.0/newReturnPeriod); - using (var distributionView = new FailureMechanismContributionView(handler1, handler2, viewCommands) + using (var distributionView = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands) { Data = initialContribution, AssessmentSection = assessmentSection1 @@ -436,8 +436,8 @@ var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); var mockRepository = new MockRepository(); - var handler1 = mockRepository.Stub(); - var handler2 = mockRepository.Stub(); + var normChangeHandler = mockRepository.Stub(); + var compositionChangeHandler = mockRepository.Stub(); var viewCommands = mockRepository.Stub(); var someMechanism = mockRepository.Stub(); mockRepository.ReplayAll(); @@ -447,7 +447,7 @@ someMechanism }, random.Next(0, 100), 1.0/initialReturnPeriod); - using (var distributionView = new FailureMechanismContributionView(handler1, handler2, viewCommands) + using (var distributionView = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands) { Data = contribution, AssessmentSection = assessmentSection @@ -479,8 +479,8 @@ var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); var mockRepository = new MockRepository(); - var handler1 = mockRepository.Stub(); - var handler2 = mockRepository.Stub(); + 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 +489,7 @@ failureMechanismStub.IsRelevant = isFailureMechanismRelevant; mockRepository.ReplayAll(); - using (var view = new FailureMechanismContributionView(handler1, handler2, viewCommands)) + using (var view = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands)) { // When var contributionData = new FailureMechanismContribution(new[] @@ -518,16 +518,16 @@ var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); var mockRepository = new MockRepository(); - var handler1 = mockRepository.Stub(); - var handler2 = mockRepository.Stub(); + 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(handler1, handler2, viewCommands)) + using (var view = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands)) { // When var contributionData = new FailureMechanismContribution(new[] @@ -559,16 +559,16 @@ var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); var mockRepository = new MockRepository(); - var handler1 = mockRepository.Stub(); - var handler2 = mockRepository.Stub(); + 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(handler1, handler2, viewCommands)) + using (var view = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands)) { // When var contributionData = new FailureMechanismContribution(new[] @@ -602,12 +602,12 @@ { // Setup var mocks = new MockRepository(); - var handler1 = mocks.Stub(); - var handler2 = mocks.Stub(); + var normChangeHandler = mocks.Stub(); + var compositionChangeHandler = mocks.Stub(); var viewCommands = mocks.Stub(); mocks.ReplayAll(); - using (var view = new FailureMechanismContributionView(handler1, handler2, viewCommands)) + using (var view = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands)) { ShowFormWithView(view); @@ -644,20 +644,20 @@ var observable2 = mocks.StrictMock(); observable2.Expect(o => o.NotifyObservers()); - var handler1 = mocks.Stub(); - var handler2 = mocks.StrictMock(); - handler2.Expect(h => h.ConfirmCompositionChange()) - .Return(true); - handler2.Expect(h => h.ChangeComposition(assessmentSection, newComposition)) - .Return(new[] - { - observable1, - observable2 - }); + 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(handler1, handler2, viewCommands) + using (var view = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands) { Data = assessmentSection.FailureMechanismContribution, AssessmentSection = assessmentSection @@ -692,18 +692,18 @@ var assessmentSection = new AssessmentSection(initialComposition); var mocks = new MockRepository(); - var handler1 = mocks.Stub(); - var handler2 = mocks.StrictMock(); - handler2.Expect(h => h.ConfirmCompositionChange()) - .Return(false); - handler2.Expect(h => h.ChangeComposition(null, AssessmentSectionComposition.Dike)) - .IgnoreArguments() - .Return(new IObservable[0]) - .Repeat.Never(); + 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(handler1, handler2, viewCommands) + using (var view = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands) { Data = assessmentSection.FailureMechanismContribution, AssessmentSection = assessmentSection @@ -731,14 +731,14 @@ { // Given var mocks = new MockRepository(); - var handler1 = mocks.Stub(); - var handler2 = mocks.Stub(); + 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(handler1, handler2, viewCommands)) + using (var view = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands)) { ShowFormWithView(view); @@ -775,14 +775,14 @@ { // Given var mocks = new MockRepository(); - var handler1 = mocks.Stub(); - var handler2 = mocks.Stub(); + 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(handler1, handler2, viewCommands)) + using (var view = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands)) { ShowFormWithView(view); @@ -822,8 +822,8 @@ // Given List failureMechanismObservers = new List(); var mocks = new MockRepository(); - var handler1 = mocks.Stub(); - var handler2 = mocks.Stub(); + 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 +848,7 @@ assessmentSection.Stub(section => section.Composition).Return(AssessmentSectionComposition.Dike); mocks.ReplayAll(); - using (var view = new FailureMechanismContributionView(handler1, handler2, viewCommands)) + using (var view = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands)) { ShowFormWithView(view); @@ -905,8 +905,8 @@ { // Given var mocks = new MockRepository(); - var handler1 = mocks.Stub(); - var handler2 = mocks.Stub(); + 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 +922,7 @@ }; var contribution = new FailureMechanismContribution(failureMechanisms, 50.0, 1.0/30000); - using (var view = new FailureMechanismContributionView(handler1, handler2, viewCommands)) + using (var view = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands)) { ShowFormWithView(view); @@ -945,12 +945,12 @@ { // Given var mocks = new MockRepository(); - var handler1 = mocks.Stub(); - var handler2 = mocks.Stub(); + var normChangeHandler = mocks.Stub(); + var compositionChangeHandler = mocks.Stub(); var viewCommands = mocks.Stub(); mocks.ReplayAll(); - using (var view = new FailureMechanismContributionView(handler1, handler2, viewCommands)) + using (var view = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands)) { ShowFormWithView(view); @@ -981,11 +981,11 @@ { // Given var mocks = new MockRepository(); - var handler1 = mocks.Stub(); - handler1.Stub(h => h.ChangeNorm(null, 1)) - .IgnoreArguments() - .Return(Enumerable.Empty()); - var handler2 = mocks.Stub(); + 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(); @@ -995,7 +995,7 @@ const int returnPeriod = 200; int originalReturnPeriodValue = Convert.ToInt32(1.0/failureMechanismContribution.Norm); - using (var view = new FailureMechanismContributionView(handler1, handler2, viewCommands) + using (var view = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands) { Data = failureMechanismContribution, AssessmentSection = assessmentSection @@ -1033,18 +1033,18 @@ FailureMechanismContribution failureMechanismContribution = assessmentSection.FailureMechanismContribution; var mocks = new MockRepository(); - var handler1 = mocks.StrictMock(); - handler1.Expect(h => h.ConfirmNormChange()) - .Return(true); - handler1.Expect(h => h.ChangeNorm(assessmentSection, norm)) - .Return(Enumerable.Empty()); - var handler2 = mocks.Stub(); - handler2.Stub(h => h.ConfirmCompositionChange()) - .Return(false); + 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(handler1, handler2, viewCommands) + using (var view = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands) { Data = failureMechanismContribution, AssessmentSection = assessmentSection Index: Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/Handlers/AssessmentSectionCompositionChangeHandlerTest.cs =================================================================== diff -u -r2ff2a985fe9015df6da49fe43006e5c7631434c3 -r4fda2f3f6be17051ed305f0ea2d1b15fa87fc55f --- Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/Handlers/AssessmentSectionCompositionChangeHandlerTest.cs (.../AssessmentSectionCompositionChangeHandlerTest.cs) (revision 2ff2a985fe9015df6da49fe43006e5c7631434c3) +++ Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/Handlers/AssessmentSectionCompositionChangeHandlerTest.cs (.../AssessmentSectionCompositionChangeHandlerTest.cs) (revision 4fda2f3f6be17051ed305f0ea2d1b15fa87fc55f) @@ -42,7 +42,8 @@ public void ConfirmCompositionChange_Always_ShowMessageBox() { // Setup - string title = "", message = ""; + string title = ""; + string message = ""; DialogBoxHandler = (name, wnd) => { var tester = new MessageBoxTester(wnd); Index: Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/Handlers/FailureMechanismContributionNormChangeHandlerTest.cs =================================================================== diff -u -r0a5a1c7fad7e52c152e3ff34eebcccf7785b377d -r4fda2f3f6be17051ed305f0ea2d1b15fa87fc55f --- Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/Handlers/FailureMechanismContributionNormChangeHandlerTest.cs (.../FailureMechanismContributionNormChangeHandlerTest.cs) (revision 0a5a1c7fad7e52c152e3ff34eebcccf7785b377d) +++ Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/Handlers/FailureMechanismContributionNormChangeHandlerTest.cs (.../FailureMechanismContributionNormChangeHandlerTest.cs) (revision 4fda2f3f6be17051ed305f0ea2d1b15fa87fc55f) @@ -53,7 +53,8 @@ public void ConfirmNormChange_Always_ShownMessageBoxForConfirmation() { // Setup - string title = "", message = ""; + string title = ""; + string message = ""; DialogBoxHandler = (name, wnd) => { var tester = new MessageBoxTester(wnd); @@ -159,8 +160,6 @@ IEnumerable affectedObjects = null; const double norm = 1.0/1000; - const int newNormValue = 1000; - // Call Action call = () => affectedObjects = handler.ChangeNorm(section, norm); @@ -172,7 +171,7 @@ }; TestHelper.AssertLogMessagesAreGenerated(call, expectedMessages, 2); - Assert.AreEqual(1.0/newNormValue, section.FailureMechanismContribution.Norm); + Assert.AreEqual(norm, section.FailureMechanismContribution.Norm); CollectionAssert.IsEmpty(section.GetFailureMechanisms().SelectMany(fm => fm.Calculations).Where(c => c.HasOutput), "There should be no calculations with output."); @@ -237,5 +236,51 @@ } CollectionAssert.AreEquivalent(expectedAffectedObjects, affectedObjects); } + + [Test] + public void ChangeNorm_FullyConfiguredAssessmentSectionWithoutCalculatedHydraulicBoundaryLocations_AllFailureMechanismCalculationOutputClearedAndContributionsUpdatedAndReturnsAllAffectedObjects() + { + // Setup + AssessmentSection section = TestDataGenerator.GetFullyConfiguredAssessmentSection(); + RingtoetsDataSynchronizationService.ClearHydraulicBoundaryLocationOutput(section.HydraulicBoundaryDatabase, + section.GrassCoverErosionOutwards); + + // Precondition + CollectionAssert.IsEmpty(section.HydraulicBoundaryDatabase.Locations.Where(HasCalculatedHydraulicBoundaryLocationValues)); + CollectionAssert.IsEmpty(section.GrassCoverErosionOutwards.HydraulicBoundaryLocations.Where(HasCalculatedHydraulicBoundaryLocationValues)); + + var expectedAffectedCalculations = section.GetFailureMechanisms() + .SelectMany(fm => fm.Calculations) + .Where(c => c.HasOutput) + .ToArray(); + var handler = new FailureMechanismContributionNormChangeHandler(); + + IEnumerable affectedObjects = null; + const double norm = 1.0 / 1000; + + // Call + Action call = () => affectedObjects = handler.ChangeNorm(section, norm); + + // Assert + TestHelper.AssertLogMessageIsGenerated(call, "De resultaten van 32 berekeningen zijn verwijderd.", 1); + + Assert.AreEqual(norm, section.FailureMechanismContribution.Norm); + + CollectionAssert.IsEmpty(section.GetFailureMechanisms().SelectMany(fm => fm.Calculations).Where(c => c.HasOutput), + "There should be no calculations with output."); + + var expectedAffectedObjects = expectedAffectedCalculations.Cast() + .Concat(section.GetFailureMechanisms()) + .Concat(new IObservable[] + { + section.FailureMechanismContribution, + }); + CollectionAssert.AreEquivalent(expectedAffectedObjects, affectedObjects); + } + + private bool HasCalculatedHydraulicBoundaryLocationValues(HydraulicBoundaryLocation l) + { + return !double.IsNaN(l.DesignWaterLevel) || !double.IsNaN(l.WaveHeight); + } } } \ No newline at end of file Index: Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/ViewInfos/FailureMechanismContributionViewInfoTest.cs =================================================================== diff -u -r2ff2a985fe9015df6da49fe43006e5c7631434c3 -r4fda2f3f6be17051ed305f0ea2d1b15fa87fc55f --- Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/ViewInfos/FailureMechanismContributionViewInfoTest.cs (.../FailureMechanismContributionViewInfoTest.cs) (revision 2ff2a985fe9015df6da49fe43006e5c7631434c3) +++ Ringtoets/Integration/test/Ringtoets.Integration.Plugin.Test/ViewInfos/FailureMechanismContributionViewInfoTest.cs (.../FailureMechanismContributionViewInfoTest.cs) (revision 4fda2f3f6be17051ed305f0ea2d1b15fa87fc55f) @@ -60,13 +60,13 @@ public void GetViewName_Always_ReturnsViewName() { // Setup - var handler1 = mocks.Stub(); - var handler2 = mocks.Stub(); + var normChangeHandler = mocks.Stub(); + var compositionChangeHandler = mocks.Stub(); var viewCommands = mocks.Stub(); IAssessmentSection assessmentSectionStub = AssessmentSectionHelper.CreateAssessmentSectionStubWithoutBoundaryDatabaseOrFailureMechanisms(mocks); mocks.ReplayAll(); - var view = new FailureMechanismContributionView(handler1, handler2, viewCommands); + var view = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands); // Call var viewName = info.GetViewName(view, assessmentSectionStub.FailureMechanismContribution); @@ -137,16 +137,16 @@ public void CloseForData_ViewCorrespondingToRemovedAssessmentSection_ReturnsTrue() { // Setup - var handler1 = mocks.Stub(); - var handler2 = mocks.Stub(); + 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(handler1, handler2, viewCommands) + using (var view = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands) { Data = assessmentSectionStub.FailureMechanismContribution, AssessmentSection = assessmentSectionStub @@ -165,8 +165,8 @@ public void CloseForData_ViewNotCorrespondingToRemovedAssessmentSection_ReturnsFalse() { // Setup - var handler1 = mocks.Stub(); - var handler2 = mocks.Stub(); + var normChangeHandler = mocks.Stub(); + var compositionChangeHandler = mocks.Stub(); var viewCommands = mocks.Stub(); IAssessmentSection assessmentSection1 = AssessmentSectionHelper.CreateAssessmentSectionStubWithoutBoundaryDatabaseOrFailureMechanisms(mocks); @@ -178,7 +178,7 @@ .Return(AssessmentSectionComposition.DikeAndDune); mocks.ReplayAll(); - using (var view = new FailureMechanismContributionView(handler1, handler2, viewCommands) + using (var view = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands) { Data = assessmentSection1.FailureMechanismContribution, AssessmentSection = assessmentSection1 @@ -198,14 +198,14 @@ public void CloseForData_ViewWithoutData_ReturnsFalse() { // Setup - var handler1 = mocks.Stub(); - var handler2 = mocks.Stub(); + var normChangeHandler = mocks.Stub(); + var compositionChangeHandler = mocks.Stub(); var viewCommands = mocks.Stub(); IAssessmentSection assessmentSectionStub = AssessmentSectionHelper.CreateAssessmentSectionStubWithoutBoundaryDatabaseOrFailureMechanisms(mocks); mocks.ReplayAll(); - using (var view = new FailureMechanismContributionView(handler1, handler2, viewCommands)) + using (var view = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands)) { // Call var closeForData = info.CloseForData(view, assessmentSectionStub); @@ -220,8 +220,8 @@ public void AfterCreate_WithGuiSet_SetsAssessmentSection() { // Setup - var handler1 = mocks.Stub(); - var handler2 = mocks.Stub(); + var normChangeHandler = mocks.Stub(); + var compositionChangeHandler = mocks.Stub(); var viewCommands = mocks.Stub(); IAssessmentSection assessmentSectionStub = AssessmentSectionHelper.CreateAssessmentSectionStubWithoutBoundaryDatabaseOrFailureMechanisms(mocks); @@ -235,7 +235,7 @@ var context = new FailureMechanismContributionContext(assessmentSectionStub.FailureMechanismContribution, assessmentSectionStub); - using (var view = new FailureMechanismContributionView(handler1, handler2, viewCommands)) + using (var view = new FailureMechanismContributionView(normChangeHandler, compositionChangeHandler, viewCommands)) using (var ringtoetsPlugin = new RingtoetsPlugin()) { info = ringtoetsPlugin.GetViewInfos().First(tni => tni.ViewType == typeof(FailureMechanismContributionView)); Index: Ringtoets/Piping/src/Ringtoets.Piping.IO/SurfaceLines/CharacteristicPointsCsvReader.cs =================================================================== diff -u -rd4213a7531c7effcd982ca96e799c2f8231b7627 -r4fda2f3f6be17051ed305f0ea2d1b15fa87fc55f --- Ringtoets/Piping/src/Ringtoets.Piping.IO/SurfaceLines/CharacteristicPointsCsvReader.cs (.../CharacteristicPointsCsvReader.cs) (revision d4213a7531c7effcd982ca96e799c2f8231b7627) +++ Ringtoets/Piping/src/Ringtoets.Piping.IO/SurfaceLines/CharacteristicPointsCsvReader.cs (.../CharacteristicPointsCsvReader.cs) (revision 4fda2f3f6be17051ed305f0ea2d1b15fa87fc55f) @@ -324,7 +324,8 @@ /// Thrown when an I/O exception occurred. private int CountNonEmptyLines(TextReader reader, int currentLine) { - int count = 0, lineNumberForMessage = currentLine; + int count = 0; + int lineNumberForMessage = currentLine; string line; while ((line = ReadLineAndHandleIOExceptions(reader, lineNumberForMessage)) != null) { Index: Ringtoets/Piping/src/Ringtoets.Piping.IO/SurfaceLines/PipingSurfaceLinesCsvReader.cs =================================================================== diff -u -r99f3b343f5ac4aed453d9f6d291217de76ef5314 -r4fda2f3f6be17051ed305f0ea2d1b15fa87fc55f --- Ringtoets/Piping/src/Ringtoets.Piping.IO/SurfaceLines/PipingSurfaceLinesCsvReader.cs (.../PipingSurfaceLinesCsvReader.cs) (revision 99f3b343f5ac4aed453d9f6d291217de76ef5314) +++ Ringtoets/Piping/src/Ringtoets.Piping.IO/SurfaceLines/PipingSurfaceLinesCsvReader.cs (.../PipingSurfaceLinesCsvReader.cs) (revision 4fda2f3f6be17051ed305f0ea2d1b15fa87fc55f) @@ -423,7 +423,8 @@ /// An I/O exception occurred. private int CountNonEmptyLines(TextReader reader, int currentLine) { - int count = 0, lineNumberForMessage = currentLine; + int count = 0; + int lineNumberForMessage = currentLine; string line; while ((line = ReadLineAndHandleIOExceptions(reader, lineNumberForMessage)) != null) {