Index: Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Forms/Views/GrassCoverErosionInwardsScenarioRow.cs =================================================================== diff -u -r1f76045f08612f7b8259c460771c7cdbdb5447a7 -r86f7f85e5485e3566223ebf44e46625503f511b3 --- Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Forms/Views/GrassCoverErosionInwardsScenarioRow.cs (.../GrassCoverErosionInwardsScenarioRow.cs) (revision 1f76045f08612f7b8259c460771c7cdbdb5447a7) +++ Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Forms/Views/GrassCoverErosionInwardsScenarioRow.cs (.../GrassCoverErosionInwardsScenarioRow.cs) (revision 86f7f85e5485e3566223ebf44e46625503f511b3) @@ -20,7 +20,7 @@ // All rights reserved. using System; -using Riskeer.Common.Forms; +using Riskeer.Common.Forms.Views; using Riskeer.GrassCoverErosionInwards.Data; namespace Riskeer.GrassCoverErosionInwards.Forms.Views @@ -29,44 +29,32 @@ /// Container of a , /// which takes care of the representation of properties in a grid. /// - internal class GrassCoverErosionInwardsScenarioRow : IScenarioRow + public class GrassCoverErosionInwardsScenarioRow : ScenarioRow { - private readonly GrassCoverErosionInwardsFailureMechanismSectionResult sectionResult; - /// - /// Initializes a new instance of the class. + /// Creates a new instance of . /// - /// The section result. - /// Thrown when is null. - public GrassCoverErosionInwardsScenarioRow(GrassCoverErosionInwardsFailureMechanismSectionResult sectionResult) - { - if (sectionResult == null) - { - throw new ArgumentNullException(nameof(sectionResult)); - } + /// The this row contains. + /// Thrown when is null. + internal GrassCoverErosionInwardsScenarioRow(GrassCoverErosionInwardsCalculationScenario calculationScenario) + : base(calculationScenario) {} - this.sectionResult = sectionResult; - } - - public string Name + public override double FailureProbability { get { - return sectionResult.Section.Name; + if (CalculationScenario.HasOutput) + { + return CalculationScenario.Output.OvertoppingOutput.Reliability; + } + + return double.NaN; } } - public GrassCoverErosionInwardsCalculation Calculation + public override void Update() { - get - { - return sectionResult.Calculation; - } - set - { - sectionResult.Calculation = value; - sectionResult.NotifyObservers(); - } + } } } \ No newline at end of file Index: Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Forms/Views/GrassCoverErosionInwardsScenariosView.Designer.cs =================================================================== diff -u -r1f76045f08612f7b8259c460771c7cdbdb5447a7 -r86f7f85e5485e3566223ebf44e46625503f511b3 --- Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Forms/Views/GrassCoverErosionInwardsScenariosView.Designer.cs (.../GrassCoverErosionInwardsScenariosView.Designer.cs) (revision 1f76045f08612f7b8259c460771c7cdbdb5447a7) +++ Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Forms/Views/GrassCoverErosionInwardsScenariosView.Designer.cs (.../GrassCoverErosionInwardsScenariosView.Designer.cs) (revision 86f7f85e5485e3566223ebf44e46625503f511b3) @@ -19,7 +19,6 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. -using Riskeer.Common.Forms; namespace Riskeer.GrassCoverErosionInwards.Forms.Views { @@ -38,33 +37,8 @@ /// 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(160, 160); - this.scenarioSelectionControl.TabIndex = 0; - // - // GrassCoverErosionInwardsScenariosView - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.AutoScroll = true; - this.Controls.Add(this.scenarioSelectionControl); - this.MinimumSize = new System.Drawing.Size(160, 160); - this.Name = "GrassCoverErosionInwardsScenariosView"; - this.Size = new System.Drawing.Size(160, 160); - this.ResumeLayout(false); - } #endregion - - private ScenarioSelectionControl scenarioSelectionControl; } } Index: Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Forms/Views/GrassCoverErosionInwardsScenariosView.cs =================================================================== diff -u -r5e2b491ac504c3e9079f28df27d384333d43c988 -r86f7f85e5485e3566223ebf44e46625503f511b3 --- Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Forms/Views/GrassCoverErosionInwardsScenariosView.cs (.../GrassCoverErosionInwardsScenariosView.cs) (revision 5e2b491ac504c3e9079f28df27d384333d43c988) +++ Riskeer/GrassCoverErosionInwards/src/Riskeer.GrassCoverErosionInwards.Forms/Views/GrassCoverErosionInwardsScenariosView.cs (.../GrassCoverErosionInwardsScenariosView.cs) (revision 86f7f85e5485e3566223ebf44e46625503f511b3) @@ -22,28 +22,19 @@ 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.Common.Data.Calculation; +using Riskeer.Common.Data.FailureMechanism; +using Riskeer.Common.Forms.Views; using Riskeer.GrassCoverErosionInwards.Data; -using Riskeer.GrassCoverErosionInwards.Util; namespace Riskeer.GrassCoverErosionInwards.Forms.Views { /// - /// View for configuring scenarios for the grass cover erosion inwards failure mechanism. - /// Shows a grid view where for each failure mechanism section, a calculation within the section - /// can be selected. + /// View for configuring grass cover erosion inwards scenarios. /// - public partial class GrassCoverErosionInwardsScenariosView : UserControl, IView + public partial class GrassCoverErosionInwardsScenariosView : ScenariosView { - private readonly RecursiveObserver calculationInputObserver; - private readonly RecursiveObserver calculationGroupObserver; - private readonly Observer failureMechanismObserver; - private readonly GrassCoverErosionInwardsFailureMechanism failureMechanism; - private CalculationGroup data; - /// /// Creates a new instance of . /// @@ -53,86 +44,20 @@ /// Thrown when any parameter /// is null. public GrassCoverErosionInwardsScenariosView(CalculationGroup calculationGroup, GrassCoverErosionInwardsFailureMechanism failureMechanism) - { - if (calculationGroup == null) - { - throw new ArgumentNullException(nameof(calculationGroup)); - } + : base(calculationGroup, failureMechanism) {} - if (failureMechanism == null) - { - throw new ArgumentNullException(nameof(failureMechanism)); - } - - data = calculationGroup; - this.failureMechanism = failureMechanism; - - InitializeComponent(); - - failureMechanismObserver = new Observer(UpdateDataGridViewDataSource) - { - Observable = failureMechanism - }; - - // 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))) - { - Observable = calculationGroup - }; - calculationGroupObserver = new RecursiveObserver(UpdateDataGridViewDataSource, c => c.Children) - { - Observable = calculationGroup - }; - - UpdateDataGridViewDataSource(); - } - - public object Data + protected override GrassCoverErosionInwardsInput GetCalculationInput(GrassCoverErosionInwardsCalculationScenario calculationScenario) { - get => data; - set => data = value as CalculationGroup; + return calculationScenario.InputParameters; } - /// - /// - /// Necessary to correctly load the content of the dropdown lists of the comboboxes. - /// - protected override void OnLoad(EventArgs e) + protected override IEnumerable GetScenarioRows(FailureMechanismSection failureMechanismSection) { - UpdateDataGridViewDataSource(); - base.OnLoad(e); - } + IEnumerable lineSegments = Math2D.ConvertPointsToLineSegments(failureMechanismSection.Points); + IEnumerable calculations = CalculationGroup.GetCalculations().OfType() + .Where(cs => cs.IsDikeProfileIntersectionWithReferenceLineInSection(lineSegments)); - protected override void Dispose(bool disposing) - { - failureMechanismObserver.Dispose(); - calculationInputObserver.Dispose(); - calculationGroupObserver.Dispose(); - - if (disposing) - { - components?.Dispose(); - } - - base.Dispose(disposing); + return calculations.Select(c => new GrassCoverErosionInwardsScenarioRow(c)).ToList(); } - - private void UpdateDataGridViewDataSource() - { - scenarioSelectionControl.EndEdit(); - - ICalculation[] calculations = data.GetCalculations().ToArray(); - - IDictionary> calculationsPerSegment = - GrassCoverErosionInwardsHelper.CollectCalculationsPerSection(failureMechanism.Sections, calculations.Cast()); - - List scenarioRows = - failureMechanism.SectionResults.Select(sectionResult => new GrassCoverErosionInwardsScenarioRow(sectionResult)).ToList(); - - scenarioSelectionControl.UpdateDataGridViewDataSource(calculations, scenarioRows, calculationsPerSegment); - } } } \ No newline at end of file Index: Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Forms.Test/Views/GrassCoverErosionInwardsScenarioRowTest.cs =================================================================== diff -u -rf1a99bd6f1bfda45d8b7b4dbb8d7b7e51fcc718f -r86f7f85e5485e3566223ebf44e46625503f511b3 --- Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Forms.Test/Views/GrassCoverErosionInwardsScenarioRowTest.cs (.../GrassCoverErosionInwardsScenarioRowTest.cs) (revision f1a99bd6f1bfda45d8b7b4dbb8d7b7e51fcc718f) +++ Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Forms.Test/Views/GrassCoverErosionInwardsScenarioRowTest.cs (.../GrassCoverErosionInwardsScenarioRowTest.cs) (revision 86f7f85e5485e3566223ebf44e46625503f511b3) @@ -19,13 +19,8 @@ // 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 Riskeer.Common.Data.FailureMechanism; -using Riskeer.Common.Forms; +using Riskeer.Common.Forms.Views; using Riskeer.GrassCoverErosionInwards.Data; using Riskeer.GrassCoverErosionInwards.Forms.Views; @@ -35,85 +30,17 @@ public class GrassCoverErosionInwardsScenarioRowTest { [Test] - public void ParameteredConstructor_ExpectedValues() + 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 GrassCoverErosionInwardsFailureMechanismSectionResult(section); + var calculation = new GrassCoverErosionInwardsCalculationScenario(); // Call - var row = new GrassCoverErosionInwardsScenarioRow(sectionResult); + var row = new GrassCoverErosionInwardsScenarioRow(calculation); // Assert - Assert.AreSame(sectionResult.Section.Name, row.Name); - Assert.AreSame(sectionResult.Calculation, row.Calculation); - Assert.IsInstanceOf>(row); + Assert.IsInstanceOf>(row); + Assert.AreSame(calculation, row.CalculationScenario); } - - [Test] - public void ParameteredConstructor_SectionResultIsNull_ThrowArgumentNullException() - { - // Call - TestDelegate call = () => new GrassCoverErosionInwardsScenarioRow(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 GrassCoverErosionInwardsFailureMechanismSectionResult(section); - - var row = new GrassCoverErosionInwardsScenarioRow(sectionResult); - - var calculation = new GrassCoverErosionInwardsCalculation(); - - // 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 GrassCoverErosionInwardsFailureMechanismSectionResult(section); - sectionResult.Attach(observer); - - var row = new GrassCoverErosionInwardsScenarioRow(sectionResult); - - var calculation = new GrassCoverErosionInwardsCalculation(); - - // Call - row.Calculation = calculation; - - // Assert - mocks.VerifyAll(); // Assert observer is notified - } } } \ No newline at end of file Index: Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Forms.Test/Views/GrassCoverErosionInwardsScenariosViewTest.cs =================================================================== diff -u -r37a4e660b01d95d3ff79fd2121cdc905d1867bfe -r86f7f85e5485e3566223ebf44e46625503f511b3 --- Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Forms.Test/Views/GrassCoverErosionInwardsScenariosViewTest.cs (.../GrassCoverErosionInwardsScenariosViewTest.cs) (revision 37a4e660b01d95d3ff79fd2121cdc905d1867bfe) +++ Riskeer/GrassCoverErosionInwards/test/Riskeer.GrassCoverErosionInwards.Forms.Test/Views/GrassCoverErosionInwardsScenariosViewTest.cs (.../GrassCoverErosionInwardsScenariosViewTest.cs) (revision 86f7f85e5485e3566223ebf44e46625503f511b3) @@ -20,27 +20,31 @@ // All rights reserved. using System; -using System.Collections.Generic; -using System.Drawing; -using System.Linq; 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 Riskeer.Common.Data.Calculation; +using Riskeer.Common.Data.DikeProfiles; using Riskeer.Common.Data.FailureMechanism; using Riskeer.Common.Data.TestUtil; -using Riskeer.Common.Forms; +using Riskeer.Common.Forms.Helpers; +using Riskeer.Common.Forms.Views; using Riskeer.GrassCoverErosionInwards.Data; +using Riskeer.GrassCoverErosionInwards.Data.TestUtil; using Riskeer.GrassCoverErosionInwards.Forms.Views; namespace Riskeer.GrassCoverErosionInwards.Forms.Test.Views { [TestFixture] public class GrassCoverErosionInwardsScenariosViewTest { + private const int isRelevantColumnIndex = 0; + private const int contributionColumnIndex = 1; + private const int nameColumnIndex = 2; + private const int failureProbabilityColumnIndex = 3; + private Form testForm; [SetUp] @@ -59,266 +63,109 @@ public void Constructor_ExpectedValues() { // Setup - var failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); + var calculationGroup = new CalculationGroup(); // Call - using (GrassCoverErosionInwardsScenariosView view = ShowScenariosView(failureMechanism)) + using(var view = new GrassCoverErosionInwardsScenariosView(calculationGroup, new GrassCoverErosionInwardsFailureMechanism())) { // Assert - Assert.IsInstanceOf(view); - Assert.IsInstanceOf(view); - Assert.IsTrue(view.AutoScroll); - Assert.AreSame(failureMechanism.CalculationsGroup, view.Data); - - var scenarioSelectionControl = new ControlTester("scenarioSelectionControl").TheObject as ScenarioSelectionControl; - - Assert.NotNull(scenarioSelectionControl); - Assert.AreEqual(new Size(0, 0), scenarioSelectionControl.MinimumSize); + Assert.IsInstanceOf>(view); + Assert.AreSame(calculationGroup, view.Data); } } [Test] - public void Constructor_CalculationGroupNull_ThrowsArgumentNullException() + public void Constructor_DataGridViewCorrectlyInitialized() { // Call - void Call() => new GrassCoverErosionInwardsScenariosView(null, new GrassCoverErosionInwardsFailureMechanism()); + ShowGrassCoverErosionInwardsScenariosView(new GrassCoverErosionInwardsFailureMechanism()); // Assert - var exception = Assert.Throws(Call); - Assert.AreEqual("calculationGroup", exception.ParamName); + 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 Constructor_FailureMechanismNull_ThrowsArgumentNullException() + public void GrassCoverErosionInwardsScenarioView_CalculationsWithAllDataSet_DataGridViewCorrectlyInitialized() { // Call - void Call() => new GrassCoverErosionInwardsScenariosView(new CalculationGroup(), null); + ShowFullyConfiguredGrassCoverErosionInwardsScenariosView(); + var dataGridView = (DataGridView)new ControlTester("dataGridView").TheObject; + // Assert - var exception = Assert.Throws(Call); - Assert.AreEqual("failureMechanism", exception.ParamName); - } + DataGridViewRowCollection rows = dataGridView.Rows; + Assert.AreEqual(2, rows.Count); - [Test] - public void Constructor_WithValidData_UpdateScenarioControl() - { - // Setup - GrassCoverErosionInwardsFailureMechanism failureMechanism = CreateCompleteFailureMechanism(); + 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 - using (ShowScenariosView(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.2), cells[failureProbabilityColumnIndex].FormattedValue); } - [Test] - public void NotifyFailureMechanism_SectionsUpdatedAfterFullInitialization_NewRowAddedToView() + private void ShowFullyConfiguredGrassCoverErosionInwardsScenariosView() { - // Setup - GrassCoverErosionInwardsFailureMechanism failureMechanism = CreateCompleteFailureMechanism(); + DikeProfile dikeProfile1 = DikeProfileTestFactory.CreateDikeProfile(new Point2D(0.0, 0.0)); + DikeProfile dikeProfile2 = DikeProfileTestFactory.CreateDikeProfile(new Point2D(5.0, 0.0)); - using (ShowScenariosView(failureMechanism)) + var failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); + + FailureMechanismTestHelper.SetSections(failureMechanism, new[] { - List newSections = failureMechanism.Sections.ToList(); - newSections.Add(new FailureMechanismSection("SectionC", new[] + new FailureMechanismSection("Section 1", new[] { - failureMechanism.Sections.Last().EndPoint, - new Point2D(30, 30) - })); - - // 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 - GrassCoverErosionInwardsFailureMechanism failureMechanism = CreateCompleteFailureMechanism(); - - using (ShowScenariosView(failureMechanism)) + failureMechanism.CalculationsGroup.Children.AddRange(new[] { - var calculationA = (GrassCoverErosionInwardsCalculation) failureMechanism.CalculationsGroup.Children[0]; - var calculationB = (GrassCoverErosionInwardsCalculation) failureMechanism.CalculationsGroup.Children[1]; - - calculationA.InputParameters.DikeProfile = calculationB.InputParameters.DikeProfile; - - // Call - calculationA.NotifyObservers(); - - // Assert - AssertDataGridView(failureMechanism, false, new[] + new GrassCoverErosionInwardsCalculationScenario { - new[] + Name = "Calculation 1", + InputParameters = { - "" - }, - new[] - { - "", - "CalculationA", - "CalculationB" + DikeProfile = dikeProfile1 } - }); - } - } - - [Test] - public void NotifyCalculationGroup_CalculationAdded_CalculationAddedToSectionResultOptions() - { - // Setup - GrassCoverErosionInwardsFailureMechanism failureMechanism = CreateCompleteFailureMechanism(); - - using (ShowScenariosView(failureMechanism)) - { - var calculationB = (GrassCoverErosionInwardsCalculationScenario) failureMechanism.CalculationsGroup.Children[1]; - var calculationC = new GrassCoverErosionInwardsCalculationScenario + }, + new GrassCoverErosionInwardsCalculationScenario { - Name = "CalculationC", + Name = "Calculation 2", InputParameters = { - DikeProfile = calculationB.InputParameters.DikeProfile - } - }; - failureMechanism.CalculationsGroup.Children.Add(calculationC); - - calculationC.InputParameters.DikeProfile = calculationC.InputParameters.DikeProfile; - - // Call - failureMechanism.CalculationsGroup.NotifyObservers(); - - // Assert - AssertDataGridView(failureMechanism, false, new[] - { - new[] - { - "", - "CalculationA" + DikeProfile = dikeProfile2 }, - new[] - { - "", - "CalculationB", - "CalculationC" - } - }); - } - } - - private static void AssertDataGridView( - GrassCoverErosionInwardsFailureMechanism 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 GrassCoverErosionInwardsOutput(new TestOvertoppingOutput(0.2), null, null) } - } - } - - private GrassCoverErosionInwardsFailureMechanism CreateCompleteFailureMechanism() - { - var failureMechanism = new GrassCoverErosionInwardsFailureMechanism(); - var matchingPointA = new Point2D(0, 0); - var matchingPointB = new Point2D(20, 20); - var calculationA = new GrassCoverErosionInwardsCalculationScenario - { - Name = "CalculationA", - InputParameters = - { - DikeProfile = DikeProfileTestFactory.CreateDikeProfile(matchingPointA) - } - }; - var calculationB = new GrassCoverErosionInwardsCalculationScenario - { - Name = "CalculationB", - InputParameters = - { - DikeProfile = DikeProfileTestFactory.CreateDikeProfile(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; + ShowGrassCoverErosionInwardsScenariosView(failureMechanism); } - private GrassCoverErosionInwardsScenariosView ShowScenariosView(GrassCoverErosionInwardsFailureMechanism failureMechanism) + private void ShowGrassCoverErosionInwardsScenariosView(GrassCoverErosionInwardsFailureMechanism failureMechanism) { var scenariosView = new GrassCoverErosionInwardsScenariosView(failureMechanism.CalculationsGroup, failureMechanism); testForm.Controls.Add(scenariosView); testForm.Show(); - - return scenariosView; } } } \ No newline at end of file