Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/PropertyClasses/PipingFailureMechanismContextPropertiesTest.cs
===================================================================
diff -u -rb190a14336e0d8fe9aec34e81a68194081c76155 -r6af0f01bd9b9b6da145bea0b4f8b8b1b4b09e02b
--- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/PropertyClasses/PipingFailureMechanismContextPropertiesTest.cs (.../PipingFailureMechanismContextPropertiesTest.cs) (revision b190a14336e0d8fe9aec34e81a68194081c76155)
+++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/PropertyClasses/PipingFailureMechanismContextPropertiesTest.cs (.../PipingFailureMechanismContextPropertiesTest.cs) (revision 6af0f01bd9b9b6da145bea0b4f8b8b1b4b09e02b)
@@ -109,7 +109,6 @@
var generalCategory = "Algemeen";
var heaveCategory = "Heave";
var modelFactorCategory = "Modelinstellingen";
- var upliftCategory = "Opbarsten";
var semiProbabilisticCategory = "Semi-probabilistische parameters";
var sellmeijerCategory = "Terugschrijdende erosie (Sellmeijer)";
Index: Ringtoets/StabilityPointStructures/src/Ringtoets.StabilityPointStructures.Forms/Ringtoets.StabilityPointStructures.Forms.csproj
===================================================================
diff -u -rbf7824face851bd1ca833bd4337c9f80efedac00 -r6af0f01bd9b9b6da145bea0b4f8b8b1b4b09e02b
--- Ringtoets/StabilityPointStructures/src/Ringtoets.StabilityPointStructures.Forms/Ringtoets.StabilityPointStructures.Forms.csproj (.../Ringtoets.StabilityPointStructures.Forms.csproj) (revision bf7824face851bd1ca833bd4337c9f80efedac00)
+++ Ringtoets/StabilityPointStructures/src/Ringtoets.StabilityPointStructures.Forms/Ringtoets.StabilityPointStructures.Forms.csproj (.../Ringtoets.StabilityPointStructures.Forms.csproj) (revision 6af0f01bd9b9b6da145bea0b4f8b8b1b4b09e02b)
@@ -34,6 +34,7 @@
+
@@ -55,6 +56,13 @@
+
+
+ UserControl
+
+
+ StabilityPointStructuresScenariosView.cs
+
UserControl
@@ -117,6 +125,9 @@
Resources.Designer.cs
Designer
+
+ StabilityPointStructuresScenariosView.cs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
Index: Ringtoets/StabilityPointStructures/src/Ringtoets.StabilityPointStructures.Plugin/StabilityPointStructuresPlugin.cs
===================================================================
diff -u -r60233a739e6b40a3182f53bb9ebd923703bd745c -r6af0f01bd9b9b6da145bea0b4f8b8b1b4b09e02b
--- Ringtoets/StabilityPointStructures/src/Ringtoets.StabilityPointStructures.Plugin/StabilityPointStructuresPlugin.cs (.../StabilityPointStructuresPlugin.cs) (revision 60233a739e6b40a3182f53bb9ebd923703bd745c)
+++ Ringtoets/StabilityPointStructures/src/Ringtoets.StabilityPointStructures.Plugin/StabilityPointStructuresPlugin.cs (.../StabilityPointStructuresPlugin.cs) (revision 6af0f01bd9b9b6da145bea0b4f8b8b1b4b09e02b)
@@ -77,6 +77,15 @@
GetViewData = context => context.WrappedData,
AfterCreate = (view, context) => view.FailureMechanism = context.FailureMechanism
};
+
+ yield return new ViewInfo
+ {
+ GetViewData = context => context.WrappedData,
+ GetViewName = (view, calculationGroup) => RingtoetsCommonFormsResources.Scenarios_DisplayName,
+ Image = RingtoetsCommonFormsResources.ScenariosIcon,
+ AfterCreate = (view, context) => view.FailureMechanism = context.ParentFailureMechanism,
+ CloseForData = CloseScenariosViewForData
+ };
}
///
@@ -193,8 +202,33 @@
#endregion
+ #region StabilityPointStructuresScenariosView ViewInfo
+
+ private static bool CloseScenariosViewForData(StabilityPointStructuresScenariosView view, object removedData)
+ {
+ var failureMechanism = removedData as StabilityPointStructuresFailureMechanism;
+
+ var failureMechanismContext = removedData as StabilityPointStructuresFailureMechanismContext;
+ if (failureMechanismContext != null)
+ {
+ failureMechanism = failureMechanismContext.WrappedData;
+ }
+
+ var assessmentSection = removedData as IAssessmentSection;
+ if (assessmentSection != null)
+ {
+ failureMechanism = assessmentSection.GetFailureMechanisms()
+ .OfType()
+ .FirstOrDefault();
+ }
+
+ return failureMechanism != null && ReferenceEquals(view.Data, failureMechanism.CalculationsGroup);
+ }
+
#endregion
+ #endregion
+
#region Validation and Calculation
private static string ValidateAllDataAvailableAndGetErrorMessage(IAssessmentSection assessmentSection, StabilityPointStructuresFailureMechanism failureMechanism)
@@ -414,15 +448,15 @@
private StrictContextMenuItem CreateGenerateStabilityPointStructuresCalculationsItem(StabilityPointStructuresCalculationGroupContext nodeData)
{
- ObservableList closingStructures = nodeData.FailureMechanism.StabilityPointStructures;
- bool structuresAvailable = closingStructures.Any();
+ ObservableList stabilityPointStructures = nodeData.FailureMechanism.StabilityPointStructures;
+ bool structuresAvailable = stabilityPointStructures.Any();
- string closingStructuresCalculationGroupContextToolTip = structuresAvailable
+ string stabilityPointStructuresCalculationGroupContextToolTip = structuresAvailable
? RingtoetsCommonFormsResources.StructuresPlugin_Generate_calculations_for_selected_structures
: RingtoetsCommonFormsResources.StructuresPlugin_No_structures_to_generate_for;
return new StrictContextMenuItem(RingtoetsCommonFormsResources.CalculationsGroup_Generate_calculations,
- closingStructuresCalculationGroupContextToolTip,
+ stabilityPointStructuresCalculationGroupContextToolTip,
RingtoetsCommonFormsResources.GenerateScenariosIcon,
(sender, args) => { ShowStabilityPointStructuresSelectionDialog(nodeData); })
{
Index: Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.Forms.Test/Ringtoets.StabilityPointStructures.Forms.Test.csproj
===================================================================
diff -u -r9463e81bcdb5801a11cbc391c73961438f697551 -r6af0f01bd9b9b6da145bea0b4f8b8b1b4b09e02b
--- Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.Forms.Test/Ringtoets.StabilityPointStructures.Forms.Test.csproj (.../Ringtoets.StabilityPointStructures.Forms.Test.csproj) (revision 9463e81bcdb5801a11cbc391c73961438f697551)
+++ Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.Forms.Test/Ringtoets.StabilityPointStructures.Forms.Test.csproj (.../Ringtoets.StabilityPointStructures.Forms.Test.csproj) (revision 6af0f01bd9b9b6da145bea0b4f8b8b1b4b09e02b)
@@ -78,6 +78,8 @@
+
+
Index: Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.Forms.Test/Views/StabilityPointStructuresScenarioRowTest.cs
===================================================================
diff -u
--- Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.Forms.Test/Views/StabilityPointStructuresScenarioRowTest.cs (revision 0)
+++ Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.Forms.Test/Views/StabilityPointStructuresScenarioRowTest.cs (revision 6af0f01bd9b9b6da145bea0b4f8b8b1b4b09e02b)
@@ -0,0 +1,120 @@
+// Copyright (C) Stichting Deltares 2016. All rights reserved.
+//
+// This file is part of Ringtoets.
+//
+// Ringtoets is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see .
+//
+// All names, logos, and references to "Deltares" are registered trademarks of
+// Stichting Deltares and remain full property of Stichting Deltares at all times.
+// All rights reserved.
+
+using System;
+using Core.Common.Base;
+using Core.Common.Base.Geometry;
+using NUnit.Framework;
+using Rhino.Mocks;
+using Ringtoets.StabilityPointStructures.Data;
+using Ringtoets.StabilityPointStructures.Forms.Views;
+using Ringtoets.Common.Data.FailureMechanism;
+using Ringtoets.Common.Data.Structures;
+using Ringtoets.Common.Forms;
+
+namespace Ringtoets.StabilityPointStructures.Forms.Test.Views
+{
+ [TestFixture]
+ public class StabilityPointStructuresScenarioRowTest
+ {
+ [Test]
+ public void Constructor_ExpectedValues()
+ {
+ // Setup
+ var section = new FailureMechanismSection("testName", new[]
+ {
+ new Point2D(1.1, 2.2),
+ new Point2D(3.3, 4.4)
+ });
+ var sectionResult = new StabilityPointStructuresFailureMechanismSectionResult(section);
+
+ // Call
+ var row = new StabilityPointStructuresScenarioRow(sectionResult);
+
+ // Assert
+ Assert.AreSame(sectionResult.Section.Name, row.Name);
+ Assert.AreSame(sectionResult.Calculation, row.Calculation);
+ Assert.IsInstanceOf>>(row);
+ }
+
+ [Test]
+ public void Constructor_SectionResultIsNull_ThrowArgumentNullException()
+ {
+ // Call
+ TestDelegate call = () => new StabilityPointStructuresScenarioRow(null);
+
+ // Assert
+ string paramName = Assert.Throws(call).ParamName;
+ Assert.AreSame("sectionResult", paramName);
+ }
+
+ [Test]
+ public void Calculation_SetNewValue_UpdatesSectionResultCalculation()
+ {
+ // Setup
+ var section = new FailureMechanismSection("haha", new[]
+ {
+ new Point2D(1.1, 2.2),
+ new Point2D(3.3, 4.4)
+ });
+ var sectionResult = new StabilityPointStructuresFailureMechanismSectionResult(section);
+
+ var row = new StabilityPointStructuresScenarioRow(sectionResult);
+
+ var calculation = new StructuresCalculation();
+
+ // Call
+ row.Calculation = calculation;
+
+ // Assert
+ Assert.AreSame(calculation, row.Calculation);
+ Assert.AreSame(calculation, sectionResult.Calculation);
+ }
+
+ [Test]
+ public void Calculation_SetNewValue_NotifyObserversOnSectionResult()
+ {
+ // Setup
+ var mocks = new MockRepository();
+ var observer = mocks.StrictMock();
+ observer.Expect(o => o.UpdateObserver());
+ mocks.ReplayAll();
+
+ var section = new FailureMechanismSection("testSection", new[]
+ {
+ new Point2D(1.1, 2.2),
+ new Point2D(3.3, 4.4)
+ });
+ var sectionResult = new StabilityPointStructuresFailureMechanismSectionResult(section);
+ sectionResult.Attach(observer);
+
+ var row = new StabilityPointStructuresScenarioRow(sectionResult);
+
+ var calculation = new StructuresCalculation();
+
+ // Call
+ row.Calculation = calculation;
+
+ // Assert
+ mocks.VerifyAll(); // Assert observer is notified
+ }
+ }
+}
\ No newline at end of file
Index: Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.Forms.Test/Views/StabilityPointStructuresScenariosViewTest.cs
===================================================================
diff -u
--- Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.Forms.Test/Views/StabilityPointStructuresScenariosViewTest.cs (revision 0)
+++ Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.Forms.Test/Views/StabilityPointStructuresScenariosViewTest.cs (revision 6af0f01bd9b9b6da145bea0b4f8b8b1b4b09e02b)
@@ -0,0 +1,409 @@
+// Copyright (C) Stichting Deltares 2016. All rights reserved.
+//
+// This file is part of Ringtoets.
+//
+// Ringtoets is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see .
+//
+// All names, logos, and references to "Deltares" are registered trademarks of
+// Stichting Deltares and remain full property of Stichting Deltares at all times.
+// All rights reserved.
+
+using System.Drawing;
+using System.Linq;
+using System.Windows.Forms;
+using Core.Common.Base.Geometry;
+using Core.Common.Controls.DataGrid;
+using Core.Common.Controls.Views;
+using NUnit.Extensions.Forms;
+using NUnit.Framework;
+using Ringtoets.StabilityPointStructures.Data;
+using Ringtoets.StabilityPointStructures.Forms.Views;
+using Ringtoets.Common.Data.Calculation;
+using Ringtoets.Common.Data.FailureMechanism;
+using Ringtoets.Common.Data.Structures;
+using Ringtoets.Common.Forms;
+
+namespace Ringtoets.StabilityPointStructures.Forms.Test.Views
+{
+ [TestFixture]
+ public class StabilityPointStructuresScenariosViewTest
+ {
+ private Form testForm;
+
+ [SetUp]
+ public void Setup()
+ {
+ testForm = new Form();
+ }
+
+ [TearDown]
+ public void TearDown()
+ {
+ testForm.Dispose();
+ }
+
+ [Test]
+ public void DefaultConstructor_DataGridViewCorrectlyInitialized()
+ {
+ // Call
+ using (StabilityPointStructuresScenariosView view = ShowScenariosView())
+ {
+ // Assert
+ Assert.IsInstanceOf(view);
+ Assert.IsInstanceOf(view);
+ Assert.IsTrue(view.AutoScroll);
+ Assert.IsNull(view.Data);
+ Assert.IsNull(view.FailureMechanism);
+
+ var scenarioSelectionControl = new ControlTester("scenarioSelectionControl").TheObject as ScenarioSelectionControl;
+
+ Assert.NotNull(scenarioSelectionControl);
+ Assert.AreEqual(new Size(0, 0), scenarioSelectionControl.MinimumSize);
+ }
+ }
+
+ [Test]
+ public void Data_ValidDataSet_ValidData()
+ {
+ // Setup
+ using (StabilityPointStructuresScenariosView view = ShowScenariosView())
+ {
+ var calculationGroup = new CalculationGroup();
+
+ // Call
+ view.Data = calculationGroup;
+
+ // Assert
+ Assert.AreSame(calculationGroup, view.Data);
+ }
+ }
+
+ [Test]
+ public void FailureMechanism_ValidFailureMechanismSet_ValidFailureMechanism()
+ {
+ // Setup
+ using (StabilityPointStructuresScenariosView view = ShowScenariosView())
+ {
+ var failureMechanism = new StabilityPointStructuresFailureMechanism();
+
+ // Call
+ view.FailureMechanism = failureMechanism;
+
+ // Assert
+ Assert.AreSame(failureMechanism, view.FailureMechanism);
+ }
+ }
+
+ [Test]
+ public void Data_WithFailureMechanism_UpdateScenarioControl()
+ {
+ // Setup
+ using (StabilityPointStructuresScenariosView view = ShowScenariosView())
+ {
+ StabilityPointStructuresFailureMechanism failureMechanism = CreateCompleteFailureMechanism();
+ view.FailureMechanism = failureMechanism;
+
+ // Call
+ view.Data = failureMechanism.CalculationsGroup;
+
+ // Assert
+ AssertDataGridView(failureMechanism, false, new[]
+ {
+ new[]
+ {
+ "",
+ "CalculationA"
+ },
+ new[]
+ {
+ "",
+ "CalculationB"
+ }
+ });
+ }
+ }
+
+ [Test]
+ public void Data_SetToNullAfterGridViewShowsData_ClearsScenarioControl()
+ {
+ // Setup
+ using (StabilityPointStructuresScenariosView view = ShowScenariosView())
+ {
+ StabilityPointStructuresFailureMechanism failureMechanism = CreateCompleteFailureMechanism();
+ view.FailureMechanism = failureMechanism;
+ view.Data = failureMechanism.CalculationsGroup;
+
+ // Call
+ view.Data = null;
+
+ // Assert
+ AssertDataGridView(failureMechanism, true);
+ }
+ }
+
+ [Test]
+ public void FailureMechanism_WithData_UpdateScenarioControl()
+ {
+ // Setup
+ using (StabilityPointStructuresScenariosView view = ShowScenariosView())
+ {
+ StabilityPointStructuresFailureMechanism failureMechanism = CreateCompleteFailureMechanism();
+ view.Data = failureMechanism.CalculationsGroup;
+
+ // Call
+ view.FailureMechanism = failureMechanism;
+
+ // Assert
+ AssertDataGridView(failureMechanism, false, new[]
+ {
+ new[]
+ {
+ "",
+ "CalculationA"
+ },
+ new[]
+ {
+ "",
+ "CalculationB"
+ }
+ });
+ }
+ }
+
+ [Test]
+ public void FailureMechanism_WithoutData_ClearsScenarioControl()
+ {
+ // Setup
+ using (StabilityPointStructuresScenariosView view = ShowScenariosView())
+ {
+ StabilityPointStructuresFailureMechanism failureMechanism = CreateCompleteFailureMechanism();
+ view.Data = failureMechanism.CalculationsGroup;
+ view.FailureMechanism = failureMechanism;
+
+ // Call
+ view.FailureMechanism = null;
+
+ // Assert
+ AssertDataGridView(failureMechanism, true);
+ }
+ }
+
+ [Test]
+ public void NotifyFailureMechanism_SectionsAddedAfterFullInitialization_NewRowAddedToView()
+ {
+ // Setup
+ using (StabilityPointStructuresScenariosView view = ShowScenariosView())
+ {
+ StabilityPointStructuresFailureMechanism failureMechanism = CreateCompleteFailureMechanism();
+ view.Data = failureMechanism.CalculationsGroup;
+ view.FailureMechanism = failureMechanism;
+
+ view.FailureMechanism.AddSection(new FailureMechanismSection("SectionC", new[]
+ {
+ view.FailureMechanism.Sections.Last().GetLast(),
+ new Point2D(30, 30)
+ }));
+
+ // Call
+ failureMechanism.NotifyObservers();
+
+ // Assert
+ AssertDataGridView(failureMechanism, false, new[]
+ {
+ new[]
+ {
+ "",
+ "CalculationA"
+ },
+ new[]
+ {
+ "",
+ "CalculationB"
+ },
+ new[]
+ {
+ ""
+ }
+ });
+ }
+ }
+
+ [Test]
+ public void NotifyCalculation_CalculationChangedDikeProfile_CalculationMovedToOtherSectionResultOptions()
+ {
+ // Setup
+ using (StabilityPointStructuresScenariosView view = ShowScenariosView())
+ {
+ StabilityPointStructuresFailureMechanism failureMechanism = CreateCompleteFailureMechanism();
+ view.Data = failureMechanism.CalculationsGroup;
+ view.FailureMechanism = failureMechanism;
+
+ var calculationA = (StructuresCalculation) failureMechanism.CalculationsGroup.Children[0];
+ var calculationB = (StructuresCalculation) failureMechanism.CalculationsGroup.Children[1];
+
+ calculationA.InputParameters.Structure = calculationB.InputParameters.Structure;
+
+ // Call
+ calculationA.NotifyObservers();
+
+ // Assert
+ AssertDataGridView(failureMechanism, false, new[]
+ {
+ new[]
+ {
+ ""
+ },
+ new[]
+ {
+ "",
+ "CalculationA",
+ "CalculationB"
+ },
+ });
+ }
+ }
+
+ [Test]
+ public void NotifyCalculationGroup_CalculationAdded_CalculationAddedToSectionResultOptions()
+ {
+ // Setup
+ using (StabilityPointStructuresScenariosView view = ShowScenariosView())
+ {
+ StabilityPointStructuresFailureMechanism failureMechanism = CreateCompleteFailureMechanism();
+ view.Data = failureMechanism.CalculationsGroup;
+ view.FailureMechanism = failureMechanism;
+
+ var calculationB = ((StructuresCalculation) failureMechanism.CalculationsGroup.Children[1]);
+ var calculationC = new StructuresCalculation
+ {
+ Name = "CalculationC",
+ InputParameters =
+ {
+ Structure = calculationB.InputParameters.Structure
+ }
+ };
+ failureMechanism.CalculationsGroup.Children.Add(calculationC);
+
+ calculationC.InputParameters.Structure = calculationC.InputParameters.Structure;
+
+ // Call
+ failureMechanism.CalculationsGroup.NotifyObservers();
+
+ // Assert
+ AssertDataGridView(failureMechanism, false, new[]
+ {
+ new[]
+ {
+ "",
+ "CalculationA"
+ },
+ new[]
+ {
+ "",
+ "CalculationB",
+ "CalculationC"
+ },
+ });
+ }
+ }
+
+ private void AssertDataGridView(
+ StabilityPointStructuresFailureMechanism failureMechanism,
+ bool shouldBeCleared,
+ string[][] expectedComboBoxItemTexts = null)
+ {
+ var dataGridView = (DataGridView) new ControlTester("dataGridView").TheObject;
+ var rowCount = dataGridView.RowCount;
+
+ if (shouldBeCleared)
+ {
+ Assert.AreEqual(0, rowCount);
+ }
+ else
+ {
+ var dataGridViewColumn = (DataGridViewComboBoxColumn) dataGridView.Columns[1];
+
+ Assert.AreEqual(failureMechanism.SectionResults.Count(), rowCount);
+ Assert.AreEqual(failureMechanism.Calculations.Count(), dataGridViewColumn.Items.Count);
+
+ for (int i = 0; i < rowCount; i++)
+ {
+ var cell = (DataGridViewComboBoxCell) dataGridView[1, i];
+ var items = cell.Items.OfType>();
+ Assert.AreEqual(expectedComboBoxItemTexts[i], items.Select(r => r.DisplayName));
+ }
+ }
+ }
+
+ private StabilityPointStructuresFailureMechanism CreateCompleteFailureMechanism()
+ {
+ StabilityPointStructuresFailureMechanism failureMechanism = new StabilityPointStructuresFailureMechanism();
+ var matchingPointA = new Point2D(0, 0);
+ var matchingPointB = new Point2D(20, 20);
+ var calculationA = new StructuresCalculation
+ {
+ Name = "CalculationA",
+ InputParameters =
+ {
+ Structure = CreateStructure(matchingPointA)
+ }
+ };
+ var calculationB = new StructuresCalculation
+ {
+ Name = "CalculationB",
+ InputParameters =
+ {
+ Structure = CreateStructure(matchingPointB)
+ }
+ };
+ Point2D connectionPoint = new Point2D(10, 10);
+ var failureMechanismSectionA = new FailureMechanismSection("sectionA", new[]
+ {
+ matchingPointA,
+ connectionPoint
+ });
+ var failureMechanismSectionB = new FailureMechanismSection("sectionB", new[]
+ {
+ connectionPoint,
+ matchingPointB
+ });
+
+ failureMechanism.CalculationsGroup.Children.Add(calculationA);
+ failureMechanism.CalculationsGroup.Children.Add(calculationB);
+ failureMechanism.AddSection(failureMechanismSectionA);
+ failureMechanism.AddSection(failureMechanismSectionB);
+
+ return failureMechanism;
+ }
+
+ private StabilityPointStructure CreateStructure(Point2D location)
+ {
+ return new StabilityPointStructure(new StabilityPointStructure.ConstructionProperties
+ {
+ Id = "1",
+ Name = "",
+ Location = location
+ });
+ }
+
+ private StabilityPointStructuresScenariosView ShowScenariosView()
+ {
+ var scenariosView = new StabilityPointStructuresScenariosView();
+ testForm.Controls.Add(scenariosView);
+ testForm.Show();
+
+ return scenariosView;
+ }
+ }
+}
\ No newline at end of file
Index: Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.Plugin.Test/Ringtoets.StabilityPointStructures.Plugin.Test.csproj
===================================================================
diff -u -r44837ec463259677b2bc84d05e020de9fb5b782c -r6af0f01bd9b9b6da145bea0b4f8b8b1b4b09e02b
--- Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.Plugin.Test/Ringtoets.StabilityPointStructures.Plugin.Test.csproj (.../Ringtoets.StabilityPointStructures.Plugin.Test.csproj) (revision 44837ec463259677b2bc84d05e020de9fb5b782c)
+++ Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.Plugin.Test/Ringtoets.StabilityPointStructures.Plugin.Test.csproj (.../Ringtoets.StabilityPointStructures.Plugin.Test.csproj) (revision 6af0f01bd9b9b6da145bea0b4f8b8b1b4b09e02b)
@@ -57,6 +57,7 @@
+
Index: Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.Plugin.Test/StabilityPointStructuresPluginTest.cs
===================================================================
diff -u -r9463e81bcdb5801a11cbc391c73961438f697551 -r6af0f01bd9b9b6da145bea0b4f8b8b1b4b09e02b
--- Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.Plugin.Test/StabilityPointStructuresPluginTest.cs (.../StabilityPointStructuresPluginTest.cs) (revision 9463e81bcdb5801a11cbc391c73961438f697551)
+++ Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.Plugin.Test/StabilityPointStructuresPluginTest.cs (.../StabilityPointStructuresPluginTest.cs) (revision 6af0f01bd9b9b6da145bea0b4f8b8b1b4b09e02b)
@@ -124,11 +124,10 @@
ViewInfo[] viewInfos = plugin.GetViewInfos().ToArray();
// Assert
- Assert.AreEqual(1, viewInfos.Length);
- ViewInfo stabilityPointStructuresResultViewInfo = viewInfos.Single(vi => vi.DataType == typeof(FailureMechanismSectionResultContext));
- Assert.AreEqual(typeof(IEnumerable), stabilityPointStructuresResultViewInfo.ViewDataType);
- Assert.AreEqual(typeof(StabilityPointStructuresFailureMechanismResultView), stabilityPointStructuresResultViewInfo.ViewType);
- TestHelper.AssertImagesAreEqual(RingtoetsCommonFormsResources.FailureMechanismSectionResultIcon, stabilityPointStructuresResultViewInfo.Image);
+ Assert.AreEqual(2, viewInfos.Length);
+
+ Assert.IsTrue(viewInfos.Any(vi => vi.DataType == typeof(FailureMechanismSectionResultContext)));
+ Assert.IsTrue(viewInfos.Any(vi => vi.ViewType == typeof(StabilityPointStructuresScenariosView)));
}
}
Index: Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.Plugin.Test/ViewInfos/StabilityPointStructuresScenariosViewInfoTest.cs
===================================================================
diff -u
--- Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.Plugin.Test/ViewInfos/StabilityPointStructuresScenariosViewInfoTest.cs (revision 0)
+++ Ringtoets/StabilityPointStructures/test/Ringtoets.StabilityPointStructures.Plugin.Test/ViewInfos/StabilityPointStructuresScenariosViewInfoTest.cs (revision 6af0f01bd9b9b6da145bea0b4f8b8b1b4b09e02b)
@@ -0,0 +1,391 @@
+// Copyright (C) Stichting Deltares 2016. All rights reserved.
+//
+// This file is part of Ringtoets.
+//
+// Ringtoets is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see .
+//
+// All names, logos, and references to "Deltares" are registered trademarks of
+// Stichting Deltares and remain full property of Stichting Deltares at all times.
+// All rights reserved.
+
+using System.Drawing;
+using System.Linq;
+using Core.Common.Gui.Plugin;
+using Core.Common.TestUtil;
+using NUnit.Framework;
+using Rhino.Mocks;
+using Ringtoets.StabilityPointStructures.Data;
+using Ringtoets.StabilityPointStructures.Forms.PresentationObjects;
+using Ringtoets.StabilityPointStructures.Forms.Views;
+using Ringtoets.Common.Data.AssessmentSection;
+using Ringtoets.Common.Data.Calculation;
+using Ringtoets.Common.Data.FailureMechanism;
+using RingtoetsCommonFormsResources = Ringtoets.Common.Forms.Properties.Resources;
+
+namespace Ringtoets.StabilityPointStructures.Plugin.Test.ViewInfos
+{
+ [TestFixture]
+ public class StabilityPointStructuresScenariosViewInfoTest
+ {
+ private StabilityPointStructuresPlugin plugin;
+ private ViewInfo info;
+ private MockRepository mocks;
+
+ [SetUp]
+ public void SetUp()
+ {
+ plugin = new StabilityPointStructuresPlugin();
+ info = plugin.GetViewInfos().First(tni => tni.ViewType == typeof(StabilityPointStructuresScenariosView));
+ mocks = new MockRepository();
+ }
+
+ [TearDown]
+ public void TearDown()
+ {
+ plugin.Dispose();
+ }
+
+ [Test]
+ public void Initialized_Always_ExpectedPropertiesSet()
+ {
+ // Assert
+ Assert.AreEqual(typeof(StabilityPointStructuresScenariosContext), info.DataType);
+ Assert.AreEqual(typeof(CalculationGroup), info.ViewDataType);
+ }
+
+ [Test]
+ public void GetViewName_Always_ReturnViewName()
+ {
+ // Setup
+ using (var view = new StabilityPointStructuresScenariosView())
+ {
+ var viewData = new CalculationGroup();
+
+ // Call
+ string viewName = info.GetViewName(view, viewData);
+
+ // Assert
+ Assert.AreEqual("Scenario's", viewName);
+ }
+ }
+
+ [Test]
+ public void GetViewData_Always_ReturnWrappedData()
+ {
+ // Setup
+ var calculationGroup = new CalculationGroup();
+ var failureMechanism = new StabilityPointStructuresFailureMechanism();
+ var context = new StabilityPointStructuresScenariosContext(calculationGroup, failureMechanism);
+
+ // Call
+ object viewData = info.GetViewData(context);
+
+ // Assert
+ Assert.AreSame(calculationGroup, viewData);
+ }
+
+ [Test]
+ public void Image_Always_ReturnScenariosIcon()
+ {
+ // Call
+ Image image = info.Image;
+
+ // Assert
+ TestHelper.AssertImagesAreEqual(RingtoetsCommonFormsResources.ScenariosIcon, image);
+ }
+
+ [Test]
+ public void AfterCreate_Always_SetsSpecificPropertiesToView()
+ {
+ // Setup
+ using (var view = new StabilityPointStructuresScenariosView())
+ {
+ var group = new CalculationGroup();
+ var failureMechanism = new StabilityPointStructuresFailureMechanism();
+ var context = new StabilityPointStructuresScenariosContext(group, failureMechanism);
+
+ // Call
+ info.AfterCreate(view, context);
+
+ // Assert
+ Assert.AreSame(failureMechanism, view.FailureMechanism);
+ }
+ }
+
+ [Test]
+ public void CloseForData_AssessmentSectionRemovedWithoutFailureMechanism_ReturnFalse()
+ {
+ // Setup
+ using (var view = new StabilityPointStructuresScenariosView
+ {
+ Data = new CalculationGroup()
+ })
+ {
+ var assessmentSection = mocks.Stub();
+ assessmentSection.Stub(section => section.GetFailureMechanisms()).Return(new IFailureMechanism[0]);
+ mocks.ReplayAll();
+
+ // Call
+ bool closeForData = info.CloseForData(view, assessmentSection);
+
+ // Assert
+ Assert.IsFalse(closeForData);
+ mocks.VerifyAll();
+ }
+ }
+
+ [Test]
+ public void CloseForData_ViewNotCorrespondingToRemovedAssessmentSection_ReturnFalse()
+ {
+ // Setup
+ using (var view = new StabilityPointStructuresScenariosView
+ {
+ Data = new CalculationGroup()
+ })
+ {
+ var unrelatedFailureMechanism = new StabilityPointStructuresFailureMechanism();
+
+ var assessmentSection = mocks.Stub();
+ assessmentSection.Expect(asm => asm.GetFailureMechanisms()).Return(new[]
+ {
+ unrelatedFailureMechanism
+ });
+ mocks.ReplayAll();
+
+ // Precondition
+ Assert.AreNotSame(view.Data, unrelatedFailureMechanism.CalculationsGroup);
+
+ // Call
+ bool closeForData = info.CloseForData(view, assessmentSection);
+
+ // Assert
+ Assert.IsFalse(closeForData);
+ mocks.VerifyAll();
+ }
+ }
+
+ [Test]
+ public void CloseForData_ViewCorrespondingToRemovedAssessmentSection_ReturnTrue()
+ {
+ // Setup
+ var relatedFailureMechanism = new StabilityPointStructuresFailureMechanism();
+
+ using (var view = new StabilityPointStructuresScenariosView
+ {
+ Data = relatedFailureMechanism.CalculationsGroup
+ })
+ {
+ var assessmentSection = mocks.Stub();
+ assessmentSection.Expect(asm => asm.GetFailureMechanisms()).Return(new[]
+ {
+ relatedFailureMechanism
+ });
+ mocks.ReplayAll();
+
+ // Precondition
+ Assert.AreSame(view.Data, relatedFailureMechanism.CalculationsGroup);
+
+ // Call
+ bool closeForData = info.CloseForData(view, assessmentSection);
+
+ // Assert
+ Assert.IsTrue(closeForData);
+ mocks.VerifyAll();
+ }
+ }
+
+ [Test]
+ public void CloseForData_ViewNotCorrespondingToRemovedFailureMechanism_ReturnFalse()
+ {
+ // Setup
+ using (var view = new StabilityPointStructuresScenariosView
+ {
+ Data = new CalculationGroup()
+ })
+ {
+ // Call
+ bool closeForData = info.CloseForData(view, new StabilityPointStructuresFailureMechanism());
+
+ // Assert
+ Assert.IsFalse(closeForData);
+ }
+ }
+
+ [Test]
+ public void CloseForData_ViewCorrespondingToRemovedFailureMechanism_ReturnTrue()
+ {
+ // Setup
+ var correspondingFailureMechanism = new StabilityPointStructuresFailureMechanism();
+ using (var view = new StabilityPointStructuresScenariosView
+ {
+ Data = correspondingFailureMechanism.CalculationsGroup
+ })
+ {
+ // Call
+ bool closeForData = info.CloseForData(view, correspondingFailureMechanism);
+
+ // Assert
+ Assert.IsTrue(closeForData);
+ }
+ }
+
+ [Test]
+ public void CloseForData_AssessmentSectionRemovedWithoutStabilityPointStructuresFailureMechanism_ReturnsFalse()
+ {
+ // Setup
+ var assessmentSectionMock = mocks.StrictMock();
+ assessmentSectionMock.Expect(asm => asm.GetFailureMechanisms()).Return(new IFailureMechanism[0]);
+ mocks.ReplayAll();
+
+ var view = new StabilityPointStructuresScenariosView
+ {
+ Data = new CalculationGroup()
+ };
+
+ // Call
+ bool closeForData = info.CloseForData(view, assessmentSectionMock);
+
+ // Assert
+ Assert.IsFalse(closeForData);
+ mocks.VerifyAll();
+ }
+
+ [Test]
+ public void CloseForData_ViewNotCorrespondingToRemovedAssessmentSection_ReturnsFalse()
+ {
+ // Setup
+ var assessmentSectionMock = mocks.StrictMock();
+ assessmentSectionMock.Expect(asm => asm.GetFailureMechanisms()).Return(new[]
+ {
+ new StabilityPointStructuresFailureMechanism()
+ });
+
+ mocks.ReplayAll();
+
+ var view = new StabilityPointStructuresScenariosView
+ {
+ Data = new CalculationGroup()
+ };
+
+ // Call
+ bool closeForData = info.CloseForData(view, assessmentSectionMock);
+
+ // Assert
+ Assert.IsFalse(closeForData);
+ mocks.VerifyAll();
+ }
+
+ [Test]
+ public void CloseForData_ViewCorrespondingToRemovedAssessmentSection_ReturnsTrue()
+ {
+ // Setup
+ var assessmentSectionMock = mocks.StrictMock();
+ var failureMechanism = new StabilityPointStructuresFailureMechanism();
+ assessmentSectionMock.Expect(asm => asm.GetFailureMechanisms()).Return(new[]
+ {
+ failureMechanism
+ });
+
+ mocks.ReplayAll();
+
+ var view = new StabilityPointStructuresScenariosView
+ {
+ Data = failureMechanism.CalculationsGroup
+ };
+
+ // Call
+ bool closeForData = info.CloseForData(view, assessmentSectionMock);
+
+ // Assert
+ Assert.IsTrue(closeForData);
+ mocks.VerifyAll();
+ }
+
+ [Test]
+ public void CloseForData_ViewNotCorrespondingToRemovedFailureMechanism_ReturnsFalse()
+ {
+ // Setup
+ var view = new StabilityPointStructuresScenariosView();
+ var failureMechanism = new StabilityPointStructuresFailureMechanism();
+
+ view.Data = new CalculationGroup();
+
+ // Call
+ bool closeForData = info.CloseForData(view, failureMechanism);
+
+ // Assert
+ Assert.IsFalse(closeForData);
+ }
+
+ [Test]
+ public void CloseForData_ViewCorrespondingToRemovedFailureMechanism_ReturnsTrue()
+ {
+ // Setup
+ var view = new StabilityPointStructuresScenariosView();
+ var failureMechanism = new StabilityPointStructuresFailureMechanism();
+
+ view.Data = failureMechanism.CalculationsGroup;
+
+ // Call
+ bool closeForData = info.CloseForData(view, failureMechanism);
+
+ // Assert
+ Assert.IsTrue(closeForData);
+ }
+
+ [Test]
+ public void CloseForData_ViewNotCorrespondingToRemovedFailureMechanismContext_ReturnsFalse()
+ {
+ // Setup
+ var assessmentSectionMock = mocks.Stub();
+
+ mocks.ReplayAll();
+
+ var view = new StabilityPointStructuresScenariosView();
+ var failureMechanism = new StabilityPointStructuresFailureMechanism();
+ var failureMechanismContext = new StabilityPointStructuresFailureMechanismContext(new StabilityPointStructuresFailureMechanism(), assessmentSectionMock);
+
+ view.Data = failureMechanism.CalculationsGroup;
+
+ // Call
+ bool closeForData = info.CloseForData(view, failureMechanismContext);
+
+ // Assert
+ Assert.IsFalse(closeForData);
+ mocks.VerifyAll();
+ }
+
+ [Test]
+ public void CloseForData_ViewCorrespondingToRemovedFailureMechanismContext_ReturnsTrue()
+ {
+ // Setup
+ var assessmentSectionMock = mocks.Stub();
+
+ mocks.ReplayAll();
+
+ var view = new StabilityPointStructuresScenariosView();
+ var failureMechanism = new StabilityPointStructuresFailureMechanism();
+ var failureMechanismContext = new StabilityPointStructuresFailureMechanismContext(failureMechanism, assessmentSectionMock);
+
+ view.Data = failureMechanism.CalculationsGroup;
+
+ // Call
+ bool closeForData = info.CloseForData(view, failureMechanismContext);
+
+ // Assert
+ Assert.IsTrue(closeForData);
+ mocks.VerifyAll();
+ }
+ }
+}
\ No newline at end of file