Index: Riskeer/ClosingStructures/src/Riskeer.ClosingStructures.Forms/Views/ClosingStructuresScenariosView.Designer.cs =================================================================== diff -u -rf5cd3b2ee9b7436f606ee6bc027b795accf0549d -r38a2fc76e88b63b2a680e9ceb2a77a9aa5509918 --- Riskeer/ClosingStructures/src/Riskeer.ClosingStructures.Forms/Views/ClosingStructuresScenariosView.Designer.cs (.../ClosingStructuresScenariosView.Designer.cs) (revision f5cd3b2ee9b7436f606ee6bc027b795accf0549d) +++ Riskeer/ClosingStructures/src/Riskeer.ClosingStructures.Forms/Views/ClosingStructuresScenariosView.Designer.cs (.../ClosingStructuresScenariosView.Designer.cs) (revision 38a2fc76e88b63b2a680e9ceb2a77a9aa5509918) @@ -36,31 +36,9 @@ /// private void InitializeComponent() { - this.scenarioSelectionControl = new Riskeer.Common.Forms.ScenarioSelectionControl(); - this.SuspendLayout(); - // - // scenarioSelectionControl - // - this.scenarioSelectionControl.AutoScroll = true; - this.scenarioSelectionControl.Dock = System.Windows.Forms.DockStyle.Fill; - this.scenarioSelectionControl.Location = new System.Drawing.Point(0, 0); - this.scenarioSelectionControl.Name = "scenarioSelectionControl"; - this.scenarioSelectionControl.Size = new System.Drawing.Size(150, 150); - this.scenarioSelectionControl.TabIndex = 0; - // - // ClosingStructuresScenariosView - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.Controls.Add(this.scenarioSelectionControl); - this.Name = "ClosingStructuresScenariosView"; - this.ResumeLayout(false); - this.AutoScroll = true; - + } #endregion - - private Common.Forms.ScenarioSelectionControl scenarioSelectionControl; } } Index: Riskeer/ClosingStructures/src/Riskeer.ClosingStructures.Forms/Views/ClosingStructuresScenariosView.cs =================================================================== diff -u -rf5cd3b2ee9b7436f606ee6bc027b795accf0549d -r38a2fc76e88b63b2a680e9ceb2a77a9aa5509918 --- Riskeer/ClosingStructures/src/Riskeer.ClosingStructures.Forms/Views/ClosingStructuresScenariosView.cs (.../ClosingStructuresScenariosView.cs) (revision f5cd3b2ee9b7436f606ee6bc027b795accf0549d) +++ Riskeer/ClosingStructures/src/Riskeer.ClosingStructures.Forms/Views/ClosingStructuresScenariosView.cs (.../ClosingStructuresScenariosView.cs) (revision 38a2fc76e88b63b2a680e9ceb2a77a9aa5509918) @@ -22,120 +22,67 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Windows.Forms; -using Core.Common.Base; -using Core.Common.Controls.Views; +using Core.Common.Base.Geometry; using Riskeer.ClosingStructures.Data; +using Riskeer.Common.Data.AssessmentSection; using Riskeer.Common.Data.Calculation; +using Riskeer.Common.Data.DikeProfiles; +using Riskeer.Common.Data.FailureMechanism; using Riskeer.Common.Data.Structures; -using Riskeer.Common.Util; +using Riskeer.Common.Forms.Views; namespace Riskeer.ClosingStructures.Forms.Views { /// - /// View for configuring scenarios for the closing structures failure mechanism. - /// Shows a grid view where for each failure mechanism section, a calculation within the section - /// can be selected. + /// View for configuring closing structures scenarios. /// - public partial class ClosingStructuresScenariosView : UserControl, IView + public partial class ClosingStructuresScenariosView : ScenariosView, ClosingStructuresInput, ClosingStructuresScenarioRow, ClosingStructuresFailureMechanism> { - private readonly RecursiveObserver calculationInputObserver; - private readonly RecursiveObserver calculationGroupObserver; - private readonly Observer failureMechanismObserver; - private ClosingStructuresFailureMechanism failureMechanism; - private CalculationGroup data; + private readonly IAssessmentSection assessmentSection; /// /// Creates a new instance of . /// - public ClosingStructuresScenariosView() + /// The data to show in this view. + /// The + /// the belongs to. + /// The assessment section the scenarios belong to. + /// Thrown when any parameter + /// is null. + public ClosingStructuresScenariosView(CalculationGroup calculationGroup, ClosingStructuresFailureMechanism failureMechanism, IAssessmentSection assessmentSection) + : base(calculationGroup, failureMechanism) { - InitializeComponent(); - - failureMechanismObserver = new Observer(UpdateDataGridViewDataSource); - - // The concat is needed to observe the input of calculations in child groups. - calculationInputObserver = new RecursiveObserver( - UpdateDataGridViewDataSource, cg => cg.Children.Concat(cg.Children - .OfType>() - .Select(c => c.InputParameters))); - calculationGroupObserver = new RecursiveObserver(UpdateDataGridViewDataSource, c => c.Children); - } - - /// - /// Gets or sets the failure mechanism. - /// - public ClosingStructuresFailureMechanism FailureMechanism - { - get + if (assessmentSection == null) { - return failureMechanism; + throw new ArgumentNullException(nameof(assessmentSection)); } - set - { - failureMechanism = value; - failureMechanismObserver.Observable = failureMechanism; - UpdateDataGridViewDataSource(); - } - } - public object Data - { - get - { - return data; - } - set - { - data = value as CalculationGroup; - - calculationInputObserver.Observable = data; - calculationGroupObserver.Observable = data; - - UpdateDataGridViewDataSource(); - } + this.assessmentSection = assessmentSection; } - protected override void OnLoad(EventArgs e) + protected override ClosingStructuresInput GetCalculationInput(StructuresCalculationScenario calculationScenario) { - UpdateDataGridViewDataSource(); - base.OnLoad(e); + return calculationScenario.InputParameters; } - protected override void Dispose(bool disposing) + protected override IEnumerable GetScenarioRows(FailureMechanismSection failureMechanismSection) { - failureMechanismObserver?.Dispose(); - calculationInputObserver.Dispose(); - calculationGroupObserver.Dispose(); + IEnumerable lineSegments = Math2D.ConvertPointsToLineSegments(failureMechanismSection.Points); + IEnumerable> calculations = CalculationGroup.GetCalculations().OfType>() + .Where(cs => IsForeshoreProfileIntersectionWithReferenceLineInSection(cs, lineSegments)); - if (disposing) - { - components?.Dispose(); - } - - base.Dispose(disposing); + return calculations.Select(c => new ClosingStructuresScenarioRow(c, FailureMechanism, assessmentSection)).ToList(); } - private void UpdateDataGridViewDataSource() + private static bool IsForeshoreProfileIntersectionWithReferenceLineInSection(ICalculation calculationScenario, IEnumerable lineSegments) { - scenarioSelectionControl.EndEdit(); - - if (failureMechanism?.SectionResults == null || data?.Children == null) + ForeshoreProfile foreshoreProfile = calculationScenario.InputParameters.ForeshoreProfile; + if (foreshoreProfile == null) { - scenarioSelectionControl.ClearDataSource(); + return false; } - else - { - ICalculation[] calculations = data.GetCalculations().ToArray(); - IDictionary> calculationsPerSegment = - StructuresHelper.CollectCalculationsPerSection(failureMechanism.Sections, - calculations.Cast>()); - - List scenarioRows = failureMechanism.SectionResults.Select(sr => new ClosingStructuresScenarioRow(sr)).ToList(); - - scenarioSelectionControl.UpdateDataGridViewDataSource(calculations, scenarioRows, calculationsPerSegment); - } + return lineSegments.Min(segment => segment.GetEuclideanDistanceToPoint(foreshoreProfile.WorldReferencePoint)) <= 1; } } } \ No newline at end of file Index: Riskeer/ClosingStructures/src/Riskeer.ClosingStructures.Plugin/ClosingStructuresPlugin.cs =================================================================== diff -u -r72392d6dfe2538a4566813a2a254e1c4dd19d01e -r38a2fc76e88b63b2a680e9ceb2a77a9aa5509918 --- Riskeer/ClosingStructures/src/Riskeer.ClosingStructures.Plugin/ClosingStructuresPlugin.cs (.../ClosingStructuresPlugin.cs) (revision 72392d6dfe2538a4566813a2a254e1c4dd19d01e) +++ Riskeer/ClosingStructures/src/Riskeer.ClosingStructures.Plugin/ClosingStructuresPlugin.cs (.../ClosingStructuresPlugin.cs) (revision 38a2fc76e88b63b2a680e9ceb2a77a9aa5509918) @@ -1,4 +1,4 @@ -// Copyright (C) Stichting Deltares 2019. All rights reserved. +// Copyright (C) Stichting Deltares 2019. All rights reserved. // // This file is part of Riskeer. // @@ -123,7 +123,7 @@ GetViewData = context => context.WrappedData, GetViewName = (view, context) => RiskeerCommonFormsResources.Scenarios_DisplayName, Image = RiskeerCommonFormsResources.ScenariosIcon, - AfterCreate = (view, context) => view.FailureMechanism = context.ParentFailureMechanism, + CreateInstance = context => new ClosingStructuresScenariosView(context.WrappedData, context.ParentFailureMechanism, context.AssessmentSection), CloseForData = CloseScenariosViewForData }; } Index: Riskeer/ClosingStructures/test/Riskeer.ClosingStructures.Forms.Test/Views/ClosingStructuresScenariosViewTest.cs =================================================================== diff -u -rd28e27005c5da2025e65e0544e70f89e5c08b67e -r38a2fc76e88b63b2a680e9ceb2a77a9aa5509918 --- Riskeer/ClosingStructures/test/Riskeer.ClosingStructures.Forms.Test/Views/ClosingStructuresScenariosViewTest.cs (.../ClosingStructuresScenariosViewTest.cs) (revision d28e27005c5da2025e65e0544e70f89e5c08b67e) +++ Riskeer/ClosingStructures/test/Riskeer.ClosingStructures.Forms.Test/Views/ClosingStructuresScenariosViewTest.cs (.../ClosingStructuresScenariosViewTest.cs) (revision 38a2fc76e88b63b2a680e9ceb2a77a9aa5509918) @@ -19,28 +19,34 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. -using System.Collections.Generic; -using System.Drawing; -using System.Linq; +using System; using System.Windows.Forms; +using Core.Common.Base.Data; using Core.Common.Base.Geometry; -using Core.Common.Controls.DataGrid; -using Core.Common.Controls.Views; using NUnit.Extensions.Forms; using NUnit.Framework; +using Rhino.Mocks; using Riskeer.ClosingStructures.Data; using Riskeer.ClosingStructures.Forms.Views; +using Riskeer.Common.Data.AssessmentSection; using Riskeer.Common.Data.Calculation; +using Riskeer.Common.Data.DikeProfiles; using Riskeer.Common.Data.FailureMechanism; using Riskeer.Common.Data.Structures; using Riskeer.Common.Data.TestUtil; -using Riskeer.Common.Forms; +using Riskeer.Common.Forms.Helpers; +using Riskeer.Common.Forms.Views; namespace Riskeer.ClosingStructures.Forms.Test.Views { [TestFixture] public class ClosingStructuresScenariosViewTest { + private const int isRelevantColumnIndex = 0; + private const int contributionColumnIndex = 1; + private const int nameColumnIndex = 2; + private const int failureProbabilityColumnIndex = 3; + private Form testForm; [SetUp] @@ -56,363 +62,129 @@ } [Test] - public void DefaultConstructor_DataGridViewCorrectlyInitialized() + public void Constructor_AssessmentSectionNull_ThrowsArgumentNullException() { // Call - using (ClosingStructuresScenariosView view = ShowScenariosView()) - { - // Assert - Assert.IsInstanceOf(view); - Assert.IsInstanceOf(view); - Assert.IsTrue(view.AutoScroll); - Assert.IsNull(view.Data); - Assert.IsNull(view.FailureMechanism); + void Call() => new ClosingStructuresScenariosView(new CalculationGroup(), new ClosingStructuresFailureMechanism(), null); - var scenarioSelectionControl = new ControlTester("scenarioSelectionControl").TheObject as ScenarioSelectionControl; - - Assert.NotNull(scenarioSelectionControl); - Assert.AreEqual(new Size(0, 0), scenarioSelectionControl.MinimumSize); - } + // Assert + var exception = Assert.Throws(Call); + Assert.AreEqual("assessmentSection", exception.ParamName); } [Test] - public void Data_ValidDataSet_ValidData() + public void Constructor_ExpectedValues() { // Setup - using (ClosingStructuresScenariosView view = ShowScenariosView()) - { - var calculationGroup = new CalculationGroup(); + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); - // Call - view.Data = calculationGroup; + var calculationGroup = new CalculationGroup(); + // Call + using (var view = new ClosingStructuresScenariosView(calculationGroup, new ClosingStructuresFailureMechanism(), assessmentSection)) + { // Assert + Assert.IsInstanceOf, ClosingStructuresInput, ClosingStructuresScenarioRow, ClosingStructuresFailureMechanism>>(view); Assert.AreSame(calculationGroup, view.Data); } - } - [Test] - public void FailureMechanism_ValidFailureMechanismSet_ValidFailureMechanism() - { - // Setup - using (ClosingStructuresScenariosView view = ShowScenariosView()) - { - var failureMechanism = new ClosingStructuresFailureMechanism(); - - // Call - view.FailureMechanism = failureMechanism; - - // Assert - Assert.AreSame(failureMechanism, view.FailureMechanism); - } + mocks.VerifyAll(); } [Test] - public void Data_WithFailureMechanism_UpdateScenarioControl() + public void Constructor_DataGridViewCorrectlyInitialized() { - // Setup - using (ClosingStructuresScenariosView view = ShowScenariosView()) - { - ClosingStructuresFailureMechanism failureMechanism = CreateCompleteFailureMechanism(); - view.FailureMechanism = failureMechanism; + // Call + ShowClosingStructuresScenariosView(new ClosingStructuresFailureMechanism()); - // Call - view.Data = failureMechanism.CalculationsGroup; - - // Assert - AssertDataGridView(failureMechanism, false, new[] - { - new[] - { - "", - "CalculationA" - }, - new[] - { - "", - "CalculationB" - } - }); - } + // Assert + var dataGridView = (DataGridView)new ControlTester("dataGridView").TheObject; + Assert.AreEqual(4, dataGridView.ColumnCount); + Assert.AreEqual("In oordeel", dataGridView.Columns[isRelevantColumnIndex].HeaderText); + Assert.AreEqual("Bijdrage aan\r\nscenario\r\n[%]", dataGridView.Columns[contributionColumnIndex].HeaderText); + Assert.AreEqual("Naam", dataGridView.Columns[nameColumnIndex].HeaderText); + Assert.AreEqual("Faalkans\r\n[1/jaar]", dataGridView.Columns[failureProbabilityColumnIndex].HeaderText); } [Test] - public void Data_SetToNullAfterGridViewShowsData_ClearsScenarioControl() + public void ClosingStructuresScenarioView_CalculationsWithAllDataSet_DataGridViewCorrectlyInitialized() { - // Setup - using (ClosingStructuresScenariosView view = ShowScenariosView()) - { - ClosingStructuresFailureMechanism failureMechanism = CreateCompleteFailureMechanism(); - view.FailureMechanism = failureMechanism; - view.Data = failureMechanism.CalculationsGroup; + // Call + ShowFullyConfiguredClosingStructuresScenariosView(); - // Call - view.Data = null; + var dataGridView = (DataGridView)new ControlTester("dataGridView").TheObject; - // Assert - AssertDataGridView(failureMechanism, true); - } - } + // Assert + DataGridViewRowCollection rows = dataGridView.Rows; + Assert.AreEqual(2, rows.Count); - [Test] - public void FailureMechanism_WithData_UpdateScenarioControl() - { - // Setup - using (ClosingStructuresScenariosView view = ShowScenariosView()) - { - ClosingStructuresFailureMechanism failureMechanism = CreateCompleteFailureMechanism(); - view.Data = failureMechanism.CalculationsGroup; + DataGridViewCellCollection cells = rows[0].Cells; + Assert.AreEqual(4, cells.Count); + Assert.IsTrue(Convert.ToBoolean(cells[isRelevantColumnIndex].FormattedValue)); + Assert.AreEqual(new RoundedDouble(2, 100).ToString(), cells[contributionColumnIndex].FormattedValue); + Assert.AreEqual("Calculation 1", cells[nameColumnIndex].FormattedValue); + Assert.AreEqual("-", cells[failureProbabilityColumnIndex].FormattedValue); - // Call - view.FailureMechanism = failureMechanism; - - // Assert - AssertDataGridView(failureMechanism, false, new[] - { - new[] - { - "", - "CalculationA" - }, - new[] - { - "", - "CalculationB" - } - }); - } + cells = rows[1].Cells; + Assert.AreEqual(4, cells.Count); + Assert.IsTrue(Convert.ToBoolean(cells[isRelevantColumnIndex].FormattedValue)); + Assert.AreEqual(new RoundedDouble(2, 100).ToString(), cells[contributionColumnIndex].FormattedValue); + Assert.AreEqual("Calculation 2", cells[nameColumnIndex].FormattedValue); + Assert.AreEqual(ProbabilityFormattingHelper.Format(0.5), cells[failureProbabilityColumnIndex].FormattedValue); } - [Test] - public void FailureMechanism_WithoutData_ClearsScenarioControl() + private void ShowFullyConfiguredClosingStructuresScenariosView() { - // Setup - using (ClosingStructuresScenariosView view = ShowScenariosView()) - { - ClosingStructuresFailureMechanism failureMechanism = CreateCompleteFailureMechanism(); - view.Data = failureMechanism.CalculationsGroup; - view.FailureMechanism = failureMechanism; + ForeshoreProfile foreshoreProfile1 = new TestForeshoreProfile(new Point2D(0.0, 0.0)); + ForeshoreProfile foreshoreProfile2 = new TestForeshoreProfile(new Point2D(5.0, 0.0)); - // Call - view.FailureMechanism = null; + var failureMechanism = new ClosingStructuresFailureMechanism(); - // Assert - AssertDataGridView(failureMechanism, true); - } - } - - [Test] - public void NotifyFailureMechanism_SectionsSetAfterFullInitialization_NewRowAddedToView() - { - // Setup - using (ClosingStructuresScenariosView view = ShowScenariosView()) + FailureMechanismTestHelper.SetSections(failureMechanism, new[] { - ClosingStructuresFailureMechanism failureMechanism = CreateCompleteFailureMechanism(); - view.Data = failureMechanism.CalculationsGroup; - view.FailureMechanism = failureMechanism; - - List newSections = view.FailureMechanism.Sections.ToList(); - newSections.Add(new FailureMechanismSection("SectionC", new[] + new FailureMechanismSection("Section 1", new[] { - view.FailureMechanism.Sections.Last().EndPoint, - new Point2D(30, 30) - })); - - FailureMechanismTestHelper.SetSections(view.FailureMechanism, newSections); - - // Call - failureMechanism.NotifyObservers(); - - // Assert - AssertDataGridView(failureMechanism, false, new[] + new Point2D(0.0, 0.0), + new Point2D(5.0, 0.0) + }), + new FailureMechanismSection("Section 2", new[] { - new[] - { - "", - "CalculationA" - }, - new[] - { - "", - "CalculationB" - }, - new[] - { - "" - } - }); - } - } + new Point2D(5.0, 0.0), + new Point2D(10.0, 0.0) + }) + }); - [Test] - public void NotifyCalculation_CalculationChangedDikeProfile_CalculationMovedToOtherSectionResultOptions() - { - // Setup - using (ClosingStructuresScenariosView view = ShowScenariosView()) + failureMechanism.CalculationsGroup.Children.AddRange(new[] { - ClosingStructuresFailureMechanism 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 StructuresCalculationScenario { - new[] + Name = "Calculation 1", + InputParameters = { - "" - }, - new[] - { - "", - "CalculationA", - "CalculationB" + ForeshoreProfile = foreshoreProfile1 } - }); - } - } - - [Test] - public void NotifyCalculationGroup_CalculationAdded_CalculationAddedToSectionResultOptions() - { - // Setup - using (ClosingStructuresScenariosView view = ShowScenariosView()) - { - ClosingStructuresFailureMechanism failureMechanism = CreateCompleteFailureMechanism(); - view.Data = failureMechanism.CalculationsGroup; - view.FailureMechanism = failureMechanism; - - var calculationB = (StructuresCalculation) failureMechanism.CalculationsGroup.Children[1]; - var calculationC = new StructuresCalculation + }, + new StructuresCalculationScenario { - Name = "CalculationC", + Name = "Calculation 2", 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" + ForeshoreProfile = foreshoreProfile2 }, - new[] - { - "", - "CalculationB", - "CalculationC" - } - }); - } - } - - private void AssertDataGridView( - ClosingStructuresFailureMechanism failureMechanism, - bool shouldBeCleared, - string[][] expectedComboBoxItemTexts = null) - { - var dataGridView = (DataGridView) new ControlTester("dataGridView").TheObject; - int rowCount = dataGridView.RowCount; - - if (shouldBeCleared) - { - Assert.AreEqual(0, rowCount); - } - else - { - Assert.NotNull(expectedComboBoxItemTexts); - var dataGridViewColumn = (DataGridViewComboBoxColumn) dataGridView.Columns[1]; - - Assert.AreEqual(failureMechanism.SectionResults.Count(), rowCount); - Assert.AreEqual(failureMechanism.Calculations.Count(), dataGridViewColumn.Items.Count); - - for (var i = 0; i < rowCount; i++) - { - var cell = (DataGridViewComboBoxCell) dataGridView[1, i]; - IEnumerable> items = cell.Items.OfType>(); - Assert.AreEqual(expectedComboBoxItemTexts[i], items.Select(r => r.DisplayName)); + Output = new TestStructuresOutput(0.2) } - } - } - - private ClosingStructuresFailureMechanism CreateCompleteFailureMechanism() - { - var failureMechanism = new ClosingStructuresFailureMechanism(); - 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) - } - }; - var 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); - FailureMechanismTestHelper.SetSections(failureMechanism, new[] - { - failureMechanismSectionA, - failureMechanismSectionB - }); - - return failureMechanism; + ShowClosingStructuresScenariosView(failureMechanism); } - private ClosingStructure CreateStructure(Point2D location) + private void ShowClosingStructuresScenariosView(ClosingStructuresFailureMechanism failureMechanism) { - return new ClosingStructure(new ClosingStructure.ConstructionProperties - { - Id = "1", - Name = "", - Location = location - }); - } - - private ClosingStructuresScenariosView ShowScenariosView() - { - var scenariosView = new ClosingStructuresScenariosView(); + var scenariosView = new ClosingStructuresScenariosView(failureMechanism.CalculationsGroup, failureMechanism, new AssessmentSectionStub()); testForm.Controls.Add(scenariosView); testForm.Show(); - - return scenariosView; } } } \ No newline at end of file Index: Riskeer/ClosingStructures/test/Riskeer.ClosingStructures.Plugin.Test/ViewInfos/ClosingStructuresScenariosViewInfoTest.cs =================================================================== diff -u -r72392d6dfe2538a4566813a2a254e1c4dd19d01e -r38a2fc76e88b63b2a680e9ceb2a77a9aa5509918 --- Riskeer/ClosingStructures/test/Riskeer.ClosingStructures.Plugin.Test/ViewInfos/ClosingStructuresScenariosViewInfoTest.cs (.../ClosingStructuresScenariosViewInfoTest.cs) (revision 72392d6dfe2538a4566813a2a254e1c4dd19d01e) +++ Riskeer/ClosingStructures/test/Riskeer.ClosingStructures.Plugin.Test/ViewInfos/ClosingStructuresScenariosViewInfoTest.cs (.../ClosingStructuresScenariosViewInfoTest.cs) (revision 38a2fc76e88b63b2a680e9ceb2a77a9aa5509918) @@ -1,4 +1,4 @@ -// Copyright (C) Stichting Deltares 2019. All rights reserved. +// Copyright (C) Stichting Deltares 2019. All rights reserved. // // This file is part of Riskeer. // @@ -21,6 +21,7 @@ using System.Drawing; using System.Linq; +using Core.Common.Controls.Views; using Core.Common.Gui.Plugin; using Core.Common.TestUtil; using NUnit.Framework; @@ -40,14 +41,12 @@ { private ClosingStructuresPlugin plugin; private ViewInfo info; - private MockRepository mocks; [SetUp] public void SetUp() { plugin = new ClosingStructuresPlugin(); info = plugin.GetViewInfos().First(tni => tni.ViewType == typeof(ClosingStructuresScenariosView)); - mocks = new MockRepository(); } [TearDown] @@ -105,63 +104,21 @@ } [Test] - public void AfterCreate_Always_SetsSpecificPropertiesToView() + public void CloseForData_ViewNotCorrespondingToRemovedAssessmentSection_ReturnFalse() { // Setup - using (var view = new ClosingStructuresScenariosView()) - { - var group = new CalculationGroup(); - var failureMechanism = new ClosingStructuresFailureMechanism(); - var context = new ClosingStructuresScenariosContext(group, failureMechanism); + var unrelatedFailureMechanism = new ClosingStructuresFailureMechanism(); - // Call - info.AfterCreate(view, context); - - // Assert - Assert.AreSame(failureMechanism, view.FailureMechanism); - } - } - - [Test] - public void CloseForData_AssessmentSectionRemovedWithoutFailureMechanism_ReturnFalse() - { - // Setup - using (var view = new ClosingStructuresScenariosView + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + assessmentSection.Stub(asm => asm.GetFailureMechanisms()).Return(new[] { - Data = new CalculationGroup() - }) - { - var assessmentSection = mocks.Stub(); - assessmentSection.Stub(section => section.GetFailureMechanisms()).Return(new IFailureMechanism[0]); - mocks.ReplayAll(); + unrelatedFailureMechanism + }); + 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 ClosingStructuresScenariosView + using (var view = new ClosingStructuresScenariosView(new CalculationGroup(), new ClosingStructuresFailureMechanism(), assessmentSection)) { - Data = new CalculationGroup() - }) - { - var unrelatedFailureMechanism = new ClosingStructuresFailureMechanism(); - - var assessmentSection = mocks.Stub(); - assessmentSection.Stub(asm => asm.GetFailureMechanisms()).Return(new[] - { - unrelatedFailureMechanism - }); - mocks.ReplayAll(); - // Precondition Assert.AreNotSame(view.Data, unrelatedFailureMechanism.CalculationsGroup); @@ -170,8 +127,9 @@ // Assert Assert.IsFalse(closeForData); - mocks.VerifyAll(); } + + mocks.VerifyAll(); } [Test] @@ -180,18 +138,16 @@ // Setup var relatedFailureMechanism = new ClosingStructuresFailureMechanism(); - using (var view = new ClosingStructuresScenariosView + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + assessmentSection.Stub(asm => asm.GetFailureMechanisms()).Return(new[] { - Data = relatedFailureMechanism.CalculationsGroup - }) - { - var assessmentSection = mocks.Stub(); - assessmentSection.Stub(asm => asm.GetFailureMechanisms()).Return(new[] - { - relatedFailureMechanism - }); - mocks.ReplayAll(); + relatedFailureMechanism + }); + mocks.ReplayAll(); + using (var view = new ClosingStructuresScenariosView(relatedFailureMechanism.CalculationsGroup, relatedFailureMechanism, assessmentSection)) + { // Precondition Assert.AreSame(view.Data, relatedFailureMechanism.CalculationsGroup); @@ -200,190 +156,138 @@ // Assert Assert.IsTrue(closeForData); - mocks.VerifyAll(); } + + mocks.VerifyAll(); } [Test] public void CloseForData_ViewNotCorrespondingToRemovedFailureMechanism_ReturnFalse() { // Setup - using (var view = new ClosingStructuresScenariosView + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + using (var view = new ClosingStructuresScenariosView(new CalculationGroup(), new ClosingStructuresFailureMechanism(), assessmentSection)) { - Data = new CalculationGroup() - }) - { // Call bool closeForData = info.CloseForData(view, new ClosingStructuresFailureMechanism()); // Assert Assert.IsFalse(closeForData); } + + mocks.VerifyAll(); } [Test] public void CloseForData_ViewCorrespondingToRemovedFailureMechanism_ReturnTrue() { // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + var correspondingFailureMechanism = new ClosingStructuresFailureMechanism(); - using (var view = new ClosingStructuresScenariosView + using (var view = new ClosingStructuresScenariosView(correspondingFailureMechanism.CalculationsGroup, correspondingFailureMechanism, assessmentSection)) { - Data = correspondingFailureMechanism.CalculationsGroup - }) - { // Call bool closeForData = info.CloseForData(view, correspondingFailureMechanism); // Assert Assert.IsTrue(closeForData); } + + mocks.VerifyAll(); } [Test] - public void CloseForData_AssessmentSectionRemovedWithoutClosingStructuresFailureMechanism_ReturnsFalse() + public void CloseForData_AssessmentSectionRemovedWithoutClosingStructuresFailureMechanism_ReturnFalse() { // Setup + var mocks = new MockRepository(); var assessmentSection = mocks.Stub(); assessmentSection.Stub(asm => asm.GetFailureMechanisms()).Return(new IFailureMechanism[0]); mocks.ReplayAll(); - var view = new ClosingStructuresScenariosView + using (var view = new ClosingStructuresScenariosView(new CalculationGroup(), new ClosingStructuresFailureMechanism(), assessmentSection)) { - Data = new CalculationGroup() - }; + // Call + bool closeForData = info.CloseForData(view, assessmentSection); - // Call - bool closeForData = info.CloseForData(view, assessmentSection); + // Assert + Assert.IsFalse(closeForData); + } - // Assert - Assert.IsFalse(closeForData); mocks.VerifyAll(); } [Test] - public void CloseForData_ViewNotCorrespondingToRemovedAssessmentSection_ReturnsFalse() + public void CloseForData_ViewNotCorrespondingToRemovedFailureMechanismContext_ReturnFalse() { // Setup + var mocks = new MockRepository(); var assessmentSection = mocks.Stub(); - assessmentSection.Stub(asm => asm.GetFailureMechanisms()).Return(new[] - { - new ClosingStructuresFailureMechanism() - }); - mocks.ReplayAll(); - var view = new ClosingStructuresScenariosView - { - Data = new CalculationGroup() - }; - - // Call - bool closeForData = info.CloseForData(view, assessmentSection); - - // Assert - Assert.IsFalse(closeForData); - mocks.VerifyAll(); - } - - [Test] - public void CloseForData_ViewCorrespondingToRemovedAssessmentSection_ReturnsTrue() - { - // Setup - var assessmentSection = mocks.Stub(); var failureMechanism = new ClosingStructuresFailureMechanism(); - assessmentSection.Stub(asm => asm.GetFailureMechanisms()).Return(new[] - { - failureMechanism - }); + var failureMechanismContext = new ClosingStructuresFailureMechanismContext(new ClosingStructuresFailureMechanism(), assessmentSection); - mocks.ReplayAll(); - - var view = new ClosingStructuresScenariosView + using (var view = new ClosingStructuresScenariosView(failureMechanism.CalculationsGroup, failureMechanism, assessmentSection)) { - Data = failureMechanism.CalculationsGroup - }; + // Call + bool closeForData = info.CloseForData(view, failureMechanismContext); - // Call - bool closeForData = info.CloseForData(view, assessmentSection); + // Assert + Assert.IsFalse(closeForData); + } - // Assert - Assert.IsTrue(closeForData); mocks.VerifyAll(); } [Test] - public void CloseForData_ViewNotCorrespondingToRemovedFailureMechanism_ReturnsFalse() + public void CloseForData_ViewCorrespondingToRemovedFailureMechanismContext_ReturnTrue() { // Setup - var view = new ClosingStructuresScenariosView(); - var failureMechanism = new ClosingStructuresFailureMechanism(); - - 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 ClosingStructuresScenariosView(); - var failureMechanism = new ClosingStructuresFailureMechanism(); - - view.Data = failureMechanism.CalculationsGroup; - - // Call - bool closeForData = info.CloseForData(view, failureMechanism); - - // Assert - Assert.IsTrue(closeForData); - } - - [Test] - public void CloseForData_ViewNotCorrespondingToRemovedFailureMechanismContext_ReturnsFalse() - { - // Setup + var mocks = new MockRepository(); var assessmentSection = mocks.Stub(); - mocks.ReplayAll(); - var view = new ClosingStructuresScenariosView(); var failureMechanism = new ClosingStructuresFailureMechanism(); - var failureMechanismContext = new ClosingStructuresFailureMechanismContext(new ClosingStructuresFailureMechanism(), assessmentSection); + var failureMechanismContext = new ClosingStructuresFailureMechanismContext(failureMechanism, assessmentSection); - view.Data = failureMechanism.CalculationsGroup; + using (var view = new ClosingStructuresScenariosView(failureMechanism.CalculationsGroup, failureMechanism, assessmentSection)) + { + // Call + bool closeForData = info.CloseForData(view, failureMechanismContext); - // Call - bool closeForData = info.CloseForData(view, failureMechanismContext); + // Assert + Assert.IsTrue(closeForData); + } - // Assert - Assert.IsFalse(closeForData); mocks.VerifyAll(); } [Test] - public void CloseForData_ViewCorrespondingToRemovedFailureMechanismContext_ReturnsTrue() + public void CreateInstance_WithContext_ReturnsClosingStructuresScenariosView() { // Setup + var mocks = new MockRepository(); var assessmentSection = mocks.Stub(); - mocks.ReplayAll(); - var view = new ClosingStructuresScenariosView(); - var failureMechanism = new ClosingStructuresFailureMechanism(); - var failureMechanismContext = new ClosingStructuresFailureMechanismContext(failureMechanism, assessmentSection); + var group = new CalculationGroup(); + var context = new ClosingStructuresScenariosContext(group, new ClosingStructuresFailureMechanism(), assessmentSection); - view.Data = failureMechanism.CalculationsGroup; - // Call - bool closeForData = info.CloseForData(view, failureMechanismContext); + using (IView view = info.CreateInstance(context)) + { + // Assert + Assert.IsInstanceOf(view); + Assert.AreSame(group, view.Data); + } - // Assert - Assert.IsTrue(closeForData); mocks.VerifyAll(); } } Index: Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Plugin.Test/ViewInfos/GrassCoverErosionInwardsScenariosViewInfoTest.cs =================================================================== diff -u -r9b642748438acbabb3f67559e289ec49525aaf4b -r38a2fc76e88b63b2a680e9ceb2a77a9aa5509918 --- Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Plugin.Test/ViewInfos/GrassCoverErosionInwardsScenariosViewInfoTest.cs (.../GrassCoverErosionInwardsScenariosViewInfoTest.cs) (revision 9b642748438acbabb3f67559e289ec49525aaf4b) +++ Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Plugin.Test/ViewInfos/GrassCoverErosionInwardsScenariosViewInfoTest.cs (.../GrassCoverErosionInwardsScenariosViewInfoTest.cs) (revision 38a2fc76e88b63b2a680e9ceb2a77a9aa5509918) @@ -268,7 +268,7 @@ } [Test] - public void AfterCreate_WithContext_ReturnsGrassCoverErosionInwardsScenariosView() + public void CreateInstance_WithContext_ReturnsGrassCoverErosionInwardsScenariosView() { // Setup var mocks = new MockRepository();