Index: Riskeer/Integration/src/Riskeer.Integration.Plugin/RiskeerPlugin.cs =================================================================== diff -u -r3a12a88a3bd19ce54dee64c3ee747df3f8475ce3 -r02952ce44b631f296213e2c133a0d4c72fc574b1 --- Riskeer/Integration/src/Riskeer.Integration.Plugin/RiskeerPlugin.cs (.../RiskeerPlugin.cs) (revision 3a12a88a3bd19ce54dee64c3ee747df3f8475ce3) +++ Riskeer/Integration/src/Riskeer.Integration.Plugin/RiskeerPlugin.cs (.../RiskeerPlugin.cs) (revision 02952ce44b631f296213e2c133a0d4c72fc574b1) @@ -1768,7 +1768,7 @@ var childNodes = new List { new HydraulicBoundaryDatabaseContext(assessmentSection.HydraulicBoundaryDatabase, assessmentSection), - new PipingFailureMechanismCalculationStateContext(assessmentSection.Piping, assessmentSection) + new PipingCalculationsContext(assessmentSection.Piping, assessmentSection) }; childNodes.AddRange(failureMechanisms.Select(failureMechanism => failureMechanismAssociations Index: Riskeer/Integration/test/Riskeer.Integration.Plugin.Test/TreeNodeInfos/CalculationsStateRootContextTreeNodeInfoTest.cs =================================================================== diff -u -rce79c9c34ebed8fa715e523a886269a41e1e50c1 -r02952ce44b631f296213e2c133a0d4c72fc574b1 --- Riskeer/Integration/test/Riskeer.Integration.Plugin.Test/TreeNodeInfos/CalculationsStateRootContextTreeNodeInfoTest.cs (.../CalculationsStateRootContextTreeNodeInfoTest.cs) (revision ce79c9c34ebed8fa715e523a886269a41e1e50c1) +++ Riskeer/Integration/test/Riskeer.Integration.Plugin.Test/TreeNodeInfos/CalculationsStateRootContextTreeNodeInfoTest.cs (.../CalculationsStateRootContextTreeNodeInfoTest.cs) (revision 02952ce44b631f296213e2c133a0d4c72fc574b1) @@ -174,9 +174,9 @@ Assert.AreSame(assessmentSection.HydraulicBoundaryDatabase, hydraulicBoundaryDatabaseContext.WrappedData); Assert.AreSame(assessmentSection, hydraulicBoundaryDatabaseContext.AssessmentSection); - var pipingFailureMechanismContext = (PipingFailureMechanismCalculationStateContext) objects[1]; - Assert.AreSame(assessmentSection.Piping, pipingFailureMechanismContext.WrappedData); - Assert.AreSame(assessmentSection, pipingFailureMechanismContext.Parent); + var pipingCalculationsContext = (PipingCalculationsContext) objects[1]; + Assert.AreSame(assessmentSection.Piping, pipingCalculationsContext.WrappedData); + Assert.AreSame(assessmentSection, pipingCalculationsContext.Parent); var grassCoverErosionInwardsFailureMechanismContext = (GrassCoverErosionInwardsFailureMechanismContext) objects[2]; Assert.AreSame(assessmentSection.GrassCoverErosionInwards, grassCoverErosionInwardsFailureMechanismContext.WrappedData); Index: Riskeer/Piping/src/Riskeer.Piping.Forms/PresentationObjects/PipingCalculationsContext.cs =================================================================== diff -u --- Riskeer/Piping/src/Riskeer.Piping.Forms/PresentationObjects/PipingCalculationsContext.cs (revision 0) +++ Riskeer/Piping/src/Riskeer.Piping.Forms/PresentationObjects/PipingCalculationsContext.cs (revision 02952ce44b631f296213e2c133a0d4c72fc574b1) @@ -0,0 +1,43 @@ +// Copyright (C) Stichting Deltares 2021. All rights reserved. +// +// This file is part of Riskeer. +// +// Riskeer is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +// +// All names, logos, and references to "Deltares" are registered trademarks of +// Stichting Deltares and remain full property of Stichting Deltares at all times. +// All rights reserved. + +using System; +using Riskeer.Common.Data.AssessmentSection; +using Riskeer.Common.Forms.PresentationObjects; +using Riskeer.Piping.Data; + +namespace Riskeer.Piping.Forms.PresentationObjects +{ + /// + /// Presentation object for calculations of . + /// + public class PipingCalculationsContext : FailureMechanismContext + { + /// + /// Creates a new instance of . + /// + /// The failure mechanism. + /// The parent of . + /// Thrown when any parameter is null. + public PipingCalculationsContext(PipingFailureMechanism failureMechanism, IAssessmentSection assessmentSection) + : base(failureMechanism, assessmentSection) {} + } +} \ No newline at end of file Fisheye: Tag 02952ce44b631f296213e2c133a0d4c72fc574b1 refers to a dead (removed) revision in file `Riskeer/Piping/src/Riskeer.Piping.Forms/PresentationObjects/PipingFailureMechanismCalculationStateContext.cs'. Fisheye: No comparison available. Pass `N' to diff? Index: Riskeer/Piping/src/Riskeer.Piping.Plugin/PipingPlugin.cs =================================================================== diff -u -r3a12a88a3bd19ce54dee64c3ee747df3f8475ce3 -r02952ce44b631f296213e2c133a0d4c72fc574b1 --- Riskeer/Piping/src/Riskeer.Piping.Plugin/PipingPlugin.cs (.../PipingPlugin.cs) (revision 3a12a88a3bd19ce54dee64c3ee747df3f8475ce3) +++ Riskeer/Piping/src/Riskeer.Piping.Plugin/PipingPlugin.cs (.../PipingPlugin.cs) (revision 02952ce44b631f296213e2c133a0d4c72fc574b1) @@ -85,7 +85,7 @@ { public override IEnumerable GetPropertyInfos() { - yield return new PropertyInfo + yield return new PropertyInfo { CreateInstance = context => new PipingFailureMechanismProperties(context.WrappedData, context.Parent, new FailureMechanismPropertyChangeHandler()) @@ -240,7 +240,7 @@ public override IEnumerable GetViewInfos() { - yield return new ViewInfo + yield return new ViewInfo { GetViewName = (view, context) => context.WrappedData.Name, Image = RiskeerCommonFormsResources.FailureMechanismIcon, @@ -370,9 +370,9 @@ public override IEnumerable GetTreeNodeInfos() { - yield return RiskeerTreeNodeInfoFactory.CreateFailureMechanismStateContextTreeNodeInfo( - FailureMechanismCalculationStateChildNodeObjects, - FailureMechanismCalculationStateContextMenuStrip); + yield return RiskeerTreeNodeInfoFactory.CreateFailureMechanismStateContextTreeNodeInfo( + CalculationsChildNodeObjects, + CalculationsContextMenuStrip); yield return RiskeerTreeNodeInfoFactory.CreateFailureMechanismStateContextTreeNodeInfo( FailurePathChildNodeObjects, @@ -641,7 +641,7 @@ var assessmentSection = o as IAssessmentSection; var pipingFailureMechanism = o as PipingFailureMechanism; - if (o is PipingFailureMechanismCalculationStateContext context) + if (o is PipingCalculationsContext context) { pipingFailureMechanism = context.WrappedData; } @@ -661,7 +661,7 @@ var assessmentSection = o as IAssessmentSection; var pipingFailureMechanism = o as PipingFailureMechanism; - if (o is PipingFailureMechanismCalculationStateContext context) + if (o is PipingCalculationsContext context) { pipingFailureMechanism = context.WrappedData; } @@ -698,7 +698,7 @@ var failureMechanism = o as PipingFailureMechanism; - if (o is PipingFailureMechanismCalculationStateContext context) + if (o is PipingCalculationsContext context) { failureMechanism = context.WrappedData; } @@ -784,21 +784,21 @@ return assessmentSection.GetNormativeAssessmentLevel(calculation.InputParameters.HydraulicBoundaryLocation); } - #region PipingFailureMechanismCalculationStateContext TreeNodeInfo + #region PipingCalculationsContext TreeNodeInfo - private static object[] FailureMechanismCalculationStateChildNodeObjects(PipingFailureMechanismCalculationStateContext context) + private static object[] CalculationsChildNodeObjects(PipingCalculationsContext context) { PipingFailureMechanism wrappedData = context.WrappedData; IAssessmentSection assessmentSection = context.Parent; return new object[] { - new CategoryTreeFolder(RiskeerCommonFormsResources.FailureMechanism_Inputs_DisplayName, GetCalculationStateInput(wrappedData, assessmentSection), TreeFolderCategory.Input), + new CategoryTreeFolder(RiskeerCommonFormsResources.FailureMechanism_Inputs_DisplayName, GetCalculationsInputs(wrappedData, assessmentSection), TreeFolderCategory.Input), new PipingCalculationGroupContext(wrappedData.CalculationsGroup, null, wrappedData.SurfaceLines, wrappedData.StochasticSoilModels, wrappedData, assessmentSection) }; } - private static IEnumerable GetCalculationStateInput(PipingFailureMechanism failureMechanism, IAssessmentSection assessmentSection) + private static IEnumerable GetCalculationsInputs(PipingFailureMechanism failureMechanism, IAssessmentSection assessmentSection) { return new object[] { @@ -809,9 +809,9 @@ }; } - private ContextMenuStrip FailureMechanismCalculationStateContextMenuStrip(PipingFailureMechanismCalculationStateContext context, - object parentData, - TreeViewControl treeViewControl) + private ContextMenuStrip CalculationsContextMenuStrip(PipingCalculationsContext context, + object parentData, + TreeViewControl treeViewControl) { IEnumerable calculations = context.WrappedData .Calculations @@ -847,7 +847,7 @@ /// The context to validate the calculations from. /// Thrown when any of the calculations in /// is of a type that is not supported. - private static void ValidateAllInFailureMechanism(PipingFailureMechanismCalculationStateContext context) + private static void ValidateAllInFailureMechanism(PipingCalculationsContext context) { ValidateAll(context.WrappedData.Calculations.Cast>(), context.WrappedData, context.Parent); @@ -859,7 +859,7 @@ /// The context to perform the calculations from. /// Thrown when any of the calculations in /// is of a type that is not supported. - private void CalculateAllInFailureMechanism(PipingFailureMechanismCalculationStateContext context) + private void CalculateAllInFailureMechanism(PipingCalculationsContext context) { ActivityProgressDialogRunner.Run( Gui.MainWindow, PipingCalculationActivityFactory.CreateCalculationActivities(context.WrappedData, Index: Riskeer/Piping/test/Riskeer.Piping.Forms.Test/PresentationObjects/PipingCalculationsContextTest.cs =================================================================== diff -u --- Riskeer/Piping/test/Riskeer.Piping.Forms.Test/PresentationObjects/PipingCalculationsContextTest.cs (revision 0) +++ Riskeer/Piping/test/Riskeer.Piping.Forms.Test/PresentationObjects/PipingCalculationsContextTest.cs (revision 02952ce44b631f296213e2c133a0d4c72fc574b1) @@ -0,0 +1,54 @@ +// Copyright (C) Stichting Deltares 2021. All rights reserved. +// +// This file is part of Riskeer. +// +// Riskeer is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +// +// All names, logos, and references to "Deltares" are registered trademarks of +// Stichting Deltares and remain full property of Stichting Deltares at all times. +// All rights reserved. + +using NUnit.Framework; +using Rhino.Mocks; +using Riskeer.Common.Data.AssessmentSection; +using Riskeer.Common.Forms.PresentationObjects; +using Riskeer.Piping.Data; +using Riskeer.Piping.Forms.PresentationObjects; + +namespace Riskeer.Piping.Forms.Test.PresentationObjects +{ + [TestFixture] + public class PipingCalculationsContextTest + { + [Test] + public void Constructor_ExpectedValues() + { + // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + var failureMechanism = new PipingFailureMechanism(); + + // Call + var context = new PipingCalculationsContext(failureMechanism, assessmentSection); + + // Assert + Assert.IsInstanceOf>(context); + Assert.AreSame(assessmentSection, context.Parent); + Assert.AreSame(failureMechanism, context.WrappedData); + mocks.VerifyAll(); + } + } +} \ No newline at end of file Fisheye: Tag 02952ce44b631f296213e2c133a0d4c72fc574b1 refers to a dead (removed) revision in file `Riskeer/Piping/test/Riskeer.Piping.Forms.Test/PresentationObjects/PipingFailureMechanismCalculationStateContextTest.cs'. Fisheye: No comparison available. Pass `N' to diff? Index: Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/PipingPluginTest.cs =================================================================== diff -u -r3a12a88a3bd19ce54dee64c3ee747df3f8475ce3 -r02952ce44b631f296213e2c133a0d4c72fc574b1 --- Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/PipingPluginTest.cs (.../PipingPluginTest.cs) (revision 3a12a88a3bd19ce54dee64c3ee747df3f8475ce3) +++ Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/PipingPluginTest.cs (.../PipingPluginTest.cs) (revision 02952ce44b631f296213e2c133a0d4c72fc574b1) @@ -79,7 +79,7 @@ PluginTestHelper.AssertPropertyInfoDefined( propertyInfos, - typeof(PipingFailureMechanismCalculationStateContext), + typeof(PipingCalculationsContext), typeof(PipingFailureMechanismProperties)); PluginTestHelper.AssertPropertyInfoDefined( @@ -150,7 +150,7 @@ // Assert Assert.AreEqual(20, treeNodeInfos.Length); - Assert.IsTrue(treeNodeInfos.Any(tni => tni.TagType == typeof(PipingFailureMechanismCalculationStateContext))); + Assert.IsTrue(treeNodeInfos.Any(tni => tni.TagType == typeof(PipingCalculationsContext))); Assert.IsTrue(treeNodeInfos.Any(tni => tni.TagType == typeof(PipingFailurePathContext))); Assert.IsTrue(treeNodeInfos.Any(tni => tni.TagType == typeof(PipingSurfaceLinesContext))); Assert.IsTrue(treeNodeInfos.Any(tni => tni.TagType == typeof(PipingSurfaceLine))); @@ -187,7 +187,7 @@ PluginTestHelper.AssertViewInfoDefined( viewInfos, - typeof(PipingFailureMechanismCalculationStateContext), + typeof(PipingCalculationsContext), typeof(PipingFailureMechanismView)); PluginTestHelper.AssertViewInfoDefined( Index: Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/PropertyInfos/PipingFailureMechanismPropertyInfoTest.cs =================================================================== diff -u -rce79c9c34ebed8fa715e523a886269a41e1e50c1 -r02952ce44b631f296213e2c133a0d4c72fc574b1 --- Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/PropertyInfos/PipingFailureMechanismPropertyInfoTest.cs (.../PipingFailureMechanismPropertyInfoTest.cs) (revision ce79c9c34ebed8fa715e523a886269a41e1e50c1) +++ Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/PropertyInfos/PipingFailureMechanismPropertyInfoTest.cs (.../PipingFailureMechanismPropertyInfoTest.cs) (revision 02952ce44b631f296213e2c133a0d4c72fc574b1) @@ -54,7 +54,7 @@ public void Initialized_Always_ExpectedPropertiesSet() { // Assert - Assert.AreEqual(typeof(PipingFailureMechanismCalculationStateContext), info.DataType); + Assert.AreEqual(typeof(PipingCalculationsContext), info.DataType); Assert.AreEqual(typeof(PipingFailureMechanismProperties), info.PropertyObjectType); } @@ -67,7 +67,7 @@ mocks.ReplayAll(); var failureMechanism = new PipingFailureMechanism(); - var context = new PipingFailureMechanismCalculationStateContext(failureMechanism, assessmentSection); + var context = new PipingCalculationsContext(failureMechanism, assessmentSection); // Call IObjectProperties objectProperties = info.CreateInstance(context); Index: Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/TreeNodeInfos/PipingCalculationsContextTreeNodeInfoTest.cs =================================================================== diff -u --- Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/TreeNodeInfos/PipingCalculationsContextTreeNodeInfoTest.cs (revision 0) +++ Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/TreeNodeInfos/PipingCalculationsContextTreeNodeInfoTest.cs (revision 02952ce44b631f296213e2c133a0d4c72fc574b1) @@ -0,0 +1,848 @@ +// Copyright (C) Stichting Deltares 2021. All rights reserved. +// +// This file is part of Riskeer. +// +// Riskeer is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +// +// All names, logos, and references to "Deltares" are registered trademarks of +// Stichting Deltares and remain full property of Stichting Deltares at all times. +// All rights reserved. + +using System; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Windows.Forms; +using Core.Common.Base; +using Core.Common.Controls.TreeView; +using Core.Common.TestUtil; +using Core.Gui; +using Core.Gui.Commands; +using Core.Gui.ContextMenu; +using Core.Gui.Forms.MainWindow; +using Core.Gui.TestUtil.ContextMenu; +using NUnit.Extensions.Forms; +using NUnit.Framework; +using Rhino.Mocks; +using Riskeer.Common.Data; +using Riskeer.Common.Data.AssessmentSection; +using Riskeer.Common.Data.Calculation; +using Riskeer.Common.Data.TestUtil; +using Riskeer.Common.Forms.PresentationObjects; +using Riskeer.Common.Service.TestUtil; +using Riskeer.HydraRing.Calculation.Calculator.Factory; +using Riskeer.HydraRing.Calculation.TestUtil.Calculator; +using Riskeer.Piping.Data; +using Riskeer.Piping.Data.Probabilistic; +using Riskeer.Piping.Data.SemiProbabilistic; +using Riskeer.Piping.Data.TestUtil; +using Riskeer.Piping.Data.TestUtil.Probabilistic; +using Riskeer.Piping.Data.TestUtil.SemiProbabilistic; +using Riskeer.Piping.Forms.PresentationObjects; +using Riskeer.Piping.KernelWrapper.TestUtil.SubCalculator; +using RiskeerCommonFormsResources = Riskeer.Common.Forms.Properties.Resources; +using CoreGuiResources = Core.Gui.Properties.Resources; + +namespace Riskeer.Piping.Plugin.Test.TreeNodeInfos +{ + [TestFixture] + public class PipingCalculationsContextTreeNodeInfoTest : NUnitFormTest + { + private const int contextMenuValidateAllIndex = 2; + private const int contextMenuCalculateAllIndex = 3; + private const int contextMenuClearIndex = 5; + private const int contextMenuClearIllustrationPointsIndex = 6; + + private static readonly string testDataPath = TestHelper.GetTestDataPath(TestDataPath.Riskeer.Integration.Service, "HydraRingCalculation"); + private static readonly string validHydraulicBoundaryDatabaseFilePath = Path.Combine(testDataPath, "HRD dutch coast south.sqlite"); + + private MockRepository mocks; + private PipingPlugin plugin; + private TreeNodeInfo info; + + [Test] + public void Initialized_Always_ExpectedPropertiesSet() + { + // Setup + mocks.ReplayAll(); + + // Assert + Assert.IsNotNull(info.Text); + Assert.IsNotNull(info.ForeColor); + Assert.IsNotNull(info.Image); + Assert.IsNotNull(info.ContextMenuStrip); + Assert.IsNull(info.EnsureVisibleOnCreate); + Assert.IsNull(info.ExpandOnCreate); + Assert.IsNotNull(info.ChildNodeObjects); + Assert.IsNull(info.CanRename); + Assert.IsNull(info.OnNodeRenamed); + Assert.IsNull(info.CanRemove); + Assert.IsNull(info.OnNodeRemoved); + Assert.IsNull(info.CanCheck); + Assert.IsNull(info.CheckedState); + Assert.IsNull(info.OnNodeChecked); + Assert.IsNull(info.CanDrag); + Assert.IsNull(info.CanDrop); + Assert.IsNull(info.CanInsert); + Assert.IsNull(info.OnDrop); + } + + [Test] + public void Text_Always_ReturnsName() + { + // Setup + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + var context = new PipingCalculationsContext(new PipingFailureMechanism(), assessmentSection); + + // Call + string text = info.Text(context); + + // Assert + Assert.AreEqual("Dijken en dammen - Piping", text); + } + + [Test] + public void Image_Always_ReturnsPipingIcon() + { + // Setup + mocks.ReplayAll(); + + // Call + Image image = info.Image(null); + + // Assert + TestHelper.AssertImagesAreEqual(RiskeerCommonFormsResources.HydraulicCalculationIcon, image); + } + + [Test] + public void ChildNodeObjects_Always_ReturnChildDataNodes() + { + // Setup + var assessmentSection = new AssessmentSectionStub(); + var pipingFailureMechanism = new PipingFailureMechanism(); + var context = new PipingCalculationsContext(pipingFailureMechanism, assessmentSection); + + // Call + object[] children = info.ChildNodeObjects(context).ToArray(); + + // Assert + Assert.AreEqual(2, children.Length); + var inputsFolder = (CategoryTreeFolder) children[0]; + Assert.AreEqual("Invoer", inputsFolder.Name); + Assert.AreEqual(TreeFolderCategory.Input, inputsFolder.Category); + + Assert.AreEqual(4, inputsFolder.Contents.Count()); + var failureMechanismSectionsContext = (FailureMechanismSectionsContext) inputsFolder.Contents.ElementAt(0); + Assert.AreSame(pipingFailureMechanism, failureMechanismSectionsContext.WrappedData); + Assert.AreSame(assessmentSection, failureMechanismSectionsContext.AssessmentSection); + + var surfaceLinesContext = (PipingSurfaceLinesContext) inputsFolder.Contents.ElementAt(1); + Assert.AreSame(pipingFailureMechanism.SurfaceLines, surfaceLinesContext.WrappedData); + Assert.AreSame(pipingFailureMechanism, surfaceLinesContext.FailureMechanism); + Assert.AreSame(assessmentSection, surfaceLinesContext.AssessmentSection); + + var stochasticSoilModelContext = (PipingStochasticSoilModelCollectionContext) inputsFolder.Contents.ElementAt(2); + Assert.AreSame(pipingFailureMechanism, stochasticSoilModelContext.FailureMechanism); + Assert.AreSame(pipingFailureMechanism, stochasticSoilModelContext.FailureMechanism); + Assert.AreSame(assessmentSection, stochasticSoilModelContext.AssessmentSection); + + var comment = (Comment) inputsFolder.Contents.ElementAt(3); + Assert.AreSame(pipingFailureMechanism.InputComments, comment); + + var calculationsFolder = (PipingCalculationGroupContext) children[1]; + Assert.AreSame(pipingFailureMechanism.CalculationsGroup, calculationsFolder.WrappedData); + Assert.IsNull(calculationsFolder.Parent); + Assert.AreSame(pipingFailureMechanism.SurfaceLines, calculationsFolder.AvailablePipingSurfaceLines); + Assert.AreSame(pipingFailureMechanism.StochasticSoilModels, calculationsFolder.AvailableStochasticSoilModels); + Assert.AreSame(pipingFailureMechanism, calculationsFolder.FailureMechanism); + } + + [Test] + [TestCase(false)] + [TestCase(true)] + public void GivenMultiplePipingCalculationsWithOutput_WhenClearingOutputFromContextMenu_ThenPipingOutputCleared(bool confirm) + { + // Given + using (var treeViewControl = new TreeViewControl()) + { + var pipingCalculation1 = new TestPipingCalculationScenario(true); + var pipingCalculation2 = new TestPipingCalculationScenario(true); + + var observer = mocks.StrictMock(); + if (confirm) + { + observer.Expect(o => o.UpdateObserver()).Repeat.Twice(); + } + + var failureMechanism = new PipingFailureMechanism(); + failureMechanism.CalculationsGroup.Children.Add(pipingCalculation1); + failureMechanism.CalculationsGroup.Children.Add(pipingCalculation2); + + var assessmentSection = mocks.Stub(); + var context = new PipingCalculationsContext(failureMechanism, assessmentSection); + + var menuBuilder = new CustomItemsOnlyContextMenuBuilder(); + + var gui = mocks.Stub(); + gui.Stub(cmp => cmp.Get(context, treeViewControl)).Return(menuBuilder); + gui.Stub(cmp => cmp.MainWindow).Return(mocks.Stub()); + mocks.ReplayAll(); + + plugin.Gui = gui; + + failureMechanism.CalculationsGroup.Children.Add(pipingCalculation1); + failureMechanism.CalculationsGroup.Children.Add(pipingCalculation2); + failureMechanism.CalculationsGroup.Children.ElementAt(0).Attach(observer); + failureMechanism.CalculationsGroup.Children.ElementAt(1).Attach(observer); + + string messageBoxTitle = null, messageBoxText = null; + DialogBoxHandler = (name, wnd) => + { + var messageBox = new MessageBoxTester(wnd); + + messageBoxText = messageBox.Text; + messageBoxTitle = messageBox.Title; + + if (confirm) + { + messageBox.ClickOk(); + } + else + { + messageBox.ClickCancel(); + } + }; + + using (ContextMenuStrip contextMenuStrip = info.ContextMenuStrip(context, null, treeViewControl)) + { + // When + contextMenuStrip.Items[contextMenuClearIndex].PerformClick(); + + // Then + foreach (ICalculation calc in failureMechanism.CalculationsGroup.Children.OfType()) + { + Assert.AreNotEqual(confirm, calc.HasOutput); + } + + Assert.AreEqual("Bevestigen", messageBoxTitle); + Assert.AreEqual("Weet u zeker dat u alle uitvoer wilt wissen?", messageBoxText); + } + } + } + + [Test] + public void ContextMenuStrip_FailureMechanismHasCalculationWithOutput_ReturnsContextMenuWithCommonItems() + { + // Setup + var failureMechanism = new TestPipingFailureMechanism(); + var pipingCalculation = new TestPipingCalculationScenario(true); + failureMechanism.CalculationsGroup.Children.Add(pipingCalculation); + + var assessmentSection = mocks.Stub(); + var context = new PipingCalculationsContext(failureMechanism, assessmentSection); + + var applicationFeatureCommandHandler = mocks.Stub(); + var importCommandHandler = mocks.Stub(); + var exportCommandHandler = mocks.Stub(); + var updateCommandHandler = mocks.Stub(); + var viewCommandsHandler = mocks.Stub(); + + using (var treeViewControl = new TreeViewControl()) + { + var menuBuilder = new ContextMenuBuilder(applicationFeatureCommandHandler, + importCommandHandler, + exportCommandHandler, + updateCommandHandler, + viewCommandsHandler, + context, + treeViewControl); + + var gui = mocks.Stub(); + gui.Stub(cmp => cmp.Get(context, treeViewControl)).Return(menuBuilder); + gui.Stub(cmp => cmp.MainWindow).Return(mocks.Stub()); + mocks.ReplayAll(); + + plugin.Gui = gui; + + // Call + using (ContextMenuStrip menu = info.ContextMenuStrip(context, null, treeViewControl)) + { + // Assert + Assert.AreEqual(12, menu.Items.Count); + + TestHelper.AssertContextMenuStripContainsItem(menu, + 0, + "&Openen", + "Open de gegevens in een nieuw documentvenster.", + CoreGuiResources.OpenIcon, + false); + + TestHelper.AssertContextMenuStripContainsItem(menu, + 2, + "Alles &valideren", + "Valideer alle berekeningen binnen dit toetsspoor.", + RiskeerCommonFormsResources.ValidateAllIcon); + TestHelper.AssertContextMenuStripContainsItem(menu, + 3, + "Alles be&rekenen", + "Voer alle berekeningen binnen dit toetsspoor uit.", + RiskeerCommonFormsResources.CalculateAllIcon); + TestHelper.AssertContextMenuStripContainsItem(menu, + 5, + "&Wis alle uitvoer...", + "Wis de uitvoer van alle berekeningen binnen dit toetsspoor.", + RiskeerCommonFormsResources.ClearIcon); + + TestHelper.AssertContextMenuStripContainsItem(menu, + 6, + "Wis alle illustratiepunten...", + "Er zijn geen berekeningen met illustratiepunten om te wissen.", + RiskeerCommonFormsResources.ClearIllustrationPointsIcon, + false); + + TestHelper.AssertContextMenuStripContainsItem(menu, + 8, + "Alles i&nklappen", + "Klap dit element en alle onderliggende elementen in.", + CoreGuiResources.CollapseAllIcon, + false); + TestHelper.AssertContextMenuStripContainsItem(menu, + 9, + "Alles ui&tklappen", + "Klap dit element en alle onderliggende elementen uit.", + CoreGuiResources.ExpandAllIcon, + false); + + TestHelper.AssertContextMenuStripContainsItem(menu, + 11, + "Ei&genschappen", + "Toon de eigenschappen in het Eigenschappenpaneel.", + CoreGuiResources.PropertiesHS, + false); + + CollectionAssert.AllItemsAreInstancesOfType(new[] + { + menu.Items[1], + menu.Items[4], + menu.Items[7], + menu.Items[10] + }, typeof(ToolStripSeparator)); + } + } + } + + [Test] + public void ContextMenuStrip_FailureMechanismHasNoCalculationsWithOutput_ContextMenuItemsClearOutputAndClearIllustrationPointsDisabledAndToolTipSet() + { + // Setup + using (var treeViewControl = new TreeViewControl()) + { + var menuBuilder = new CustomItemsOnlyContextMenuBuilder(); + + var failureMechanism = mocks.StrictMock(); + failureMechanism.Stub(dm => dm.Calculations).Return(new[] + { + new TestPipingCalculationScenario() + }); + + var assessmentSection = mocks.Stub(); + var context = new PipingCalculationsContext(failureMechanism, assessmentSection); + + var gui = mocks.Stub(); + gui.Stub(cmp => cmp.Get(context, treeViewControl)).Return(menuBuilder); + gui.Stub(cmp => cmp.MainWindow).Return(mocks.Stub()); + mocks.ReplayAll(); + + plugin.Gui = gui; + + // Call + using (ContextMenuStrip contextMenu = info.ContextMenuStrip(context, null, treeViewControl)) + { + // Assert + ToolStripItem clearOutputItem = contextMenu.Items[contextMenuClearIndex]; + Assert.IsFalse(clearOutputItem.Enabled); + Assert.AreEqual("Er zijn geen berekeningen met uitvoer om te wissen.", clearOutputItem.ToolTipText); + + ToolStripItem clearIllustrationPointsItem = contextMenu.Items[contextMenuClearIllustrationPointsIndex]; + Assert.IsFalse(clearOutputItem.Enabled); + Assert.AreEqual("Er zijn geen berekeningen met illustratiepunten om te wissen.", clearIllustrationPointsItem.ToolTipText); + } + } + } + + [Test] + public void ContextMenuStrip_FailureMechanismHasCalculationsWithOutput_ContextMenuItemClearAllOutputEnabledAndToolTipSet() + { + // Setup + using (var treeViewControl = new TreeViewControl()) + { + var pipingCalculation = new TestPipingCalculationScenario(true); + + var failureMechanism = new PipingFailureMechanism(); + failureMechanism.CalculationsGroup.Children.Add(pipingCalculation); + + var assessmentSection = mocks.Stub(); + var context = new PipingCalculationsContext(failureMechanism, assessmentSection); + + var menuBuilder = new CustomItemsOnlyContextMenuBuilder(); + + var gui = mocks.Stub(); + gui.Stub(cmp => cmp.Get(context, treeViewControl)).Return(menuBuilder); + gui.Stub(cmp => cmp.MainWindow).Return(mocks.Stub()); + mocks.ReplayAll(); + + plugin.Gui = gui; + + failureMechanism.CalculationsGroup.Children.Add(pipingCalculation); + + // Call + using (ContextMenuStrip contextMenu = info.ContextMenuStrip(context, null, treeViewControl)) + { + // Assert + ToolStripItem clearOutputItem = contextMenu.Items[contextMenuClearIndex]; + Assert.IsTrue(clearOutputItem.Enabled); + Assert.AreEqual("Wis de uitvoer van alle berekeningen binnen dit toetsspoor.", clearOutputItem.ToolTipText); + } + } + } + + [Test] + public void ContextMenuStrip_FailureMechanismHasCalculationsWithIllustrationPoints_ContextMenuItemClearAllIllustrationPointsOutputEnabledAndToolTipSet() + { + // Setup + using (var treeViewControl = new TreeViewControl()) + { + var pipingCalculation = new ProbabilisticPipingCalculationScenario + { + Output = PipingTestDataGenerator.GetRandomProbabilisticPipingOutputWithIllustrationPoints() + }; + + var failureMechanism = new PipingFailureMechanism(); + failureMechanism.CalculationsGroup.Children.Add(pipingCalculation); + + var assessmentSection = mocks.Stub(); + var context = new PipingCalculationsContext(failureMechanism, assessmentSection); + + var menuBuilder = new CustomItemsOnlyContextMenuBuilder(); + + var gui = mocks.Stub(); + gui.Stub(cmp => cmp.Get(context, treeViewControl)).Return(menuBuilder); + gui.Stub(cmp => cmp.MainWindow).Return(mocks.Stub()); + mocks.ReplayAll(); + + plugin.Gui = gui; + + failureMechanism.CalculationsGroup.Children.Add(pipingCalculation); + + // Call + using (ContextMenuStrip contextMenu = info.ContextMenuStrip(context, null, treeViewControl)) + { + // Assert + ToolStripItem clearOutputItem = contextMenu.Items[contextMenuClearIllustrationPointsIndex]; + Assert.IsTrue(clearOutputItem.Enabled); + Assert.AreEqual("Wis alle berekende illustratiepunten binnen dit toetsspoor.", clearOutputItem.ToolTipText); + } + } + } + + [Test] + public void ContextMenuStrip_FailureMechanismHasCalculationsWithoutIllustrationPoints_ContextMenuItemClearAllIllustrationPointsDisabledAndToolTipSet() + { + // Setup + using (var treeViewControl = new TreeViewControl()) + { + var pipingCalculation = new ProbabilisticPipingCalculationScenario + { + Output = PipingTestDataGenerator.GetRandomProbabilisticPipingOutputWithoutIllustrationPoints() + }; + + var failureMechanism = new PipingFailureMechanism(); + failureMechanism.CalculationsGroup.Children.Add(pipingCalculation); + + var assessmentSection = mocks.Stub(); + var context = new PipingCalculationsContext(failureMechanism, assessmentSection); + + var menuBuilder = new CustomItemsOnlyContextMenuBuilder(); + + var gui = mocks.Stub(); + gui.Stub(cmp => cmp.Get(context, treeViewControl)).Return(menuBuilder); + gui.Stub(cmp => cmp.MainWindow).Return(mocks.Stub()); + mocks.ReplayAll(); + + plugin.Gui = gui; + + failureMechanism.CalculationsGroup.Children.Add(pipingCalculation); + + // Call + using (ContextMenuStrip contextMenu = info.ContextMenuStrip(context, null, treeViewControl)) + { + // Assert + ToolStripItem clearOutputItem = contextMenu.Items[contextMenuClearIllustrationPointsIndex]; + Assert.IsFalse(clearOutputItem.Enabled); + Assert.AreEqual("Er zijn geen berekeningen met illustratiepunten om te wissen.", clearOutputItem.ToolTipText); + } + } + } + + [Test] + public void ContextMenuStrip_AllRequiredInputSet_ContextMenuItemCalculateAllAndValidateAllEnabled() + { + // Setup + using (var treeViewControl = new TreeViewControl()) + { + var assessmentSection = new AssessmentSectionStub(); + var failureMechanism = new TestPipingFailureMechanism + { + CalculationsGroup = + { + Children = + { + new TestPipingCalculationScenario() + } + } + }; + + var context = new PipingCalculationsContext(failureMechanism, assessmentSection); + + var menuBuilder = new CustomItemsOnlyContextMenuBuilder(); + + var gui = mocks.Stub(); + gui.Stub(cmp => cmp.Get(context, treeViewControl)).Return(menuBuilder); + gui.Stub(cmp => cmp.MainWindow).Return(mocks.Stub()); + mocks.ReplayAll(); + + plugin.Gui = gui; + + // Call + using (ContextMenuStrip contextMenu = info.ContextMenuStrip(context, null, treeViewControl)) + { + // Assert + TestHelper.AssertContextMenuStripContainsItem(contextMenu, contextMenuCalculateAllIndex, + "Alles be&rekenen", + "Voer alle berekeningen binnen dit toetsspoor uit.", + RiskeerCommonFormsResources.CalculateAllIcon); + + TestHelper.AssertContextMenuStripContainsItem(contextMenu, contextMenuValidateAllIndex, + "Alles &valideren", + "Valideer alle berekeningen binnen dit toetsspoor.", + RiskeerCommonFormsResources.ValidateAllIcon); + } + } + } + + [Test] + public void ContextMenuStrip_Always_CallsContextMenuBuilderMethods() + { + // Setup + using (var treeViewControl = new TreeViewControl()) + { + var pipingFailureMechanism = new PipingFailureMechanism(); + var assessmentSection = mocks.Stub(); + var context = new PipingCalculationsContext(pipingFailureMechanism, assessmentSection); + + var menuBuilder = mocks.StrictMock(); + using (mocks.Ordered()) + { + menuBuilder.Expect(mb => mb.AddOpenItem()).Return(menuBuilder); + menuBuilder.Expect(mb => mb.AddSeparator()).Return(menuBuilder); + menuBuilder.Expect(mb => mb.AddCustomItem(null)).IgnoreArguments().Return(menuBuilder); + menuBuilder.Expect(mb => mb.AddCustomItem(null)).IgnoreArguments().Return(menuBuilder); + menuBuilder.Expect(mb => mb.AddSeparator()).Return(menuBuilder); + menuBuilder.Expect(mb => mb.AddCustomItem(null)).IgnoreArguments().Return(menuBuilder); + menuBuilder.Expect(mb => mb.AddCustomItem(null)).IgnoreArguments().Return(menuBuilder); + menuBuilder.Expect(mb => mb.AddSeparator()).Return(menuBuilder); + menuBuilder.Expect(mb => mb.AddCollapseAllItem()).Return(menuBuilder); + menuBuilder.Expect(mb => mb.AddExpandAllItem()).Return(menuBuilder); + menuBuilder.Expect(mb => mb.AddSeparator()).Return(menuBuilder); + menuBuilder.Expect(mb => mb.AddPropertiesItem()).Return(menuBuilder); + menuBuilder.Expect(mb => mb.Build()).Return(null); + } + + var gui = mocks.Stub(); + gui.Stub(cmp => cmp.Get(context, treeViewControl)).Return(menuBuilder); + gui.Stub(cmp => cmp.MainWindow).Return(mocks.Stub()); + mocks.ReplayAll(); + + plugin.Gui = gui; + + // Call + info.ContextMenuStrip(context, null, treeViewControl); + } + + // Assert + // Assert expectancies are called in TearDown() + } + + [Test] + public void ContextMenuStrip_ClickOnValidateAllItem_ValidateAllChildCalculations() + { + // Setup + using (var treeViewControl = new TreeViewControl()) + { + var assessmentSection = new AssessmentSectionStub(); + var hydraulicBoundaryLocation = new TestHydraulicBoundaryLocation(); + TestPipingFailureMechanism failureMechanism = TestPipingFailureMechanism.GetFailureMechanismWithSurfaceLinesAndStochasticSoilModels(); + + assessmentSection.HydraulicBoundaryDatabase.FilePath = validHydraulicBoundaryDatabaseFilePath; + HydraulicBoundaryDatabaseTestHelper.SetHydraulicBoundaryLocationConfigurationSettings(assessmentSection.HydraulicBoundaryDatabase); + assessmentSection.SetHydraulicBoundaryLocationCalculations(new[] + { + hydraulicBoundaryLocation + }, true); + + var validSemiProbabilisticCalculation = + SemiProbabilisticPipingCalculationTestFactory.CreateCalculationWithValidInput( + hydraulicBoundaryLocation); + var invalidSemiProbabilisticCalculation = + SemiProbabilisticPipingCalculationTestFactory.CreateCalculationWithInvalidInput(); + var validProbabilisticCalculation = + ProbabilisticPipingCalculationTestFactory.CreateCalculationWithValidInput( + hydraulicBoundaryLocation); + var invalidProbabilisticCalculation = + ProbabilisticPipingCalculationTestFactory.CreateCalculationWithInvalidInput(); + + failureMechanism.CalculationsGroup.Children.Add(validSemiProbabilisticCalculation); + failureMechanism.CalculationsGroup.Children.Add(invalidProbabilisticCalculation); + failureMechanism.CalculationsGroup.Children.Add(validProbabilisticCalculation); + failureMechanism.CalculationsGroup.Children.Add(invalidSemiProbabilisticCalculation); + + var context = new PipingCalculationsContext(failureMechanism, assessmentSection); + + var menuBuilder = new CustomItemsOnlyContextMenuBuilder(); + + var gui = mocks.Stub(); + gui.Stub(g => g.Get(context, treeViewControl)).Return(menuBuilder); + gui.Stub(cmp => cmp.MainWindow).Return(mocks.Stub()); + mocks.ReplayAll(); + + plugin.Gui = gui; + + using (ContextMenuStrip contextMenu = info.ContextMenuStrip(context, null, treeViewControl)) + { + // Call + void Call() => contextMenu.Items[contextMenuValidateAllIndex].PerformClick(); + + // Assert + TestHelper.AssertLogMessages(Call, messages => + { + string[] msgs = messages.ToArray(); + Assert.AreEqual(18, msgs.Length); + CalculationServiceTestHelper.AssertValidationStartMessage(msgs[0]); + CalculationServiceTestHelper.AssertValidationEndMessage(msgs[1]); + CalculationServiceTestHelper.AssertValidationStartMessage(msgs[2]); + CalculationServiceTestHelper.AssertValidationEndMessage(msgs[8]); + CalculationServiceTestHelper.AssertValidationStartMessage(msgs[9]); + CalculationServiceTestHelper.AssertValidationEndMessage(msgs[10]); + CalculationServiceTestHelper.AssertValidationStartMessage(msgs[11]); + CalculationServiceTestHelper.AssertValidationEndMessage(msgs[17]); + }); + } + } + } + + [Test] + public void GivenFailureMechanismWithCalculationOfUnsupportedType_WhenValidatingAllFromContextMenu_ThenThrowsNotSupportedException() + { + // Given + using (var treeViewControl = new TreeViewControl()) + { + var assessmentSection = new AssessmentSectionStub(); + var failureMechanism = new TestPipingFailureMechanism(); + + failureMechanism.CalculationsGroup.Children.Add(new TestPipingCalculationScenario()); + + var context = new PipingCalculationsContext(failureMechanism, assessmentSection); + + var menuBuilder = new CustomItemsOnlyContextMenuBuilder(); + + var gui = mocks.Stub(); + gui.Stub(g => g.Get(context, treeViewControl)).Return(menuBuilder); + gui.Stub(cmp => cmp.MainWindow).Return(mocks.Stub()); + + mocks.ReplayAll(); + + plugin.Gui = gui; + + using (ContextMenuStrip contextMenu = info.ContextMenuStrip(context, null, treeViewControl)) + { + // When + void Call() => contextMenu.Items[contextMenuValidateAllIndex].PerformClick(); + + // Then + Assert.Throws(Call); + } + } + } + + [Test] + public void ContextMenuStrip_ClickOnCalculateAllItem_ScheduleAllChildCalculations() + { + // Setup + using (var treeViewControl = new TreeViewControl()) + { + var assessmentSection = new AssessmentSectionStub(); + var hydraulicBoundaryLocation = new TestHydraulicBoundaryLocation(); + TestPipingFailureMechanism failureMechanism = TestPipingFailureMechanism.GetFailureMechanismWithSurfaceLinesAndStochasticSoilModels(); + + assessmentSection.HydraulicBoundaryDatabase.FilePath = validHydraulicBoundaryDatabaseFilePath; + HydraulicBoundaryDatabaseTestHelper.SetHydraulicBoundaryLocationConfigurationSettings(assessmentSection.HydraulicBoundaryDatabase); + assessmentSection.SetHydraulicBoundaryLocationCalculations(new[] + { + hydraulicBoundaryLocation + }, true); + + var calculationA = + SemiProbabilisticPipingCalculationTestFactory.CreateCalculationWithValidInput( + hydraulicBoundaryLocation); + var calculationB = + SemiProbabilisticPipingCalculationTestFactory.CreateCalculationWithValidInput( + hydraulicBoundaryLocation); + var calculationC = + ProbabilisticPipingCalculationTestFactory.CreateCalculationWithValidInput( + hydraulicBoundaryLocation); + var calculationD = + ProbabilisticPipingCalculationTestFactory.CreateCalculationWithValidInput( + hydraulicBoundaryLocation); + + calculationA.Name = "A"; + calculationB.Name = "B"; + calculationC.Name = "C"; + calculationD.Name = "D"; + + failureMechanism.CalculationsGroup.Children.Add(calculationA); + failureMechanism.CalculationsGroup.Children.Add(calculationC); + failureMechanism.CalculationsGroup.Children.Add(calculationB); + failureMechanism.CalculationsGroup.Children.Add(calculationD); + + var context = new PipingCalculationsContext(failureMechanism, assessmentSection); + + var mainWindow = mocks.Stub(); + var menuBuilder = new CustomItemsOnlyContextMenuBuilder(); + + var gui = mocks.Stub(); + gui.Stub(g => g.Get(context, treeViewControl)).Return(menuBuilder); + gui.Stub(g => g.MainWindow).Return(mainWindow); + + var calculatorFactory = mocks.Stub(); + calculatorFactory.Stub(cf => cf.CreatePipingCalculator(null)) + .IgnoreArguments() + .Return(new TestPipingCalculator()); + + mocks.ReplayAll(); + + plugin.Gui = gui; + + DialogBoxHandler = (name, wnd) => + { + // Expect an activity dialog which is automatically closed + }; + + using (new PipingSubCalculatorFactoryConfig()) + using (new HydraRingCalculatorFactoryConfig(calculatorFactory)) + using (ContextMenuStrip contextMenu = info.ContextMenuStrip(context, null, treeViewControl)) + { + // Call + void Call() => contextMenu.Items[contextMenuCalculateAllIndex].PerformClick(); + + // Assert + TestHelper.AssertLogMessages(Call, messages => + { + string[] msgs = messages.ToArray(); + Assert.AreEqual(28, msgs.Length); + + Assert.AreEqual("Uitvoeren van berekening 'A' is gestart.", msgs[0]); + CalculationServiceTestHelper.AssertValidationStartMessage(msgs[1]); + CalculationServiceTestHelper.AssertValidationEndMessage(msgs[2]); + CalculationServiceTestHelper.AssertCalculationStartMessage(msgs[3]); + CalculationServiceTestHelper.AssertCalculationEndMessage(msgs[4]); + Assert.AreEqual("Uitvoeren van berekening 'A' is gelukt.", msgs[5]); + + Assert.AreEqual("Uitvoeren van berekening 'C' is gestart.", msgs[6]); + CalculationServiceTestHelper.AssertValidationStartMessage(msgs[7]); + CalculationServiceTestHelper.AssertValidationEndMessage(msgs[8]); + CalculationServiceTestHelper.AssertCalculationStartMessage(msgs[9]); + CalculationServiceTestHelper.AssertCalculationEndMessage(msgs[12]); + Assert.AreEqual("Uitvoeren van berekening 'C' is gelukt.", msgs[13]); + + Assert.AreEqual("Uitvoeren van berekening 'B' is gestart.", msgs[14]); + CalculationServiceTestHelper.AssertValidationStartMessage(msgs[15]); + CalculationServiceTestHelper.AssertValidationEndMessage(msgs[16]); + CalculationServiceTestHelper.AssertCalculationStartMessage(msgs[17]); + CalculationServiceTestHelper.AssertCalculationEndMessage(msgs[18]); + Assert.AreEqual("Uitvoeren van berekening 'B' is gelukt.", msgs[19]); + + Assert.AreEqual("Uitvoeren van berekening 'D' is gestart.", msgs[20]); + CalculationServiceTestHelper.AssertValidationStartMessage(msgs[21]); + CalculationServiceTestHelper.AssertValidationEndMessage(msgs[22]); + CalculationServiceTestHelper.AssertCalculationStartMessage(msgs[23]); + CalculationServiceTestHelper.AssertCalculationEndMessage(msgs[26]); + Assert.AreEqual("Uitvoeren van berekening 'D' is gelukt.", msgs[27]); + }); + } + } + } + + [Test] + public void GivenFailureMechanismWithCalculationOfUnsupportedType_WhenCalculatingAllFromContextMenu_ThenThrowsNotSupportedException() + { + // Given + using (var treeViewControl = new TreeViewControl()) + { + var assessmentSection = new AssessmentSectionStub(); + var failureMechanism = new TestPipingFailureMechanism(); + + failureMechanism.CalculationsGroup.Children.Add(new TestPipingCalculationScenario()); + + var context = new PipingCalculationsContext(failureMechanism, assessmentSection); + + var mainWindow = mocks.Stub(); + var menuBuilder = new CustomItemsOnlyContextMenuBuilder(); + + var gui = mocks.Stub(); + gui.Stub(g => g.Get(context, treeViewControl)).Return(menuBuilder); + gui.Stub(g => g.MainWindow).Return(mainWindow); + + mocks.ReplayAll(); + + plugin.Gui = gui; + + using (ContextMenuStrip contextMenu = info.ContextMenuStrip(context, null, treeViewControl)) + { + // When + void Call() => contextMenu.Items[contextMenuCalculateAllIndex].PerformClick(); + + // Then + Assert.Throws(Call); + } + } + } + + public override void Setup() + { + mocks = new MockRepository(); + plugin = new PipingPlugin(); + info = plugin.GetTreeNodeInfos().First(tni => tni.TagType == typeof(PipingCalculationsContext)); + } + + public override void TearDown() + { + plugin.Dispose(); + mocks.VerifyAll(); + + base.TearDown(); + } + } +} \ No newline at end of file Fisheye: Tag 02952ce44b631f296213e2c133a0d4c72fc574b1 refers to a dead (removed) revision in file `Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/TreeNodeInfos/PipingFailureMechanismCalculationStateContextTreeNodeInfoTest.cs'. Fisheye: No comparison available. Pass `N' to diff? Index: Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/ViewInfos/PipingCalculationsViewInfoTest.cs =================================================================== diff -u -r2ccc9719a576f038a60d33dda2a07bcb69b3c466 -r02952ce44b631f296213e2c133a0d4c72fc574b1 --- Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/ViewInfos/PipingCalculationsViewInfoTest.cs (.../PipingCalculationsViewInfoTest.cs) (revision 2ccc9719a576f038a60d33dda2a07bcb69b3c466) +++ Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/ViewInfos/PipingCalculationsViewInfoTest.cs (.../PipingCalculationsViewInfoTest.cs) (revision 02952ce44b631f296213e2c133a0d4c72fc574b1) @@ -278,7 +278,7 @@ using (var view = new PipingCalculationsView(new CalculationGroup(), new PipingFailureMechanism(), assessmentSection)) { - var context = new PipingFailureMechanismCalculationStateContext(new PipingFailureMechanism(), assessmentSection); + var context = new PipingCalculationsContext(new PipingFailureMechanism(), assessmentSection); // Call bool closeForData = info.CloseForData(view, context); @@ -302,7 +302,7 @@ var failureMechanism = new PipingFailureMechanism(); using (var view = new PipingCalculationsView(failureMechanism.CalculationsGroup, failureMechanism, assessmentSection)) { - var context = new PipingFailureMechanismCalculationStateContext(failureMechanism, assessmentSection); + var context = new PipingCalculationsContext(failureMechanism, assessmentSection); // Call bool closeForData = info.CloseForData(view, context); Index: Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/ViewInfos/PipingFailureMechanismResultViewInfoTest.cs =================================================================== diff -u -r2ccc9719a576f038a60d33dda2a07bcb69b3c466 -r02952ce44b631f296213e2c133a0d4c72fc574b1 --- Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/ViewInfos/PipingFailureMechanismResultViewInfoTest.cs (.../PipingFailureMechanismResultViewInfoTest.cs) (revision 2ccc9719a576f038a60d33dda2a07bcb69b3c466) +++ Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/ViewInfos/PipingFailureMechanismResultViewInfoTest.cs (.../PipingFailureMechanismResultViewInfoTest.cs) (revision 02952ce44b631f296213e2c133a0d4c72fc574b1) @@ -231,7 +231,7 @@ mocks.ReplayAll(); var failureMechanism = new PipingFailureMechanism(); - var context = new PipingFailureMechanismCalculationStateContext(failureMechanism, assessmentSection); + var context = new PipingCalculationsContext(failureMechanism, assessmentSection); using (var view = new PipingFailureMechanismResultView(failureMechanism.SectionResults, failureMechanism, assessmentSection)) { // Call @@ -254,7 +254,7 @@ var failureMechanism = new PipingFailureMechanism(); using (var view = new PipingFailureMechanismResultView(failureMechanism.SectionResults, failureMechanism, assessmentSection)) { - var context = new PipingFailureMechanismCalculationStateContext( + var context = new PipingCalculationsContext( new PipingFailureMechanism(), assessmentSection); Index: Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/ViewInfos/PipingFailureMechanismViewInfoTest.cs =================================================================== diff -u -rce79c9c34ebed8fa715e523a886269a41e1e50c1 -r02952ce44b631f296213e2c133a0d4c72fc574b1 --- Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/ViewInfos/PipingFailureMechanismViewInfoTest.cs (.../PipingFailureMechanismViewInfoTest.cs) (revision ce79c9c34ebed8fa715e523a886269a41e1e50c1) +++ Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/ViewInfos/PipingFailureMechanismViewInfoTest.cs (.../PipingFailureMechanismViewInfoTest.cs) (revision 02952ce44b631f296213e2c133a0d4c72fc574b1) @@ -60,8 +60,8 @@ public void Initialized_Always_ExpectedPropertiesSet() { // Assert - Assert.AreEqual(typeof(PipingFailureMechanismCalculationStateContext), info.DataType); - Assert.AreEqual(typeof(PipingFailureMechanismCalculationStateContext), info.ViewDataType); + Assert.AreEqual(typeof(PipingCalculationsContext), info.DataType); + Assert.AreEqual(typeof(PipingCalculationsContext), info.ViewDataType); } [Test] @@ -72,7 +72,7 @@ mocks.ReplayAll(); var failureMechanism = new PipingFailureMechanism(); - var context = new PipingFailureMechanismCalculationStateContext(failureMechanism, assessmentSection); + var context = new PipingCalculationsContext(failureMechanism, assessmentSection); // Call string viewName = info.GetViewName(null, context); @@ -180,7 +180,7 @@ IsRelevant = isRelevant }; - var context = new PipingFailureMechanismCalculationStateContext(failureMechanism, assessmentSection); + var context = new PipingCalculationsContext(failureMechanism, assessmentSection); // Call bool result = info.AdditionalDataCheck(context); @@ -197,7 +197,7 @@ var assessmentSection = new AssessmentSectionStub(); var failureMechanism = new PipingFailureMechanism(); - var context = new PipingFailureMechanismCalculationStateContext(failureMechanism, assessmentSection); + var context = new PipingCalculationsContext(failureMechanism, assessmentSection); // Call IView view = info.CreateInstance(context); Index: Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/ViewInfos/PipingScenariosViewInfoTest.cs =================================================================== diff -u -r2ccc9719a576f038a60d33dda2a07bcb69b3c466 -r02952ce44b631f296213e2c133a0d4c72fc574b1 --- Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/ViewInfos/PipingScenariosViewInfoTest.cs (.../PipingScenariosViewInfoTest.cs) (revision 2ccc9719a576f038a60d33dda2a07bcb69b3c466) +++ Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/ViewInfos/PipingScenariosViewInfoTest.cs (.../PipingScenariosViewInfoTest.cs) (revision 02952ce44b631f296213e2c133a0d4c72fc574b1) @@ -216,7 +216,7 @@ mocks.ReplayAll(); var failureMechanism = new PipingFailureMechanism(); - var context = new PipingFailureMechanismCalculationStateContext(new PipingFailureMechanism(), assessmentSection); + var context = new PipingCalculationsContext(new PipingFailureMechanism(), assessmentSection); using (var view = new PipingScenariosView(failureMechanism.CalculationsGroup, failureMechanism, assessmentSection)) { @@ -238,7 +238,7 @@ mocks.ReplayAll(); var failureMechanism = new PipingFailureMechanism(); - var context = new PipingFailureMechanismCalculationStateContext(failureMechanism, assessmentSection); + var context = new PipingCalculationsContext(failureMechanism, assessmentSection); using (var view = new PipingScenariosView(failureMechanism.CalculationsGroup, failureMechanism, assessmentSection)) { Index: Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/ViewInfos/ProbabilisticFaultTreePipingProfileSpecificOutputViewInfoTest.cs =================================================================== diff -u -rce79c9c34ebed8fa715e523a886269a41e1e50c1 -r02952ce44b631f296213e2c133a0d4c72fc574b1 --- Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/ViewInfos/ProbabilisticFaultTreePipingProfileSpecificOutputViewInfoTest.cs (.../ProbabilisticFaultTreePipingProfileSpecificOutputViewInfoTest.cs) (revision ce79c9c34ebed8fa715e523a886269a41e1e50c1) +++ Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/ViewInfos/ProbabilisticFaultTreePipingProfileSpecificOutputViewInfoTest.cs (.../ProbabilisticFaultTreePipingProfileSpecificOutputViewInfoTest.cs) (revision 02952ce44b631f296213e2c133a0d4c72fc574b1) @@ -245,7 +245,7 @@ protected override IFailureMechanismContext GetFailureMechanismContextWithCalculation() { - return new PipingFailureMechanismCalculationStateContext( + return new PipingCalculationsContext( new PipingFailureMechanism { CalculationsGroup = Index: Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/ViewInfos/ProbabilisticFaultTreePipingSectionSpecificOutputViewInfoTest.cs =================================================================== diff -u -rce79c9c34ebed8fa715e523a886269a41e1e50c1 -r02952ce44b631f296213e2c133a0d4c72fc574b1 --- Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/ViewInfos/ProbabilisticFaultTreePipingSectionSpecificOutputViewInfoTest.cs (.../ProbabilisticFaultTreePipingSectionSpecificOutputViewInfoTest.cs) (revision ce79c9c34ebed8fa715e523a886269a41e1e50c1) +++ Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/ViewInfos/ProbabilisticFaultTreePipingSectionSpecificOutputViewInfoTest.cs (.../ProbabilisticFaultTreePipingSectionSpecificOutputViewInfoTest.cs) (revision 02952ce44b631f296213e2c133a0d4c72fc574b1) @@ -216,7 +216,7 @@ protected override IFailureMechanismContext GetFailureMechanismContextWithCalculation() { - return new PipingFailureMechanismCalculationStateContext( + return new PipingCalculationsContext( new PipingFailureMechanism { CalculationsGroup = Index: Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/ViewInfos/ProbabilisticPipingInputViewInfoTest.cs =================================================================== diff -u -r2ccc9719a576f038a60d33dda2a07bcb69b3c466 -r02952ce44b631f296213e2c133a0d4c72fc574b1 --- Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/ViewInfos/ProbabilisticPipingInputViewInfoTest.cs (.../ProbabilisticPipingInputViewInfoTest.cs) (revision 2ccc9719a576f038a60d33dda2a07bcb69b3c466) +++ Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/ViewInfos/ProbabilisticPipingInputViewInfoTest.cs (.../ProbabilisticPipingInputViewInfoTest.cs) (revision 02952ce44b631f296213e2c133a0d4c72fc574b1) @@ -298,7 +298,7 @@ var failureMechanism = new PipingFailureMechanism(); failureMechanism.CalculationsGroup.Children.Add(calculation); - var context = new PipingFailureMechanismCalculationStateContext(failureMechanism, assessmentSection); + var context = new PipingCalculationsContext(failureMechanism, assessmentSection); using (var view = new PipingInputView { @@ -325,7 +325,7 @@ var failureMechanism = new PipingFailureMechanism(); failureMechanism.CalculationsGroup.Children.Add(calculation); - var context = new PipingFailureMechanismCalculationStateContext(new PipingFailureMechanism(), assessmentSection); + var context = new PipingCalculationsContext(new PipingFailureMechanism(), assessmentSection); using (var view = new PipingInputView { @@ -355,7 +355,7 @@ var failureMechanism = new PipingFailureMechanism(); failureMechanism.CalculationsGroup.Children.Add(calculationGroup); - var context = new PipingFailureMechanismCalculationStateContext(failureMechanism, assessmentSection); + var context = new PipingCalculationsContext(failureMechanism, assessmentSection); using (var view = new PipingInputView { @@ -385,7 +385,7 @@ var failureMechanism = new PipingFailureMechanism(); failureMechanism.CalculationsGroup.Children.Add(calculationGroup); - var context = new PipingFailureMechanismCalculationStateContext(new PipingFailureMechanism(), assessmentSection); + var context = new PipingCalculationsContext(new PipingFailureMechanism(), assessmentSection); using (var view = new PipingInputView { Index: Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/ViewInfos/ProbabilisticSubMechanismPipingProfileSpecificOutputViewInfoTest.cs =================================================================== diff -u -rce79c9c34ebed8fa715e523a886269a41e1e50c1 -r02952ce44b631f296213e2c133a0d4c72fc574b1 --- Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/ViewInfos/ProbabilisticSubMechanismPipingProfileSpecificOutputViewInfoTest.cs (.../ProbabilisticSubMechanismPipingProfileSpecificOutputViewInfoTest.cs) (revision ce79c9c34ebed8fa715e523a886269a41e1e50c1) +++ Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/ViewInfos/ProbabilisticSubMechanismPipingProfileSpecificOutputViewInfoTest.cs (.../ProbabilisticSubMechanismPipingProfileSpecificOutputViewInfoTest.cs) (revision 02952ce44b631f296213e2c133a0d4c72fc574b1) @@ -245,7 +245,7 @@ protected override IFailureMechanismContext GetFailureMechanismContextWithCalculation() { - return new PipingFailureMechanismCalculationStateContext( + return new PipingCalculationsContext( new PipingFailureMechanism { CalculationsGroup = Index: Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/ViewInfos/ProbabilisticSubMechanismPipingSectionSpecificOutputViewInfoTest.cs =================================================================== diff -u -rce79c9c34ebed8fa715e523a886269a41e1e50c1 -r02952ce44b631f296213e2c133a0d4c72fc574b1 --- Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/ViewInfos/ProbabilisticSubMechanismPipingSectionSpecificOutputViewInfoTest.cs (.../ProbabilisticSubMechanismPipingSectionSpecificOutputViewInfoTest.cs) (revision ce79c9c34ebed8fa715e523a886269a41e1e50c1) +++ Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/ViewInfos/ProbabilisticSubMechanismPipingSectionSpecificOutputViewInfoTest.cs (.../ProbabilisticSubMechanismPipingSectionSpecificOutputViewInfoTest.cs) (revision 02952ce44b631f296213e2c133a0d4c72fc574b1) @@ -216,7 +216,7 @@ protected override IFailureMechanismContext GetFailureMechanismContextWithCalculation() { - return new PipingFailureMechanismCalculationStateContext( + return new PipingCalculationsContext( new PipingFailureMechanism { CalculationsGroup = Index: Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/ViewInfos/SemiProbabilisticPipingInputViewInfoTest.cs =================================================================== diff -u -r2ccc9719a576f038a60d33dda2a07bcb69b3c466 -r02952ce44b631f296213e2c133a0d4c72fc574b1 --- Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/ViewInfos/SemiProbabilisticPipingInputViewInfoTest.cs (.../SemiProbabilisticPipingInputViewInfoTest.cs) (revision 2ccc9719a576f038a60d33dda2a07bcb69b3c466) +++ Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/ViewInfos/SemiProbabilisticPipingInputViewInfoTest.cs (.../SemiProbabilisticPipingInputViewInfoTest.cs) (revision 02952ce44b631f296213e2c133a0d4c72fc574b1) @@ -298,7 +298,7 @@ var failureMechanism = new PipingFailureMechanism(); failureMechanism.CalculationsGroup.Children.Add(calculation); - var context = new PipingFailureMechanismCalculationStateContext(failureMechanism, assessmentSection); + var context = new PipingCalculationsContext(failureMechanism, assessmentSection); using (var view = new PipingInputView { @@ -325,7 +325,7 @@ var failureMechanism = new PipingFailureMechanism(); failureMechanism.CalculationsGroup.Children.Add(calculation); - var context = new PipingFailureMechanismCalculationStateContext(new PipingFailureMechanism(), assessmentSection); + var context = new PipingCalculationsContext(new PipingFailureMechanism(), assessmentSection); using (var view = new PipingInputView { @@ -355,7 +355,7 @@ var failureMechanism = new PipingFailureMechanism(); failureMechanism.CalculationsGroup.Children.Add(calculationGroup); - var context = new PipingFailureMechanismCalculationStateContext(failureMechanism, assessmentSection); + var context = new PipingCalculationsContext(failureMechanism, assessmentSection); using (var view = new PipingInputView { @@ -385,7 +385,7 @@ var failureMechanism = new PipingFailureMechanism(); failureMechanism.CalculationsGroup.Children.Add(calculationGroup); - var context = new PipingFailureMechanismCalculationStateContext(new PipingFailureMechanism(), assessmentSection); + var context = new PipingCalculationsContext(new PipingFailureMechanism(), assessmentSection); using (var view = new PipingInputView {