Index: Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Plugin/GrassCoverErosionInwardsGuiPlugin.cs =================================================================== diff -u -r9bd00cf5c538409ebb1c1c68f90ca0146e93d155 -r417318f41aef73c060b5fe7c6d723d75d335430a --- Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Plugin/GrassCoverErosionInwardsGuiPlugin.cs (.../GrassCoverErosionInwardsGuiPlugin.cs) (revision 9bd00cf5c538409ebb1c1c68f90ca0146e93d155) +++ Ringtoets/GrassCoverErosionInwards/src/Ringtoets.GrassCoverErosionInwards.Plugin/GrassCoverErosionInwardsGuiPlugin.cs (.../GrassCoverErosionInwardsGuiPlugin.cs) (revision 417318f41aef73c060b5fe7c6d723d75d335430a) @@ -25,12 +25,10 @@ using System.IO; using System.Linq; using System.Windows.Forms; - using Core.Common.Controls.TreeView; using Core.Common.Gui.ContextMenu; using Core.Common.Gui.Forms.ProgressDialog; using Core.Common.Gui.Plugin; - using Ringtoets.Common.Data; using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.Calculation; @@ -45,7 +43,6 @@ using Ringtoets.GrassCoverErosionInwards.Forms.Views; using Ringtoets.GrassCoverErosionInwards.Service; using Ringtoets.HydraRing.IO; - using GrassCoverErosionInwardsDataResources = Ringtoets.GrassCoverErosionInwards.Data.Properties.Resources; using GrassCoverErosionInwardsFormsResources = Ringtoets.GrassCoverErosionInwards.Forms.Properties.Resources; using GrassCoverErosionInwardsPluginResources = Ringtoets.GrassCoverErosionInwards.Plugin.Properties.Resources; @@ -75,10 +72,7 @@ { GetViewData = context => context.WrappedData, GetViewName = (view, calculationGroup) => GrassCoverErosionInwardsPluginResources.GrassCoverErosionInwardsGuiPlugin_Scenarios_DisplayName, - AfterCreate = (view, context) => - { - view.SectionResults = context.ParentFailureMechanism.SectionResults; - }, + AfterCreate = (view, context) => { view.SectionResults = context.ParentFailureMechanism.SectionResults; }, CloseForData = (view, removedData) => { var assessmentSection = removedData as IAssessmentSection; @@ -119,7 +113,7 @@ CloseForData = CloseInputViewForData, AfterCreate = (view, context) => view.Calculation = context.Calculation }; - } + } public override IEnumerable GetTreeNodeInfos() { @@ -282,31 +276,31 @@ if (calculationGroupContext != null) { calculationInputs = calculationGroupContext.WrappedData.GetCalculations() - .OfType() - .Select(c => c.InputParameters); + .OfType() + .Select(c => c.InputParameters); } + var failureMechanism = o as GrassCoverErosionInwardsFailureMechanism; + var failureMechanismContext = o as GrassCoverErosionInwardsFailureMechanismContext; if (failureMechanismContext != null) { - calculationInputs = failureMechanismContext.WrappedData.CalculationsGroup.GetCalculations() - .OfType() - .Select(c => c.InputParameters); - } + failureMechanism = failureMechanismContext.WrappedData; + } var assessmentSection = o as IAssessmentSection; if (assessmentSection != null) { - var failureMechanism = assessmentSection.GetFailureMechanisms() - .OfType() - .FirstOrDefault(); + failureMechanism = assessmentSection.GetFailureMechanisms() + .OfType() + .FirstOrDefault(); + } - if (failureMechanism != null) - { - calculationInputs = failureMechanism.CalculationsGroup.GetCalculations() - .OfType() - .Select(c => c.InputParameters); - } + if (failureMechanism != null) + { + calculationInputs = failureMechanism.CalculationsGroup.GetCalculations() + .OfType() + .Select(c => c.InputParameters); } return calculationInputs != null && calculationInputs.Any(ci => ReferenceEquals(view.Data, ci)); @@ -327,6 +321,14 @@ #endregion + private void ValidateAll(IEnumerable grassCoverErosionInwardsCalculations, IAssessmentSection assessmentSection) + { + foreach (var calculation in grassCoverErosionInwardsCalculations) + { + GrassCoverErosionInwardsCalculationService.Validate(calculation, assessmentSection); + } + } + #region GrassCoverErosionInwardsFailureMechanismContext TreeNodeInfo private object[] FailureMechanismEnabledChildNodeObjects(GrassCoverErosionInwardsFailureMechanismContext grassCoverErosionInwardsFailureMechanismContext) @@ -376,9 +378,9 @@ .AddToggleRelevancyOfFailureMechanismItem(grassCoverErosionInwardsFailureMechanismContext, RemoveAllViewsForItem) .AddSeparator() .AddValidateAllCalculationsInFailureMechanismItem( - grassCoverErosionInwardsFailureMechanismContext, - fm => ValidateAll(fm.WrappedData.Calculations.OfType(), grassCoverErosionInwardsFailureMechanismContext.Parent), - ValidateAllDataAvailableAndGetErrorMessageForCalculationsInFailureMechanism) + grassCoverErosionInwardsFailureMechanismContext, + fm => ValidateAll(fm.WrappedData.Calculations.OfType(), grassCoverErosionInwardsFailureMechanismContext.Parent), + ValidateAllDataAvailableAndGetErrorMessageForCalculationsInFailureMechanism) .AddPerformAllCalculationsInFailureMechanismItem(grassCoverErosionInwardsFailureMechanismContext, CalculateAll, ValidateAllDataAvailableAndGetErrorMessageForCalculationsInFailureMechanism) .AddClearAllCalculationOutputInFailureMechanismItem(grassCoverErosionInwardsFailureMechanismContext.WrappedData) .AddSeparator() @@ -472,9 +474,9 @@ .AddCreateCalculationItem(context, AddCalculation) .AddSeparator() .AddValidateAllCalculationsInGroupItem( - context, - c => ValidateAll(c.WrappedData.GetCalculations().OfType(), c.AssessmentSection), - ValidateAllDataAvailableAndGetErrorMessageForCalculationsInGroup) + context, + c => ValidateAll(c.WrappedData.GetCalculations().OfType(), c.AssessmentSection), + ValidateAllDataAvailableAndGetErrorMessageForCalculationsInGroup) .AddPerformAllCalculationsInGroupItem(group, context, CalculateAll, ValidateAllDataAvailableAndGetErrorMessageForCalculationsInGroup) .AddClearAllCalculationOutputInGroupItem(group) .AddSeparator(); @@ -501,8 +503,8 @@ bool isDikeProfileAvailable = nodeData.AvailableDikeProfiles.Any(); string calculationGroupGenerateCalculationsToolTip = isDikeProfileAvailable - ? GrassCoverErosionInwardsPluginResources.GrassCoverErosionInwardsGuiPlugin_CreateGenerateCalculationsItem_ToolTip - : GrassCoverErosionInwardsPluginResources.GrassCoverErosionInwardsGuiPlugin_CreateGenerateCalculationsItem_NoDikeLocations_ToolTip; + ? GrassCoverErosionInwardsPluginResources.GrassCoverErosionInwardsGuiPlugin_CreateGenerateCalculationsItem_ToolTip + : GrassCoverErosionInwardsPluginResources.GrassCoverErosionInwardsGuiPlugin_CreateGenerateCalculationsItem_NoDikeLocations_ToolTip; var generateCalculationsItem = new StrictContextMenuItem( RingtoetsCommonFormsResources.CalculationGroup_Generate_Scenarios, @@ -541,7 +543,7 @@ private static void CalculationGroupContextOnNodeRemoved(GrassCoverErosionInwardsCalculationGroupContext context, object parentNodeData) { - var parentGroupContext = (GrassCoverErosionInwardsCalculationGroupContext)parentNodeData; + var parentGroupContext = (GrassCoverErosionInwardsCalculationGroupContext) parentNodeData; parentGroupContext.WrappedData.Children.Remove(context.WrappedData); parentGroupContext.NotifyObservers(); @@ -601,9 +603,9 @@ GrassCoverErosionInwardsCalculation calculation = context.WrappedData; return builder.AddValidateCalculationItem( - context, - c => GrassCoverErosionInwardsCalculationService.Validate(c.WrappedData, c.AssessmentSection), - ValidateAllDataAvailableAndGetErrorMessageForCalculation) + context, + c => GrassCoverErosionInwardsCalculationService.Validate(c.WrappedData, c.AssessmentSection), + ValidateAllDataAvailableAndGetErrorMessageForCalculation) .AddPerformCalculationItem(calculation, context, Calculate, ValidateAllDataAvailableAndGetErrorMessageForCalculation) .AddClearCalculationOutputItem(calculation) .AddSeparator() @@ -644,13 +646,5 @@ } #endregion - - private void ValidateAll(IEnumerable grassCoverErosionInwardsCalculations, IAssessmentSection assessmentSection) - { - foreach (var calculation in grassCoverErosionInwardsCalculations) - { - GrassCoverErosionInwardsCalculationService.Validate(calculation, assessmentSection); - } - } } } \ No newline at end of file Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Plugin.Test/ViewInfos/GrassCoverErosionInwardsInputViewInfoTest.cs =================================================================== diff -u -r18a53a9b2a6c09a3af46cb9c023de3f323639f30 -r417318f41aef73c060b5fe7c6d723d75d335430a --- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Plugin.Test/ViewInfos/GrassCoverErosionInwardsInputViewInfoTest.cs (.../GrassCoverErosionInwardsInputViewInfoTest.cs) (revision 18a53a9b2a6c09a3af46cb9c023de3f323639f30) +++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Plugin.Test/ViewInfos/GrassCoverErosionInwardsInputViewInfoTest.cs (.../GrassCoverErosionInwardsInputViewInfoTest.cs) (revision 417318f41aef73c060b5fe7c6d723d75d335430a) @@ -273,7 +273,7 @@ } [Test] - public void CloseForData_ViewCorrespondingToRemovedFailureMechanism_ReturnsTrue() + public void CloseForData_ViewCorrespondingToRemovedFailureMechanismContext_ReturnsTrue() { // Setup IAssessmentSection assessmentSection = mocks.StrictMock(); @@ -300,7 +300,7 @@ } [Test] - public void CloseForData_ViewNotCorrespondingToRemovedFailureMechanism_ReturnsFalse() + public void CloseForData_ViewNotCorrespondingToRemovedFailureMechanismContext_ReturnsFalse() { // Setup IAssessmentSection assessmentSection = mocks.StrictMock(); @@ -327,7 +327,7 @@ } [Test] - public void CloseForData_NestedViewCorrespondingToRemovedFailureMechanism_ReturnsTrue() + public void CloseForData_NestedViewCorrespondingToRemovedFailureMechanismContext_ReturnsTrue() { // Setup IAssessmentSection assessmentSection = mocks.StrictMock(); @@ -357,7 +357,7 @@ } [Test] - public void CloseForData_NestedViewNotCorrespondingToRemovedFailureMechanism_ReturnsFalse() + public void CloseForData_NestedViewNotCorrespondingToRemovedFailureMechanismContext_ReturnsFalse() { // Setup IAssessmentSection assessmentSection = mocks.StrictMock(); @@ -385,8 +385,99 @@ mocks.VerifyAll(); } } + + [Test] + public void CloseForData_ViewCorrespondingToRemovedFailureMechanism_ReturnsTrue() + { + // Setup + GrassCoverErosionInwardsCalculation calculation = new GrassCoverErosionInwardsCalculation(); + GrassCoverErosionInwardsFailureMechanism failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); + failureMechanism.CalculationsGroup.Children.Add(calculation); + + using (GrassCoverErosionInwardsInputView view = new GrassCoverErosionInwardsInputView + { + Data = calculation.InputParameters + }) + { + // Call + bool closeForData = info.CloseForData(view, failureMechanism); + + // Assert + Assert.IsTrue(closeForData); + } + } + [Test] + public void CloseForData_ViewNotCorrespondingToRemovedFailureMechanism_ReturnsFalse() + { + // Setup + GrassCoverErosionInwardsCalculation calculation = new GrassCoverErosionInwardsCalculation(); + GrassCoverErosionInwardsFailureMechanism failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); + failureMechanism.CalculationsGroup.Children.Add(calculation); + + using (GrassCoverErosionInwardsInputView view = new GrassCoverErosionInwardsInputView + { + Data = calculation.InputParameters + }) + { + // Call + bool closeForData = info.CloseForData(view, new GrassCoverErosionInwardsFailureMechanism()); + + // Assert + Assert.IsFalse(closeForData); + } + } + + [Test] + public void CloseForData_NestedViewCorrespondingToRemovedFailureMechanism_ReturnsTrue() + { + // Setup + GrassCoverErosionInwardsCalculation calculation = new GrassCoverErosionInwardsCalculation(); + CalculationGroup calculationGroup = new CalculationGroup(); + calculationGroup.Children.Add(calculation); + + GrassCoverErosionInwardsFailureMechanism failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); + failureMechanism.CalculationsGroup.Children.Add(calculationGroup); + + using (GrassCoverErosionInwardsInputView view = new GrassCoverErosionInwardsInputView + { + Data = calculation.InputParameters + }) + { + // Call + bool closeForData = info.CloseForData(view, failureMechanism); + + // Assert + Assert.IsTrue(closeForData); + } + } + + [Test] + public void CloseForData_NestedViewNotCorrespondingToRemovedFailureMechanism_ReturnsFalse() + { + // Setup + GrassCoverErosionInwardsCalculation calculation = new GrassCoverErosionInwardsCalculation(); + CalculationGroup calculationGroup = new CalculationGroup(); + calculationGroup.Children.Add(calculation); + + GrassCoverErosionInwardsFailureMechanism failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); + failureMechanism.CalculationsGroup.Children.Add(calculationGroup); + + using (GrassCoverErosionInwardsInputView view = new GrassCoverErosionInwardsInputView + { + Data = calculation.InputParameters + }) + { + // Call + bool closeForData = info.CloseForData(view, new GrassCoverErosionInwardsFailureMechanism()); + + // Assert + Assert.IsFalse(closeForData); + } + } + + [Test] public void CloseForData_ViewCorrespondingToRemovedAssessmentSection_ReturnsTrue() { // Setup Index: Ringtoets/Piping/src/Ringtoets.Piping.Plugin/PipingGuiPlugin.cs =================================================================== diff -u -r886c94611e3a5cc72a9e134a7fb02ba617fe7f38 -r417318f41aef73c060b5fe7c6d723d75d335430a --- Ringtoets/Piping/src/Ringtoets.Piping.Plugin/PipingGuiPlugin.cs (.../PipingGuiPlugin.cs) (revision 886c94611e3a5cc72a9e134a7fb02ba617fe7f38) +++ Ringtoets/Piping/src/Ringtoets.Piping.Plugin/PipingGuiPlugin.cs (.../PipingGuiPlugin.cs) (revision 417318f41aef73c060b5fe7c6d723d75d335430a) @@ -332,27 +332,27 @@ .Select(c => c.InputParameters); } - var pipingFailureMechanismContext = o as PipingFailureMechanismContext; - if (pipingFailureMechanismContext != null) + var failureMechanism = o as PipingFailureMechanism; + + var failureMechanismContext = o as PipingFailureMechanismContext; + if (failureMechanismContext != null) { - calculationInputs = pipingFailureMechanismContext.WrappedData.CalculationsGroup.GetCalculations() - .OfType() - .Select(c => c.InputParameters); + failureMechanism = failureMechanismContext.WrappedData; } var assessmentSection = o as IAssessmentSection; if (assessmentSection != null) { - var failureMechanism = assessmentSection.GetFailureMechanisms() - .OfType() - .FirstOrDefault(); + failureMechanism = assessmentSection.GetFailureMechanisms() + .OfType() + .FirstOrDefault(); + } - if (failureMechanism != null) - { - calculationInputs = failureMechanism.CalculationsGroup.GetCalculations() - .OfType() - .Select(c => c.InputParameters); - } + if (failureMechanism != null) + { + calculationInputs = failureMechanism.CalculationsGroup.GetCalculations() + .OfType() + .Select(c => c.InputParameters); } return calculationInputs != null && calculationInputs.Any(ci => ReferenceEquals(view.Data, ci)); Index: Ringtoets/Piping/test/Ringtoets.Piping.Plugin.Test/ViewInfos/PipingInputViewInfoTest.cs =================================================================== diff -u -r87fcb2097e3a58e611c0de6913cb48851006f7af -r417318f41aef73c060b5fe7c6d723d75d335430a --- Ringtoets/Piping/test/Ringtoets.Piping.Plugin.Test/ViewInfos/PipingInputViewInfoTest.cs (.../PipingInputViewInfoTest.cs) (revision 87fcb2097e3a58e611c0de6913cb48851006f7af) +++ Ringtoets/Piping/test/Ringtoets.Piping.Plugin.Test/ViewInfos/PipingInputViewInfoTest.cs (.../PipingInputViewInfoTest.cs) (revision 417318f41aef73c060b5fe7c6d723d75d335430a) @@ -286,7 +286,7 @@ } [Test] - public void CloseForData_ViewCorrespondingToRemovedFailureMechanism_ReturnsTrue() + public void CloseForData_ViewCorrespondingToRemovedFailureMechanismContext_ReturnsTrue() { // Setup IAssessmentSection assessmentSection = mocks.StrictMock(); @@ -313,7 +313,7 @@ } [Test] - public void CloseForData_ViewNotCorrespondingToRemovedFailureMechanism_ReturnsFalse() + public void CloseForData_ViewNotCorrespondingToRemovedFailureMechanismContext_ReturnsFalse() { // Setup IAssessmentSection assessmentSection = mocks.StrictMock(); @@ -340,7 +340,7 @@ } [Test] - public void CloseForData_NestedViewCorrespondingToRemovedFailureMechanism_ReturnsTrue() + public void CloseForData_NestedViewCorrespondingToRemovedFailureMechanismContext_ReturnsTrue() { // Setup IAssessmentSection assessmentSection = mocks.StrictMock(); @@ -370,7 +370,7 @@ } [Test] - public void CloseForData_NestedViewNotCorrespondingToRemovedFailureMechanism_ReturnsFalse() + public void CloseForData_NestedViewNotCorrespondingToRemovedFailureMechanismContext_ReturnsFalse() { // Setup IAssessmentSection assessmentSection = mocks.StrictMock(); @@ -398,8 +398,98 @@ mocks.VerifyAll(); } } + + [Test] + public void CloseForData_ViewCorrespondingToRemovedFailureMechanism_ReturnsTrue() + { + // Setup + PipingCalculationScenario calculation = new PipingCalculationScenario(new GeneralPipingInput()); + PipingFailureMechanism failureMechanism = new PipingFailureMechanism(); + failureMechanism.CalculationsGroup.Children.Add(calculation); + using (PipingInputView view = new PipingInputView + { + Data = calculation.InputParameters + }) + { + // Call + bool closeForData = info.CloseForData(view, failureMechanism); + + // Assert + Assert.IsTrue(closeForData); + } + } + [Test] + public void CloseForData_ViewNotCorrespondingToRemovedFailureMechanism_ReturnsFalse() + { + // Setup + PipingCalculationScenario calculation = new PipingCalculationScenario(new GeneralPipingInput()); + PipingFailureMechanism failureMechanism = new PipingFailureMechanism(); + failureMechanism.CalculationsGroup.Children.Add(calculation); + + using (PipingInputView view = new PipingInputView + { + Data = calculation.InputParameters + }) + { + // Call + bool closeForData = info.CloseForData(view, new PipingFailureMechanism()); + + // Assert + Assert.IsFalse(closeForData); + } + } + + [Test] + public void CloseForData_NestedViewCorrespondingToRemovedFailureMechanism_ReturnsTrue() + { + // Setup + PipingCalculationScenario calculation = new PipingCalculationScenario(new GeneralPipingInput()); + CalculationGroup calculationGroup = new CalculationGroup(); + calculationGroup.Children.Add(calculation); + + PipingFailureMechanism failureMechanism = new PipingFailureMechanism(); + failureMechanism.CalculationsGroup.Children.Add(calculationGroup); + + using (PipingInputView view = new PipingInputView + { + Data = calculation.InputParameters + }) + { + // Call + bool closeForData = info.CloseForData(view, failureMechanism); + + // Assert + Assert.IsTrue(closeForData); + } + } + + [Test] + public void CloseForData_NestedViewNotCorrespondingToRemovedFailureMechanism_ReturnsFalse() + { + // Setup + PipingCalculationScenario calculation = new PipingCalculationScenario(new GeneralPipingInput()); + CalculationGroup calculationGroup = new CalculationGroup(); + calculationGroup.Children.Add(calculation); + + PipingFailureMechanism failureMechanism = new PipingFailureMechanism(); + failureMechanism.CalculationsGroup.Children.Add(calculationGroup); + + using (PipingInputView view = new PipingInputView + { + Data = calculation.InputParameters + }) + { + // Call + bool closeForData = info.CloseForData(view, new PipingFailureMechanism()); + + // Assert + Assert.IsFalse(closeForData); + } + } + + [Test] public void CloseForData_ViewCorrespondingToRemovedAssessmentSection_ReturnsTrue() { // Setup