Index: Riskeer/Common/src/Riskeer.Common.Forms/Views/ScenarioRow.cs =================================================================== diff -u -ra7edac6e409e6f2bab9e784261cd59ece1a2a660 -r9f6481bc31f2992b06a7ce74c7f10ca09a31b625 --- Riskeer/Common/src/Riskeer.Common.Forms/Views/ScenarioRow.cs (.../ScenarioRow.cs) (revision a7edac6e409e6f2bab9e784261cd59ece1a2a660) +++ Riskeer/Common/src/Riskeer.Common.Forms/Views/ScenarioRow.cs (.../ScenarioRow.cs) (revision 9f6481bc31f2992b06a7ce74c7f10ca09a31b625) @@ -90,7 +90,7 @@ /// Gets the failure probability of the . /// [TypeConverter(typeof(NoProbabilityValueDoubleConverter))] - public abstract string FailureProbability { get; } + public abstract double FailureProbability { get; } /// /// Updates the row based on the current output of the . Index: Riskeer/Common/src/Riskeer.Common.Forms/Views/ScenariosView.Designer.cs =================================================================== diff -u -r290fcfde155c13a1e87a3e9230bbde7e63ab0476 -r9f6481bc31f2992b06a7ce74c7f10ca09a31b625 --- Riskeer/Common/src/Riskeer.Common.Forms/Views/ScenariosView.Designer.cs (.../ScenariosView.Designer.cs) (revision 290fcfde155c13a1e87a3e9230bbde7e63ab0476) +++ Riskeer/Common/src/Riskeer.Common.Forms/Views/ScenariosView.Designer.cs (.../ScenariosView.Designer.cs) (revision 9f6481bc31f2992b06a7ce74c7f10ca09a31b625) @@ -21,7 +21,7 @@ namespace Riskeer.Common.Forms.Views { - partial class ScenariosView + partial class ScenariosView { /// /// Required designer variable. @@ -42,7 +42,7 @@ this.listBox = new System.Windows.Forms.ListBox(); this.tableLayoutPanelDataGrid = new System.Windows.Forms.TableLayoutPanel(); this.labelCalculations = new System.Windows.Forms.Label(); - this.dataGridViewControl = new Core.Common.Controls.DataGrid.DataGridViewControl(); + this.DataGridViewControl = new Core.Common.Controls.DataGrid.DataGridViewControl(); ((System.ComponentModel.ISupportInitialize)(this.splitContainer)).BeginInit(); this.splitContainer.Panel1.SuspendLayout(); this.splitContainer.Panel2.SuspendLayout(); @@ -107,7 +107,7 @@ this.tableLayoutPanelDataGrid.ColumnCount = 1; this.tableLayoutPanelDataGrid.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); this.tableLayoutPanelDataGrid.Controls.Add(this.labelCalculations, 0, 0); - this.tableLayoutPanelDataGrid.Controls.Add(this.dataGridViewControl, 0, 1); + this.tableLayoutPanelDataGrid.Controls.Add(this.DataGridViewControl, 0, 1); this.tableLayoutPanelDataGrid.Dock = System.Windows.Forms.DockStyle.Fill; this.tableLayoutPanelDataGrid.Location = new System.Drawing.Point(0, 0); this.tableLayoutPanelDataGrid.Name = "tableLayoutPanelDataGrid"; @@ -126,15 +126,15 @@ this.labelCalculations.TabIndex = 0; this.labelCalculations.Text = Properties.Resources.Calculations_per_FailureMechanismSection_DisplayName; // - // dataGridViewControl + // DataGridViewControl // - this.dataGridViewControl.Dock = System.Windows.Forms.DockStyle.Fill; - this.dataGridViewControl.Location = new System.Drawing.Point(3, 16); - this.dataGridViewControl.MultiSelect = true; - this.dataGridViewControl.Name = "dataGridViewControl"; - this.dataGridViewControl.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.RowHeaderSelect; - this.dataGridViewControl.Size = new System.Drawing.Size(183, 131); - this.dataGridViewControl.TabIndex = 1; + this.DataGridViewControl.Dock = System.Windows.Forms.DockStyle.Fill; + this.DataGridViewControl.Location = new System.Drawing.Point(3, 16); + this.DataGridViewControl.MultiSelect = true; + this.DataGridViewControl.Name = "dataGridViewControl"; + this.DataGridViewControl.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.RowHeaderSelect; + this.DataGridViewControl.Size = new System.Drawing.Size(183, 131); + this.DataGridViewControl.TabIndex = 1; // // ScenariosView // @@ -159,6 +159,6 @@ private System.Windows.Forms.ListBox listBox; private System.Windows.Forms.TableLayoutPanel tableLayoutPanelDataGrid; private System.Windows.Forms.Label labelCalculations; - private Core.Common.Controls.DataGrid.DataGridViewControl dataGridViewControl; + protected Core.Common.Controls.DataGrid.DataGridViewControl DataGridViewControl; } } Index: Riskeer/Common/src/Riskeer.Common.Forms/Views/ScenariosView.cs =================================================================== diff -u -r644ba108489775ba36f264fc2cfc15fc9ad8968b -r9f6481bc31f2992b06a7ce74c7f10ca09a31b625 --- Riskeer/Common/src/Riskeer.Common.Forms/Views/ScenariosView.cs (.../ScenariosView.cs) (revision 644ba108489775ba36f264fc2cfc15fc9ad8968b) +++ Riskeer/Common/src/Riskeer.Common.Forms/Views/ScenariosView.cs (.../ScenariosView.cs) (revision 9f6481bc31f2992b06a7ce74c7f10ca09a31b625) @@ -38,13 +38,13 @@ /// The type of calculation scenario. /// The type of calculation input. /// The type of the scenario row. - public abstract partial class ScenariosView : UserControl, IView + /// The type of the failure mechanism. + public abstract partial class ScenariosView : UserControl, IView where TCalculationScenario : class, ICalculationScenario where TCalculationInput : class, ICalculationInput where TScenarioRow : ScenarioRow + where TFailureMechanism : IFailureMechanism { - private readonly IFailureMechanism failureMechanism; - private Observer failureMechanismObserver; private RecursiveObserver calculationGroupObserver; private RecursiveObserver calculationObserver; @@ -53,15 +53,15 @@ private IEnumerable scenarioRows; /// - /// Creates a new instance of . + /// Creates a new instance of . /// /// The /// to get the calculations from. - /// The + /// The /// to get the sections from. /// Thrown when any parameter /// is null. - protected ScenariosView(CalculationGroup calculationGroup, IFailureMechanism failureMechanism) + protected ScenariosView(CalculationGroup calculationGroup, TFailureMechanism failureMechanism) { if (calculationGroup == null) { @@ -74,24 +74,44 @@ } CalculationGroup = calculationGroup; - this.failureMechanism = failureMechanism; + FailureMechanism = failureMechanism; InitializeObservers(); InitializeComponent(); + } + /// + /// + /// Initialization is performed in in order to + /// prevent errors due to virtual member calls in constructor. + /// + protected override void OnLoad(EventArgs e) + { + base.OnLoad(e); + InitializeListBox(); InitializeDataGridView(); + UpdateSectionsListBox(); UpdateDataGridViewDataSource(); } - public object Data { get; set; } + public object Data + { + get => CalculationGroup; + set => CalculationGroup = (CalculationGroup) value; + } /// + /// Gets the . + /// + protected TFailureMechanism FailureMechanism { get; } + + /// /// Gets the . /// - protected CalculationGroup CalculationGroup { get; } + public CalculationGroup CalculationGroup { get; private set; } /// /// Gets the input of a . @@ -104,7 +124,7 @@ /// Gets a collection of . /// /// The collection of . - protected abstract IEnumerable GetScenarioRows(); + protected abstract IEnumerable GetScenarioRows(FailureMechanismSection failureMechanismSection); protected override void Dispose(bool disposing) { @@ -121,11 +141,31 @@ base.Dispose(disposing); } + protected virtual void InitializeDataGridView() + { + DataGridViewControl.AddCheckBoxColumn( + nameof(ScenarioRow.IsRelevant), + Resources.ScenarioView_InitializeDataGridView_In_final_rating + ); + DataGridViewControl.AddTextBoxColumn( + nameof(ScenarioRow.Contribution), + Resources.ScenarioView_InitializeDataGridView_Contribution + ); + DataGridViewControl.AddTextBoxColumn( + nameof(ScenarioRow.Name), + Resources.ScenarioView_Name_DisplayName + ); + DataGridViewControl.AddTextBoxColumn( + nameof(ScenarioRow.FailureProbability), + Resources.ScenarioView_FailureProbability_DisplayName + ); + } + private void InitializeObservers() { failureMechanismObserver = new Observer(UpdateSectionsListBox) { - Observable = failureMechanism + Observable = FailureMechanism }; calculationGroupObserver = new RecursiveObserver(UpdateDataGridViewDataSource, pcg => pcg.Children) @@ -149,36 +189,16 @@ private void UpdateDataGridViewDataSource() { - if (!(listBox.SelectedItem is FailureMechanismSection)) + if (!(listBox.SelectedItem is FailureMechanismSection failureMechanismSection)) { - dataGridViewControl.SetDataSource(null); + DataGridViewControl.SetDataSource(null); return; } - scenarioRows = GetScenarioRows(); - dataGridViewControl.SetDataSource(scenarioRows); + scenarioRows = GetScenarioRows(failureMechanismSection); + DataGridViewControl.SetDataSource(scenarioRows); } - private void InitializeDataGridView() - { - dataGridViewControl.AddCheckBoxColumn( - nameof(ScenarioRow.IsRelevant), - Resources.ScenarioView_InitializeDataGridView_In_final_rating - ); - dataGridViewControl.AddTextBoxColumn( - nameof(ScenarioRow.Contribution), - Resources.ScenarioView_InitializeDataGridView_Contribution - ); - dataGridViewControl.AddTextBoxColumn( - nameof(ScenarioRow.Name), - Resources.ScenarioView_Name_DisplayName - ); - dataGridViewControl.AddTextBoxColumn( - nameof(ScenarioRow.FailureProbability), - Resources.ScenarioView_FailureProbability_DisplayName - ); - } - private void InitializeListBox() { listBox.DisplayMember = nameof(FailureMechanismSection.Name); @@ -189,10 +209,10 @@ { listBox.Items.Clear(); - if (failureMechanism.Sections.Any()) + if (FailureMechanism.Sections.Any()) { - listBox.Items.AddRange(failureMechanism.Sections.Cast().ToArray()); - listBox.SelectedItem = failureMechanism.Sections.First(); + listBox.Items.AddRange(FailureMechanism.Sections.Cast().ToArray()); + listBox.SelectedItem = FailureMechanism.Sections.First(); } } @@ -204,7 +224,7 @@ private void UpdateScenarioRows() { scenarioRows.ForEachElementDo(row => row.Update()); - dataGridViewControl.RefreshDataGridView(); + DataGridViewControl.RefreshDataGridView(); } } } \ No newline at end of file Index: Riskeer/Common/test/Riskeer.Common.Forms.Test/Views/ScenarioRowTest.cs =================================================================== diff -u -ra7edac6e409e6f2bab9e784261cd59ece1a2a660 -r9f6481bc31f2992b06a7ce74c7f10ca09a31b625 --- Riskeer/Common/test/Riskeer.Common.Forms.Test/Views/ScenarioRowTest.cs (.../ScenarioRowTest.cs) (revision a7edac6e409e6f2bab9e784261cd59ece1a2a660) +++ Riskeer/Common/test/Riskeer.Common.Forms.Test/Views/ScenarioRowTest.cs (.../ScenarioRowTest.cs) (revision 9f6481bc31f2992b06a7ce74c7f10ca09a31b625) @@ -26,6 +26,7 @@ using Rhino.Mocks; using Riskeer.Common.Data.Calculation; using Riskeer.Common.Data.TestUtil; +using Riskeer.Common.Forms.TypeConverters; using Riskeer.Common.Forms.Views; namespace Riskeer.Common.Forms.Test.Views @@ -70,6 +71,9 @@ Assert.AreEqual(isRelevant, row.IsRelevant); Assert.AreEqual(2, row.Contribution.NumberOfDecimalPlaces); Assert.AreEqual(contribution * 100, row.Contribution, row.Contribution.GetAccuracy()); + TestHelper.AssertTypeConverter, NoProbabilityValueDoubleConverter>( + nameof(ScenarioRow.FailureProbability)); + mocks.VerifyAll(); } @@ -121,7 +125,7 @@ public TestScenarioRow(TCalculationScenario calculationScenario) : base(calculationScenario) {} - public override string FailureProbability { get; } + public override double FailureProbability { get; } public override void Update() {} } Index: Riskeer/Common/test/Riskeer.Common.Forms.Test/Views/ScenariosViewTest.cs =================================================================== diff -u -r290fcfde155c13a1e87a3e9230bbde7e63ab0476 -r9f6481bc31f2992b06a7ce74c7f10ca09a31b625 --- Riskeer/Common/test/Riskeer.Common.Forms.Test/Views/ScenariosViewTest.cs (.../ScenariosViewTest.cs) (revision 290fcfde155c13a1e87a3e9230bbde7e63ab0476) +++ Riskeer/Common/test/Riskeer.Common.Forms.Test/Views/ScenariosViewTest.cs (.../ScenariosViewTest.cs) (revision 9f6481bc31f2992b06a7ce74c7f10ca09a31b625) @@ -28,10 +28,10 @@ using Core.Common.Controls.Views; using NUnit.Extensions.Forms; using NUnit.Framework; -using Rhino.Mocks; using Riskeer.Common.Data.Calculation; using Riskeer.Common.Data.FailureMechanism; using Riskeer.Common.Data.TestUtil; +using Riskeer.Common.Forms.Helpers; using Riskeer.Common.Forms.Views; namespace Riskeer.Common.Forms.Test.Views @@ -61,18 +61,12 @@ [Test] public void Constructor_CalculationGroupNull_ThrowsArgumentNullException() { - // Setup - var mocks = new MockRepository(); - var failureMechanism = mocks.Stub(); - mocks.ReplayAll(); - // Call - void Call() => new TestScenariosView(null, failureMechanism); + void Call() => new TestScenariosView(null, new TestFailureMechanism()); // Assert var exception = Assert.Throws(Call); Assert.AreEqual("calculationGroup", exception.ParamName); - mocks.VerifyAll(); } [Test] @@ -98,8 +92,7 @@ // Assert Assert.IsInstanceOf(view); Assert.IsInstanceOf(view); - Assert.IsNull(view.Data); - Assert.AreSame(calculationGroup, view.TestCalculationGroup); + Assert.AreSame(calculationGroup, view.Data); } } @@ -148,7 +141,7 @@ public void Constructor_DataGridViewCorrectlyInitialized() { // Call - ShowFullyConfiguredScenarioView(new CalculationGroup(), new TestFailureMechanism()); + ShowFullyConfiguredScenariosView(new CalculationGroup(), new TestFailureMechanism()); var dataGridView = (DataGridView) new ControlTester("dataGridView").TheObject; @@ -168,21 +161,21 @@ 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("1", cells[failureProbabilityColumnIndex].FormattedValue); + Assert.AreEqual(ProbabilityFormattingHelper.Format(1), cells[failureProbabilityColumnIndex].FormattedValue); cells = rows[1].Cells; Assert.AreEqual(4, cells.Count); Assert.IsFalse(Convert.ToBoolean(cells[isRelevantColumnIndex].FormattedValue)); Assert.AreEqual(new RoundedDouble(2, 100).ToString(), cells[contributionColumnIndex].FormattedValue); Assert.AreEqual("Calculation 2", cells[nameColumnIndex].FormattedValue); - Assert.AreEqual("1", cells[failureProbabilityColumnIndex].FormattedValue); + Assert.AreEqual(ProbabilityFormattingHelper.Format(1), cells[failureProbabilityColumnIndex].FormattedValue); } [Test] - public void ScenarioView_ContributionValueInvalid_ShowsErrorTooltip() + public void ScenariosView_ContributionValueInvalid_ShowsErrorTooltip() { // Setup - ShowFullyConfiguredScenarioView(new CalculationGroup(), new TestFailureMechanism()); + ShowFullyConfiguredScenariosView(new CalculationGroup(), new TestFailureMechanism()); var dataGridView = (DataGridView) new ControlTester("dataGridView").TheObject; @@ -198,10 +191,10 @@ [TestCase(1e-6)] [TestCase(1e+6)] [TestCase(14.3)] - public void ScenarioView_EditValueValid_DoNotShowErrorToolTipAndEditValue(double newValue) + public void ScenariosView_EditValueValid_DoNotShowErrorToolTipAndEditValue(double newValue) { // Setup - ShowFullyConfiguredScenarioView(new CalculationGroup(), new TestFailureMechanism()); + ShowFullyConfiguredScenariosView(new CalculationGroup(), new TestFailureMechanism()); var dataGridView = (DataGridView) new ControlTester("dataGridView").TheObject; @@ -217,7 +210,7 @@ { // Given var failureMechanism = new TestFailureMechanism(); - ShowFullyConfiguredScenarioView(new CalculationGroup(), failureMechanism); + ShowFullyConfiguredScenariosView(new CalculationGroup(), failureMechanism); var listBox = (ListBox) new ControlTester("listBox").TheObject; var dataGridView = (DataGridView) new ControlTester("dataGridView").TheObject; @@ -292,7 +285,7 @@ { // Given var failureMechanism = new TestFailureMechanism(); - ShowFullyConfiguredScenarioView(new CalculationGroup(), failureMechanism); + ShowFullyConfiguredScenariosView(new CalculationGroup(), failureMechanism); var dataGridView = (DataGridView) new ControlTester("dataGridView").TheObject; @@ -314,11 +307,11 @@ } [Test] - public void GivenScenarioView_WhenCalculationGroupNotifiesObserver_ThenDataGridViewUpdated() + public void GivenScenariosView_WhenCalculationGroupNotifiesObserver_ThenDataGridViewUpdated() { // Given var calculationGroup = new CalculationGroup(); - ShowFullyConfiguredScenarioView(calculationGroup, new TestFailureMechanism()); + ShowFullyConfiguredScenariosView(calculationGroup, new TestFailureMechanism()); var dataGridView = (DataGridView) new ControlTester("dataGridView").TheObject; @@ -340,11 +333,11 @@ } [Test] - public void GivenScenarioView_WhenCalculationNotifiesObserver_ThenViewUpdated() + public void GivenScenariosView_WhenCalculationNotifiesObserver_ThenViewUpdated() { // Given var calculationGroup = new CalculationGroup(); - ShowFullyConfiguredScenarioView(calculationGroup, new TestFailureMechanism()); + ShowFullyConfiguredScenariosView(calculationGroup, new TestFailureMechanism()); var dataGridView = (DataGridView) new ControlTester("dataGridView").TheObject; var refreshed = 0; @@ -370,11 +363,11 @@ } [Test] - public void GivenScenarioView_WhenCalculationInputNotifiesObserver_ThenDataGridViewUpdated() + public void GivenScenariosView_WhenCalculationInputNotifiesObserver_ThenDataGridViewUpdated() { // Given var calculationGroup = new CalculationGroup(); - ShowFullyConfiguredScenarioView(calculationGroup, new TestFailureMechanism()); + ShowFullyConfiguredScenariosView(calculationGroup, new TestFailureMechanism()); var dataGridView = (DataGridView) new ControlTester("dataGridView").TheObject; @@ -397,7 +390,7 @@ CollectionAssert.AreNotEquivalent(sectionResultRows, updatedRows); } - private void ShowFullyConfiguredScenarioView(CalculationGroup calculationGroup, IFailureMechanism failureMechanism) + private void ShowFullyConfiguredScenariosView(CalculationGroup calculationGroup, TestFailureMechanism failureMechanism) { FailureMechanismTestHelper.SetSections(failureMechanism, new[] { @@ -429,27 +422,25 @@ ShowScenariosView(calculationGroup, failureMechanism); } - private void ShowScenariosView(CalculationGroup calculationGroup, IFailureMechanism failureMechanism) + private void ShowScenariosView(CalculationGroup calculationGroup, TestFailureMechanism failureMechanism) { var scenariosView = new TestScenariosView(calculationGroup, failureMechanism); testForm.Controls.Add(scenariosView); testForm.Show(); } - private class TestScenariosView : ScenariosView + private class TestScenariosView : ScenariosView { - public TestScenariosView(CalculationGroup calculationGroup, IFailureMechanism failureMechanism) + public TestScenariosView(CalculationGroup calculationGroup, TestFailureMechanism failureMechanism) : base(calculationGroup, failureMechanism) {} - - public CalculationGroup TestCalculationGroup => CalculationGroup; - + protected override TestCalculationInput GetCalculationInput(TestCalculationScenario calculationScenario) { return calculationScenario.InputParameters; } - protected override IEnumerable GetScenarioRows() + protected override IEnumerable GetScenarioRows(FailureMechanismSection failureMechanismSection) { return CalculationGroup.Children.OfType() .Select(calculationScenario => new TestScenarioRow(calculationScenario)) @@ -462,7 +453,7 @@ public TestScenarioRow(TestCalculationScenario calculationScenario) : base(calculationScenario) {} - public override string FailureProbability => "1"; + public override double FailureProbability => 1; public bool Updated { get; private set; } Index: Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingScenarioRow.cs =================================================================== diff -u -r86594ccd7329d320872573a1d066fe18959d3cea -r9f6481bc31f2992b06a7ce74c7f10ca09a31b625 --- Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingScenarioRow.cs (.../PipingScenarioRow.cs) (revision 86594ccd7329d320872573a1d066fe18959d3cea) +++ Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingScenarioRow.cs (.../PipingScenarioRow.cs) (revision 9f6481bc31f2992b06a7ce74c7f10ca09a31b625) @@ -21,19 +21,17 @@ using System; using System.ComponentModel; -using Core.Common.Base.Data; using Riskeer.Common.Data.AssessmentSection; -using Riskeer.Common.Forms.Helpers; using Riskeer.Common.Forms.TypeConverters; +using Riskeer.Common.Forms.Views; using Riskeer.Piping.Data; -using RiskeerCommonFormsResources = Riskeer.Common.Forms.Properties.Resources; namespace Riskeer.Piping.Forms.Views { /// /// This class represents a row of in the . /// - internal class PipingScenarioRow + public class PipingScenarioRow : ScenarioRow { private readonly PipingFailureMechanism failureMechanism; private readonly IAssessmentSection assessmentSection; @@ -42,18 +40,13 @@ /// /// Creates a new instance of . /// - /// The this row contains. + /// The this row contains. /// The failure mechanism that the calculation belongs to. /// The assessment section that the calculation belongs to. /// Thrown when any parameter is null. - public PipingScenarioRow(PipingCalculationScenario calculation, PipingFailureMechanism failureMechanism, - IAssessmentSection assessmentSection) + internal PipingScenarioRow(PipingCalculationScenario calculationScenario, PipingFailureMechanism failureMechanism, + IAssessmentSection assessmentSection) : base(calculationScenario) { - if (calculation == null) - { - throw new ArgumentNullException(nameof(calculation)); - } - if (failureMechanism == null) { throw new ArgumentNullException(nameof(failureMechanism)); @@ -64,129 +57,41 @@ throw new ArgumentNullException(nameof(assessmentSection)); } - Calculation = calculation; this.failureMechanism = failureMechanism; this.assessmentSection = assessmentSection; CreateDerivedOutput(); } - /// - /// Gets the this row contains. - /// - public PipingCalculationScenario Calculation { get; } + public override double FailureProbability => derivedOutput?.PipingProbability ?? double.NaN; /// - /// Gets or sets the is relevant. - /// - public bool IsRelevant - { - get - { - return Calculation.IsRelevant; - } - set - { - Calculation.IsRelevant = value; - Calculation.NotifyObservers(); - } - } - - /// - /// Gets or sets the contribution of the . - /// - public RoundedDouble Contribution - { - get - { - return new RoundedDouble(2, Calculation.Contribution * 100); - } - set - { - Calculation.Contribution = (RoundedDouble) (value / 100); - Calculation.NotifyObservers(); - } - } - - /// - /// Gets the name of the . - /// - public string Name - { - get - { - return Calculation.Name; - } - } - - /// - /// Gets the failure probability of piping of the . - /// - [TypeConverter(typeof(NoProbabilityValueDoubleConverter))] - public string FailureProbabilityPiping - { - get - { - return derivedOutput == null - ? RiskeerCommonFormsResources.RoundedDouble_No_result_dash - : ProbabilityFormattingHelper.Format(derivedOutput.PipingProbability); - } - } - - /// /// Gets the failure probability of uplift sub failure mechanism of the . /// [TypeConverter(typeof(NoProbabilityValueDoubleConverter))] - public string FailureProbabilityUplift - { - get - { - return derivedOutput == null - ? RiskeerCommonFormsResources.RoundedDouble_No_result_dash - : ProbabilityFormattingHelper.Format(derivedOutput.UpliftProbability); - } - } + public double FailureProbabilityUplift => derivedOutput?.UpliftProbability ?? double.NaN; /// /// Gets the failure probability of heave sub failure mechanism of the . /// [TypeConverter(typeof(NoProbabilityValueDoubleConverter))] - public string FailureProbabilityHeave - { - get - { - return derivedOutput == null - ? RiskeerCommonFormsResources.RoundedDouble_No_result_dash - : ProbabilityFormattingHelper.Format(derivedOutput.HeaveProbability); - } - } + public double FailureProbabilityHeave => derivedOutput?.HeaveProbability ?? double.NaN; /// /// Gets the failure probability of sellmeijer sub failure mechanism of the . /// [TypeConverter(typeof(NoProbabilityValueDoubleConverter))] - public string FailureProbabilitySellmeijer - { - get - { - return derivedOutput == null - ? RiskeerCommonFormsResources.RoundedDouble_No_result_dash - : ProbabilityFormattingHelper.Format(derivedOutput.SellmeijerProbability); - } - } + public double FailureProbabilitySellmeijer => derivedOutput?.SellmeijerProbability ?? double.NaN; - /// - /// Updates the row based on the current output of the calculation scenario. - /// - public void Update() + public override void Update() { CreateDerivedOutput(); } private void CreateDerivedOutput() { - derivedOutput = Calculation.HasOutput - ? DerivedPipingOutputFactory.Create(Calculation.Output, failureMechanism, assessmentSection) + derivedOutput = CalculationScenario.HasOutput + ? DerivedPipingOutputFactory.Create(CalculationScenario.Output, failureMechanism, assessmentSection) : null; } } Index: Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingScenariosView.Designer.cs =================================================================== diff -u -r86594ccd7329d320872573a1d066fe18959d3cea -r9f6481bc31f2992b06a7ce74c7f10ca09a31b625 --- Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingScenariosView.Designer.cs (.../PipingScenariosView.Designer.cs) (revision 86594ccd7329d320872573a1d066fe18959d3cea) +++ Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingScenariosView.Designer.cs (.../PipingScenariosView.Designer.cs) (revision 9f6481bc31f2992b06a7ce74c7f10ca09a31b625) @@ -36,99 +36,8 @@ /// private void InitializeComponent() { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PipingScenariosView)); - this.splitContainer = new System.Windows.Forms.SplitContainer(); - this.tableLayoutPanelListBox = new System.Windows.Forms.TableLayoutPanel(); - this.listBox = new System.Windows.Forms.ListBox(); - this.labelFailureMechanismSections = new System.Windows.Forms.Label(); - this.tableLayoutPanelDataGrid = new System.Windows.Forms.TableLayoutPanel(); - this.labelCalculations = new System.Windows.Forms.Label(); - this.dataGridViewControl = new Core.Common.Controls.DataGrid.DataGridViewControl(); - ((System.ComponentModel.ISupportInitialize)(this.splitContainer)).BeginInit(); - this.splitContainer.Panel1.SuspendLayout(); - this.splitContainer.Panel2.SuspendLayout(); - this.splitContainer.SuspendLayout(); - this.tableLayoutPanelListBox.SuspendLayout(); - this.tableLayoutPanelDataGrid.SuspendLayout(); - this.SuspendLayout(); - // - // splitContainer - // - resources.ApplyResources(this.splitContainer, "splitContainer"); - this.splitContainer.Name = "splitContainer"; - // - // splitContainer.Panel1 - // - this.splitContainer.Panel1.Controls.Add(this.tableLayoutPanelListBox); - // - // splitContainer.Panel2 - // - this.splitContainer.Panel2.Controls.Add(this.tableLayoutPanelDataGrid); - this.splitContainer.TabStop = false; - // - // tableLayoutPanelListBox - // - resources.ApplyResources(this.tableLayoutPanelListBox, "tableLayoutPanelListBox"); - this.tableLayoutPanelListBox.Controls.Add(this.listBox, 0, 1); - this.tableLayoutPanelListBox.Controls.Add(this.labelFailureMechanismSections, 0, 0); - this.tableLayoutPanelListBox.Name = "tableLayoutPanelListBox"; - // - // listBox - // - resources.ApplyResources(this.listBox, "listBox"); - this.listBox.FormattingEnabled = true; - this.listBox.Name = "listBox"; - // - // labelFailureMechanismSections - // - resources.ApplyResources(this.labelFailureMechanismSections, "labelFailureMechanismSections"); - this.labelFailureMechanismSections.Name = "labelFailureMechanismSections"; - // - // tableLayoutPanelDataGrid - // - resources.ApplyResources(this.tableLayoutPanelDataGrid, "tableLayoutPanelDataGrid"); - this.tableLayoutPanelDataGrid.Controls.Add(this.labelCalculations, 0, 0); - this.tableLayoutPanelDataGrid.Controls.Add(this.dataGridViewControl, 0, 1); - this.tableLayoutPanelDataGrid.Name = "tableLayoutPanelDataGrid"; - // - // labelCalculations - // - resources.ApplyResources(this.labelCalculations, "labelCalculations"); - this.labelCalculations.Name = "labelCalculations"; - // - // dataGridViewControl - // - resources.ApplyResources(this.dataGridViewControl, "dataGridViewControl"); - this.dataGridViewControl.MultiSelect = true; - this.dataGridViewControl.Name = "dataGridViewControl"; - this.dataGridViewControl.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.RowHeaderSelect; - // - // PipingScenariosView - // - resources.ApplyResources(this, "$this"); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.Controls.Add(this.splitContainer); - this.Name = "PipingScenariosView"; - this.splitContainer.Panel1.ResumeLayout(false); - this.splitContainer.Panel2.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.splitContainer)).EndInit(); - this.splitContainer.ResumeLayout(false); - this.tableLayoutPanelListBox.ResumeLayout(false); - this.tableLayoutPanelListBox.PerformLayout(); - this.tableLayoutPanelDataGrid.ResumeLayout(false); - this.tableLayoutPanelDataGrid.PerformLayout(); - this.ResumeLayout(false); - } #endregion - - private System.Windows.Forms.SplitContainer splitContainer; - private System.Windows.Forms.TableLayoutPanel tableLayoutPanelListBox; - private System.Windows.Forms.ListBox listBox; - private System.Windows.Forms.Label labelFailureMechanismSections; - private System.Windows.Forms.TableLayoutPanel tableLayoutPanelDataGrid; - private System.Windows.Forms.Label labelCalculations; - private Core.Common.Controls.DataGrid.DataGridViewControl dataGridViewControl; } } Index: Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingScenariosView.cs =================================================================== diff -u -r86594ccd7329d320872573a1d066fe18959d3cea -r9f6481bc31f2992b06a7ce74c7f10ca09a31b625 --- Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingScenariosView.cs (.../PipingScenariosView.cs) (revision 86594ccd7329d320872573a1d066fe18959d3cea) +++ Riskeer/Piping/src/Riskeer.Piping.Forms/Views/PipingScenariosView.cs (.../PipingScenariosView.cs) (revision 9f6481bc31f2992b06a7ce74c7f10ca09a31b625) @@ -22,206 +22,76 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Windows.Forms; -using Core.Common.Base; using Core.Common.Base.Geometry; -using Core.Common.Controls.Views; -using Core.Common.Util.Extensions; using Riskeer.Common.Data.AssessmentSection; using Riskeer.Common.Data.Calculation; using Riskeer.Common.Data.FailureMechanism; +using Riskeer.Common.Forms.Views; using Riskeer.Piping.Data; using Riskeer.Piping.Forms.Properties; namespace Riskeer.Piping.Forms.Views { /// - /// This class is a view for configuring piping calculations. + /// View for configuring piping calculation scenarios. /// - public partial class PipingScenariosView : UserControl, IView + public partial class PipingScenariosView : ScenariosView { private readonly IAssessmentSection assessmentSection; - private readonly RecursiveObserver pipingInputObserver; - private readonly RecursiveObserver pipingCalculationGroupObserver; - private readonly RecursiveObserver pipingCalculationObserver; - private readonly Observer pipingFailureMechanismObserver; - private CalculationGroup calculationGroup; - private PipingFailureMechanism pipingFailureMechanism; - private List pipingScenarioRows; /// - /// Creates a new instance of the class. + /// Creates a new instance of . /// + /// The + /// to get the calculations from. + /// The + /// to get the sections from. /// The assessment section the scenarios belong to. - /// Thrown when + /// Thrown when any parameter /// is null. - public PipingScenariosView(IAssessmentSection assessmentSection) + public PipingScenariosView(CalculationGroup calculationGroup, PipingFailureMechanism failureMechanism, IAssessmentSection assessmentSection) + : base(calculationGroup, failureMechanism) { if (assessmentSection == null) { throw new ArgumentNullException(nameof(assessmentSection)); } - InitializeComponent(); - InitializeDataGridView(); - InitializeListBox(); - this.assessmentSection = assessmentSection; - - pipingFailureMechanismObserver = new Observer(OnPipingFailureMechanismUpdate); - - // The concat is needed to observe the input of calculations in child groups. - pipingInputObserver = new RecursiveObserver(UpdateDataGridViewDataSource, pcg => pcg.Children.Concat(pcg.Children.OfType().Select(pc => pc.InputParameters))); - pipingCalculationGroupObserver = new RecursiveObserver(UpdateDataGridViewDataSource, pcg => pcg.Children); - pipingCalculationObserver = new RecursiveObserver(UpdateScenarioRows, pcg => pcg.Children); } - /// - /// Gets or sets the piping failure mechanism. - /// - public PipingFailureMechanism PipingFailureMechanism + protected override PipingInput GetCalculationInput(PipingCalculationScenario calculationScenario) { - get - { - return pipingFailureMechanism; - } - set - { - pipingFailureMechanism = value; - pipingFailureMechanismObserver.Observable = pipingFailureMechanism; - - UpdateSectionsListBox(); - } + return calculationScenario.InputParameters; } - public object Data + protected override IEnumerable GetScenarioRows(FailureMechanismSection failureMechanismSection) { - get - { - return calculationGroup; - } - set - { - calculationGroup = value as CalculationGroup; + IEnumerable lineSegments = Math2D.ConvertPointsToLineSegments(failureMechanismSection.Points); + IEnumerable pipingCalculations = CalculationGroup + .GetCalculations() + .OfType() + .Where(pc => pc.IsSurfaceLineIntersectionWithReferenceLineInSection(lineSegments)); - if (calculationGroup != null) - { - UpdateDataGridViewDataSource(); - pipingInputObserver.Observable = calculationGroup; - pipingCalculationObserver.Observable = calculationGroup; - pipingCalculationGroupObserver.Observable = calculationGroup; - } - else - { - dataGridViewControl.SetDataSource(null); - pipingInputObserver.Observable = null; - pipingCalculationObserver.Observable = null; - pipingCalculationGroupObserver.Observable = null; - } - } + return pipingCalculations.Select(pc => new PipingScenarioRow(pc, FailureMechanism, assessmentSection)).ToList(); } - protected override void Dispose(bool disposing) + protected override void InitializeDataGridView() { - pipingFailureMechanismObserver.Dispose(); - pipingInputObserver.Dispose(); - pipingCalculationObserver.Dispose(); - pipingCalculationGroupObserver.Dispose(); + base.InitializeDataGridView(); - if (disposing) - { - components?.Dispose(); - } - - base.Dispose(disposing); - } - - private void InitializeDataGridView() - { - dataGridViewControl.AddCheckBoxColumn( - nameof(PipingScenarioRow.IsRelevant), - Resources.PipingCalculationsView_InitializeDataGridView_In_final_rating - ); - dataGridViewControl.AddTextBoxColumn( - nameof(PipingScenarioRow.Contribution), - Resources.PipingCalculationsView_InitializeDataGridView_Contribution - ); - dataGridViewControl.AddTextBoxColumn( - nameof(PipingScenarioRow.Name), - Resources.PipingCalculation_Name_DisplayName - ); - dataGridViewControl.AddTextBoxColumn( - nameof(PipingScenarioRow.FailureProbabilityPiping), - Resources.PipingScenarioView_PipingScenarioRow_FailureProbabilityPiping - ); - dataGridViewControl.AddTextBoxColumn( + DataGridViewControl.AddTextBoxColumn( nameof(PipingScenarioRow.FailureProbabilityUplift), Resources.PipingScenarioView_PipingScenarioRow_FailureProbabilityUplift ); - dataGridViewControl.AddTextBoxColumn( + DataGridViewControl.AddTextBoxColumn( nameof(PipingScenarioRow.FailureProbabilityHeave), Resources.PipingScenarioView_PipingScenarioRow_FailureProbabilityHeave ); - dataGridViewControl.AddTextBoxColumn( + DataGridViewControl.AddTextBoxColumn( nameof(PipingScenarioRow.FailureProbabilitySellmeijer), Resources.PipingScenarioView_PipingScenarioRow_FailureProbabilitySellmeijer ); } - - private void InitializeListBox() - { - listBox.DisplayMember = nameof(FailureMechanismSection.Name); - listBox.SelectedValueChanged += ListBoxOnSelectedValueChanged; - } - - private void UpdateDataGridViewDataSource() - { - var failureMechanismSection = listBox.SelectedItem as FailureMechanismSection; - if (failureMechanismSection == null || calculationGroup == null) - { - dataGridViewControl.SetDataSource(null); - return; - } - - IEnumerable lineSegments = Math2D.ConvertPointsToLineSegments(failureMechanismSection.Points); - IEnumerable pipingCalculations = calculationGroup - .GetCalculations() - .OfType() - .Where(pc => pc.IsSurfaceLineIntersectionWithReferenceLineInSection(lineSegments)); - - pipingScenarioRows = pipingCalculations.Select(pc => new PipingScenarioRow(pc, pipingFailureMechanism, assessmentSection)).ToList(); - dataGridViewControl.SetDataSource(pipingScenarioRows); - } - - private void UpdateScenarioRows() - { - pipingScenarioRows.ForEachElementDo(row => row.Update()); - dataGridViewControl.RefreshDataGridView(); - } - - #region Event handling - - private void ListBoxOnSelectedValueChanged(object sender, EventArgs e) - { - UpdateDataGridViewDataSource(); - } - - private void OnPipingFailureMechanismUpdate() - { - UpdateSectionsListBox(); - } - - private void UpdateSectionsListBox() - { - listBox.Items.Clear(); - - if (pipingFailureMechanism != null && pipingFailureMechanism.Sections.Any()) - { - listBox.Items.AddRange(pipingFailureMechanism.Sections.Cast().ToArray()); - listBox.SelectedItem = pipingFailureMechanism.Sections.First(); - } - } - - #endregion } } \ No newline at end of file Index: Riskeer/Piping/src/Riskeer.Piping.Plugin/PipingPlugin.cs =================================================================== diff -u -rebd97f729267dd5b9c807ea3e1ecd843117d43ed -r9f6481bc31f2992b06a7ce74c7f10ca09a31b625 --- Riskeer/Piping/src/Riskeer.Piping.Plugin/PipingPlugin.cs (.../PipingPlugin.cs) (revision ebd97f729267dd5b9c807ea3e1ecd843117d43ed) +++ Riskeer/Piping/src/Riskeer.Piping.Plugin/PipingPlugin.cs (.../PipingPlugin.cs) (revision 9f6481bc31f2992b06a7ce74c7f10ca09a31b625) @@ -262,8 +262,7 @@ GetViewName = (view, context) => RiskeerCommonFormsResources.Scenarios_DisplayName, Image = RiskeerCommonFormsResources.ScenariosIcon, CloseForData = ClosePipingScenariosViewForData, - CreateInstance = context => new PipingScenariosView(context.AssessmentSection), - AfterCreate = (view, context) => { view.PipingFailureMechanism = context.FailureMechanism; } + CreateInstance = context => new PipingScenariosView(context.WrappedData, context.FailureMechanism, context.AssessmentSection), }; yield return new ViewInfo, FailureMechanismSectionsProbabilityAssessmentView> @@ -469,7 +468,7 @@ .FirstOrDefault(); } - return pipingFailureMechanism != null && ReferenceEquals(view.Data, pipingFailureMechanism.CalculationsGroup); + return pipingFailureMechanism != null && ReferenceEquals(view.CalculationGroup, pipingFailureMechanism.CalculationsGroup); } private static bool ClosePipingInputViewForData(PipingInputView view, object o) Index: Riskeer/Piping/test/Riskeer.Piping.Forms.Test/Views/PipingScenarioRowTest.cs =================================================================== diff -u -r86594ccd7329d320872573a1d066fe18959d3cea -r9f6481bc31f2992b06a7ce74c7f10ca09a31b625 --- Riskeer/Piping/test/Riskeer.Piping.Forms.Test/Views/PipingScenarioRowTest.cs (.../PipingScenarioRowTest.cs) (revision 86594ccd7329d320872573a1d066fe18959d3cea) +++ Riskeer/Piping/test/Riskeer.Piping.Forms.Test/Views/PipingScenarioRowTest.cs (.../PipingScenarioRowTest.cs) (revision 9f6481bc31f2992b06a7ce74c7f10ca09a31b625) @@ -20,14 +20,13 @@ // All rights reserved. using System; -using Core.Common.Base; -using Core.Common.Base.Data; using Core.Common.TestUtil; using NUnit.Framework; using Rhino.Mocks; using Riskeer.Common.Data.AssessmentSection; using Riskeer.Common.Data.TestUtil; -using Riskeer.Common.Forms.Helpers; +using Riskeer.Common.Forms.TypeConverters; +using Riskeer.Common.Forms.Views; using Riskeer.Piping.Data; using Riskeer.Piping.Data.TestUtil; using Riskeer.Piping.Forms.Views; @@ -38,23 +37,6 @@ public class PipingScenarioRowTest { [Test] - public void Constructor_CalculationNull_ThrowsArgumentNullException() - { - // Setup - var mocks = new MockRepository(); - var assessmentSection = mocks.Stub(); - mocks.ReplayAll(); - - // Call - TestDelegate test = () => new PipingScenarioRow(null, new PipingFailureMechanism(), assessmentSection); - - // Assert - string paramName = Assert.Throws(test).ParamName; - Assert.AreEqual("calculation", paramName); - mocks.VerifyAll(); - } - - [Test] public void Constructor_FailureMechanismNull_ThrowsArgumentNullException() { // Setup @@ -65,11 +47,11 @@ var calculation = new PipingCalculationScenario(new GeneralPipingInput()); // Call - TestDelegate test = () => new PipingScenarioRow(calculation, null, assessmentSection); + void Call() => new PipingScenarioRow(calculation, null, assessmentSection); // Assert - string paramName = Assert.Throws(test).ParamName; - Assert.AreEqual("failureMechanism", paramName); + var exception = Assert.Throws(Call); + Assert.AreEqual("failureMechanism", exception.ParamName); mocks.VerifyAll(); } @@ -80,15 +62,15 @@ var calculation = new PipingCalculationScenario(new GeneralPipingInput()); // Call - TestDelegate call = () => new PipingScenarioRow(calculation, new PipingFailureMechanism(), null); + void Call() => new PipingScenarioRow(calculation, new PipingFailureMechanism(), null); // Assert - var exception = Assert.Throws(call); + var exception = Assert.Throws(Call); Assert.AreEqual("assessmentSection", exception.ParamName); } [Test] - public void Constructor_CalculationWithOutput_ExpectedValues() + public void Constructor_ExpectedValues() { // Setup var failureMechanism = new PipingFailureMechanism(); @@ -97,120 +79,69 @@ IAssessmentSection assessmentSection = AssessmentSectionTestHelper.CreateAssessmentSectionStub(failureMechanism, mocks); mocks.ReplayAll(); - const string name = "Test"; - var random = new Random(21); - bool isRelevant = random.NextBoolean(); - RoundedDouble contribution = random.NextRoundedDouble(); + var calculation = new PipingCalculationScenario(new GeneralPipingInput()); - var calculation = new PipingCalculationScenario(new GeneralPipingInput()) - { - Name = name, - IsRelevant = isRelevant, - Contribution = contribution, - Output = PipingOutputTestFactory.Create() - }; - // Call var row = new PipingScenarioRow(calculation, failureMechanism, assessmentSection); // Assert - DerivedPipingOutput expectedDerivedOutput = DerivedPipingOutputFactory.Create(calculation.Output, failureMechanism, assessmentSection); + Assert.IsInstanceOf>(row); + Assert.AreSame(calculation, row.CalculationScenario); - Assert.AreSame(calculation, row.Calculation); - Assert.AreEqual(name, row.Name); - Assert.AreEqual(isRelevant, row.IsRelevant); - Assert.AreEqual(2, row.Contribution.NumberOfDecimalPlaces); - Assert.AreEqual(contribution * 100, row.Contribution, row.Contribution.GetAccuracy()); - Assert.AreEqual(ProbabilityFormattingHelper.Format(expectedDerivedOutput.PipingProbability), row.FailureProbabilityPiping); - Assert.AreEqual(ProbabilityFormattingHelper.Format(expectedDerivedOutput.UpliftProbability), row.FailureProbabilityUplift); - Assert.AreEqual(ProbabilityFormattingHelper.Format(expectedDerivedOutput.HeaveProbability), row.FailureProbabilityHeave); - Assert.AreEqual(ProbabilityFormattingHelper.Format(expectedDerivedOutput.SellmeijerProbability), row.FailureProbabilitySellmeijer); - mocks.VerifyAll(); + TestHelper.AssertTypeConverter( + nameof(PipingScenarioRow.FailureProbabilityUplift)); + TestHelper.AssertTypeConverter( + nameof(PipingScenarioRow.FailureProbabilityHeave)); + TestHelper.AssertTypeConverter( + nameof(PipingScenarioRow.FailureProbabilitySellmeijer)); } [Test] - public void Constructor_CalculationWithoutOutput_ExpectedValues() + public void Constructor_CalculationWithOutput_ExpectedValues() { // Setup + var failureMechanism = new PipingFailureMechanism(); + var mocks = new MockRepository(); - var assessmentSection = mocks.Stub(); + IAssessmentSection assessmentSection = AssessmentSectionTestHelper.CreateAssessmentSectionStub(failureMechanism, mocks); mocks.ReplayAll(); - const string name = "Test"; - var random = new Random(21); - bool isRelevant = random.NextBoolean(); - RoundedDouble contribution = random.NextRoundedDouble(); - var calculation = new PipingCalculationScenario(new GeneralPipingInput()) { - Name = name, - IsRelevant = isRelevant, - Contribution = contribution + Output = PipingOutputTestFactory.Create() }; // Call - var row = new PipingScenarioRow(calculation, new PipingFailureMechanism(), assessmentSection); + var row = new PipingScenarioRow(calculation, failureMechanism, assessmentSection); // Assert - Assert.AreSame(calculation, row.Calculation); - Assert.AreEqual(name, row.Name); - Assert.AreEqual(isRelevant, row.IsRelevant); - Assert.AreEqual(2, row.Contribution.NumberOfDecimalPlaces); - Assert.AreEqual(contribution * 100, row.Contribution, row.Contribution.GetAccuracy()); - Assert.AreEqual("-", row.FailureProbabilityPiping); - Assert.AreEqual("-", row.FailureProbabilityUplift); - Assert.AreEqual("-", row.FailureProbabilityHeave); - Assert.AreEqual("-", row.FailureProbabilitySellmeijer); - mocks.VerifyAll(); - } + DerivedPipingOutput expectedDerivedOutput = DerivedPipingOutputFactory.Create(calculation.Output, failureMechanism, assessmentSection); - [Test] - [TestCase(false)] - [TestCase(true)] - public void IsRelevant_AlwaysOnChange_NotifyObserversAndCalculationPropertyChanged(bool newValue) - { - // Setup - var mocks = new MockRepository(); - var assessmentSection = mocks.Stub(); - var observer = mocks.StrictMock(); - observer.Expect(o => o.UpdateObserver()); - mocks.ReplayAll(); - - var calculation = new PipingCalculationScenario(new GeneralPipingInput()); - calculation.Attach(observer); - - var row = new PipingScenarioRow(calculation, new PipingFailureMechanism(), assessmentSection); - - // Call - row.IsRelevant = newValue; - - // Assert - Assert.AreEqual(newValue, calculation.IsRelevant); + Assert.AreEqual(expectedDerivedOutput.PipingProbability, row.FailureProbability); + Assert.AreEqual(expectedDerivedOutput.UpliftProbability, row.FailureProbabilityUplift); + Assert.AreEqual(expectedDerivedOutput.HeaveProbability, row.FailureProbabilityHeave); + Assert.AreEqual(expectedDerivedOutput.SellmeijerProbability, row.FailureProbabilitySellmeijer); mocks.VerifyAll(); } [Test] - public void Contribution_AlwaysOnChange_NotifyObserverAndCalculationPropertyChanged() + public void Constructor_CalculationWithoutOutput_ExpectedValues() { // Setup var mocks = new MockRepository(); var assessmentSection = mocks.Stub(); - var observer = mocks.StrictMock(); - observer.Expect(o => o.UpdateObserver()); mocks.ReplayAll(); - double newValue = new Random(21).NextDouble(0, 100); - var calculation = new PipingCalculationScenario(new GeneralPipingInput()); - calculation.Attach(observer); + // Call var row = new PipingScenarioRow(calculation, new PipingFailureMechanism(), assessmentSection); - // Call - row.Contribution = (RoundedDouble) newValue; - // Assert - Assert.AreEqual(newValue / 100, calculation.Contribution, calculation.Contribution.GetAccuracy()); + Assert.IsNaN(row.FailureProbability); + Assert.IsNaN(row.FailureProbabilityUplift); + Assert.IsNaN(row.FailureProbabilityHeave); + Assert.IsNaN(row.FailureProbabilitySellmeijer); mocks.VerifyAll(); } @@ -229,21 +160,21 @@ var row = new PipingScenarioRow(calculation, failureMechanism, assessmentSection); // Precondition - Assert.AreEqual("-", row.FailureProbabilityPiping); - Assert.AreEqual("-", row.FailureProbabilityUplift); - Assert.AreEqual("-", row.FailureProbabilityHeave); - Assert.AreEqual("-", row.FailureProbabilitySellmeijer); + Assert.IsNaN(row.FailureProbability); + Assert.IsNaN(row.FailureProbabilityUplift); + Assert.IsNaN(row.FailureProbabilityHeave); + Assert.IsNaN(row.FailureProbabilitySellmeijer); // When calculation.Output = PipingOutputTestFactory.Create(); row.Update(); // Then DerivedPipingOutput expectedDerivedOutput = DerivedPipingOutputFactory.Create(calculation.Output, failureMechanism, assessmentSection); - Assert.AreEqual(ProbabilityFormattingHelper.Format(expectedDerivedOutput.PipingProbability), row.FailureProbabilityPiping); - Assert.AreEqual(ProbabilityFormattingHelper.Format(expectedDerivedOutput.UpliftProbability), row.FailureProbabilityUplift); - Assert.AreEqual(ProbabilityFormattingHelper.Format(expectedDerivedOutput.HeaveProbability), row.FailureProbabilityHeave); - Assert.AreEqual(ProbabilityFormattingHelper.Format(expectedDerivedOutput.SellmeijerProbability), row.FailureProbabilitySellmeijer); + Assert.AreEqual(expectedDerivedOutput.PipingProbability, row.FailureProbability); + Assert.AreEqual(expectedDerivedOutput.UpliftProbability, row.FailureProbabilityUplift); + Assert.AreEqual(expectedDerivedOutput.HeaveProbability, row.FailureProbabilityHeave); + Assert.AreEqual(expectedDerivedOutput.SellmeijerProbability, row.FailureProbabilitySellmeijer); mocks.VerifyAll(); } @@ -266,20 +197,20 @@ // Precondition DerivedPipingOutput expectedDerivedOutput = DerivedPipingOutputFactory.Create(calculation.Output, failureMechanism, assessmentSection); - Assert.AreEqual(ProbabilityFormattingHelper.Format(expectedDerivedOutput.PipingProbability), row.FailureProbabilityPiping); - Assert.AreEqual(ProbabilityFormattingHelper.Format(expectedDerivedOutput.UpliftProbability), row.FailureProbabilityUplift); - Assert.AreEqual(ProbabilityFormattingHelper.Format(expectedDerivedOutput.HeaveProbability), row.FailureProbabilityHeave); - Assert.AreEqual(ProbabilityFormattingHelper.Format(expectedDerivedOutput.SellmeijerProbability), row.FailureProbabilitySellmeijer); + Assert.AreEqual(expectedDerivedOutput.PipingProbability, row.FailureProbability); + Assert.AreEqual(expectedDerivedOutput.UpliftProbability, row.FailureProbabilityUplift); + Assert.AreEqual(expectedDerivedOutput.HeaveProbability, row.FailureProbabilityHeave); + Assert.AreEqual(expectedDerivedOutput.SellmeijerProbability, row.FailureProbabilitySellmeijer); // When calculation.Output = null; row.Update(); // Then - Assert.AreEqual("-", row.FailureProbabilityPiping); - Assert.AreEqual("-", row.FailureProbabilityUplift); - Assert.AreEqual("-", row.FailureProbabilityHeave); - Assert.AreEqual("-", row.FailureProbabilitySellmeijer); + Assert.IsNaN(row.FailureProbability); + Assert.IsNaN(row.FailureProbabilityUplift); + Assert.IsNaN(row.FailureProbabilityHeave); + Assert.IsNaN(row.FailureProbabilitySellmeijer); mocks.VerifyAll(); } @@ -302,10 +233,10 @@ // Precondition DerivedPipingOutput expectedDerivedOutput = DerivedPipingOutputFactory.Create(calculation.Output, failureMechanism, assessmentSection); - Assert.AreEqual(ProbabilityFormattingHelper.Format(expectedDerivedOutput.PipingProbability), row.FailureProbabilityPiping); - Assert.AreEqual(ProbabilityFormattingHelper.Format(expectedDerivedOutput.UpliftProbability), row.FailureProbabilityUplift); - Assert.AreEqual(ProbabilityFormattingHelper.Format(expectedDerivedOutput.HeaveProbability), row.FailureProbabilityHeave); - Assert.AreEqual(ProbabilityFormattingHelper.Format(expectedDerivedOutput.SellmeijerProbability), row.FailureProbabilitySellmeijer); + Assert.AreEqual(expectedDerivedOutput.PipingProbability, row.FailureProbability); + Assert.AreEqual(expectedDerivedOutput.UpliftProbability, row.FailureProbabilityUplift); + Assert.AreEqual(expectedDerivedOutput.HeaveProbability, row.FailureProbabilityHeave); + Assert.AreEqual(expectedDerivedOutput.SellmeijerProbability, row.FailureProbabilitySellmeijer); var random = new Random(11); @@ -315,10 +246,10 @@ // Then DerivedPipingOutput newExpectedDerivedOutput = DerivedPipingOutputFactory.Create(calculation.Output, failureMechanism, assessmentSection); - Assert.AreEqual(ProbabilityFormattingHelper.Format(newExpectedDerivedOutput.PipingProbability), row.FailureProbabilityPiping); - Assert.AreEqual(ProbabilityFormattingHelper.Format(newExpectedDerivedOutput.UpliftProbability), row.FailureProbabilityUplift); - Assert.AreEqual(ProbabilityFormattingHelper.Format(newExpectedDerivedOutput.HeaveProbability), row.FailureProbabilityHeave); - Assert.AreEqual(ProbabilityFormattingHelper.Format(newExpectedDerivedOutput.SellmeijerProbability), row.FailureProbabilitySellmeijer); + Assert.AreEqual(newExpectedDerivedOutput.PipingProbability, row.FailureProbability); + Assert.AreEqual(newExpectedDerivedOutput.UpliftProbability, row.FailureProbabilityUplift); + Assert.AreEqual(newExpectedDerivedOutput.HeaveProbability, row.FailureProbabilityHeave); + Assert.AreEqual(newExpectedDerivedOutput.SellmeijerProbability, row.FailureProbabilitySellmeijer); mocks.VerifyAll(); } } Index: Riskeer/Piping/test/Riskeer.Piping.Forms.Test/Views/PipingScenariosViewTest.cs =================================================================== diff -u -r56d072b8342f3e54ba89124ab918bd1529e257a3 -r9f6481bc31f2992b06a7ce74c7f10ca09a31b625 --- Riskeer/Piping/test/Riskeer.Piping.Forms.Test/Views/PipingScenariosViewTest.cs (.../PipingScenariosViewTest.cs) (revision 56d072b8342f3e54ba89124ab918bd1529e257a3) +++ Riskeer/Piping/test/Riskeer.Piping.Forms.Test/Views/PipingScenariosViewTest.cs (.../PipingScenariosViewTest.cs) (revision 9f6481bc31f2992b06a7ce74c7f10ca09a31b625) @@ -21,12 +21,9 @@ using System; using System.Globalization; -using System.Linq; using System.Windows.Forms; -using Core.Common.Base; using Core.Common.Base.Data; using Core.Common.Base.Geometry; -using Core.Common.Controls.Views; using NUnit.Extensions.Forms; using NUnit.Framework; using Rhino.Mocks; @@ -35,6 +32,7 @@ using Riskeer.Common.Data.FailureMechanism; using Riskeer.Common.Data.TestUtil; using Riskeer.Common.Forms.Helpers; +using Riskeer.Common.Forms.Views; using Riskeer.Piping.Data; using Riskeer.Piping.Data.TestUtil; using Riskeer.Piping.Forms.Views; @@ -43,7 +41,7 @@ namespace Riskeer.Piping.Forms.Test.Views { [TestFixture] - public class PipingScenariosViewTest : NUnitFormTest + public class PipingScenariosViewTest { private const int isRelevantColumnIndex = 0; private const int contributionColumnIndex = 1; @@ -54,14 +52,26 @@ private const int failureProbabilitySellmeijerColumnIndex = 6; private Form testForm; + [SetUp] + public void Setup() + { + testForm = new Form(); + } + + [TearDown] + public void TearDown() + { + testForm.Dispose(); + } + [Test] public void Constructor_AssessmentSectionNull_ThrowsArgumentNullException() { // Call - TestDelegate call = () => new PipingScenariosView(null); + void Call() => new PipingScenariosView(new CalculationGroup(), new PipingFailureMechanism(), null); // Assert - var exception = Assert.Throws(call); + var exception = Assert.Throws(Call); Assert.AreEqual("assessmentSection", exception.ParamName); } @@ -73,14 +83,14 @@ var assessmentSection = mocks.Stub(); mocks.ReplayAll(); + var calculationGroup = new CalculationGroup(); + // Call - using (var pipingScenarioView = new PipingScenariosView(assessmentSection)) + using (var pipingScenarioView = new PipingScenariosView(calculationGroup, new PipingFailureMechanism(), assessmentSection)) { // Assert - Assert.IsInstanceOf(pipingScenarioView); - Assert.IsInstanceOf(pipingScenarioView); - Assert.IsNull(pipingScenarioView.Data); - Assert.IsNull(pipingScenarioView.PipingFailureMechanism); + Assert.IsInstanceOf>(pipingScenarioView); + Assert.AreSame(calculationGroup, pipingScenarioView.Data); } mocks.VerifyAll(); @@ -89,154 +99,22 @@ [Test] public void Constructor_DataGridViewCorrectlyInitialized() { - // Setup & Call - ShowPipingScenarioView(); - - var dataGridView = (DataGridView) new ControlTester("dataGridView").TheObject; - + // Call + ShowPipingScenarioView(new CalculationGroup(), new PipingFailureMechanism()); + // Assert - Assert.IsFalse(dataGridView.AutoGenerateColumns); + var dataGridView = (DataGridView) new ControlTester("dataGridView").TheObject; Assert.AreEqual(7, dataGridView.ColumnCount); - - foreach (DataGridViewComboBoxColumn column in dataGridView.Columns.OfType()) - { - Assert.AreEqual("This", column.ValueMember); - Assert.AreEqual("DisplayName", column.DisplayMember); - } + 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[failureProbabilityPipingColumnIndex].HeaderText); + Assert.AreEqual("Kans op\r\nopbarsten\r\n[1/jaar]", dataGridView.Columns[failureProbabilityUpliftColumnIndex].HeaderText); + Assert.AreEqual("Kans op\r\nheave\r\n[1/jaar]", dataGridView.Columns[failureProbabilityHeaveColumnIndex].HeaderText); + Assert.AreEqual("Kans op\r\nterugschrijdende erosie\r\n[1/jaar]", dataGridView.Columns[failureProbabilitySellmeijerColumnIndex].HeaderText); } [Test] - public void Constructor_DataGridViewControlColumnHeadersCorrectlyInitialized_() - { - // Call - using (ShowPipingScenarioView()) - { - // Assert - var dataGridView = (DataGridView) new ControlTester("dataGridView").TheObject; - Assert.AreEqual(7, 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[failureProbabilityPipingColumnIndex].HeaderText); - Assert.AreEqual("Kans op\r\nopbarsten\r\n[1/jaar]", dataGridView.Columns[failureProbabilityUpliftColumnIndex].HeaderText); - Assert.AreEqual("Kans op\r\nheave\r\n[1/jaar]", dataGridView.Columns[failureProbabilityHeaveColumnIndex].HeaderText); - Assert.AreEqual("Kans op\r\nterugschrijdende erosie\r\n[1/jaar]", dataGridView.Columns[failureProbabilitySellmeijerColumnIndex].HeaderText); - } - } - - [Test] - public void Constructor_ListBoxCorrectlyInitialized() - { - // Setup & Call - ShowPipingScenarioView(); - - var listBox = (ListBox) new ControlTester("listBox").TheObject; - - // Assert - Assert.AreEqual(0, listBox.Items.Count); - } - - [Test] - public void Data_SetToNull_DoesNotThrow() - { - // Setup - PipingScenariosView pipingScenarioView = ShowPipingScenarioView(); - - // Call - var testDelegate = new TestDelegate(() => pipingScenarioView.Data = null); - - // Assert - Assert.DoesNotThrow(testDelegate); - } - - [Test] - public void PipingFailureMechanism_PipingFailureMechanismWithSections_SectionsListBoxCorrectlyInitialized() - { - // Setup - var failureMechanism = new PipingFailureMechanism(); - var failureMechanismSection1 = new FailureMechanismSection("Section 1", new[] - { - new Point2D(0.0, 0.0), - new Point2D(5.0, 0.0) - }); - var failureMechanismSection2 = new FailureMechanismSection("Section 2", new[] - { - new Point2D(5.0, 0.0), - new Point2D(10.0, 0.0) - }); - var failureMechanismSection3 = new FailureMechanismSection("Section 3", new[] - { - new Point2D(10.0, 0.0), - new Point2D(15.0, 0.0) - }); - - FailureMechanismTestHelper.SetSections(failureMechanism, new[] - { - failureMechanismSection1, - failureMechanismSection2, - failureMechanismSection3 - }); - - PipingScenariosView pipingScenarioView = ShowPipingScenarioView(); - - // Call - pipingScenarioView.PipingFailureMechanism = failureMechanism; - - // Assert - var listBox = (ListBox) new ControlTester("listBox").TheObject; - Assert.AreEqual(3, listBox.Items.Count); - Assert.AreSame(failureMechanismSection1, listBox.Items[0]); - Assert.AreSame(failureMechanismSection2, listBox.Items[1]); - Assert.AreSame(failureMechanismSection3, listBox.Items[2]); - } - - [Test] - public void GivenPipingScenariosViewWithPipingFailureMechanism_WhenSectionsAddedAndPipingFailureMechanismNotified_ThenSectionsListBoxCorrectlyUpdated() - { - // Given - var failureMechanism = new PipingFailureMechanism(); - var failureMechanismSection1 = new FailureMechanismSection("Section 1", new[] - { - new Point2D(0.0, 0.0), - new Point2D(5.0, 0.0) - }); - var failureMechanismSection2 = new FailureMechanismSection("Section 2", new[] - { - new Point2D(5.0, 0.0), - new Point2D(10.0, 0.0) - }); - var failureMechanismSection3 = new FailureMechanismSection("Section 3", new[] - { - new Point2D(10.0, 0.0), - new Point2D(15.0, 0.0) - }); - - PipingScenariosView pipingScenarioView = ShowPipingScenarioView(); - pipingScenarioView.PipingFailureMechanism = failureMechanism; - - var listBox = (ListBox) new ControlTester("listBox").TheObject; - - // Precondition - Assert.AreEqual(0, listBox.Items.Count); - - FailureMechanismTestHelper.SetSections(failureMechanism, new[] - { - failureMechanismSection1, - failureMechanismSection2, - failureMechanismSection3 - }); - - // When - failureMechanism.NotifyObservers(); - - // Then - Assert.AreEqual(3, listBox.Items.Count); - Assert.AreSame(failureMechanismSection1, listBox.Items[0]); - Assert.AreSame(failureMechanismSection2, listBox.Items[1]); - Assert.AreSame(failureMechanismSection3, listBox.Items[2]); - } - - [Test] public void PipingScenarioView_CalculationsWithAllDataSet_DataGridViewCorrectlyInitialized() { // Setup & Call @@ -269,150 +147,8 @@ Assert.AreEqual(ProbabilityFormattingHelper.Format(0.027777778), cells[failureProbabilitySellmeijerColumnIndex].FormattedValue); } - [Test] - public void PipingScenarioView_ContributionValueInvalid_ShowsErrorTooltip() + private void ShowFullyConfiguredPipingScenarioView() { - // Setup - ShowFullyConfiguredPipingScenarioView(); - - var dataGridView = (DataGridView) new ControlTester("dataGridView").TheObject; - - // Call - dataGridView.Rows[0].Cells[contributionColumnIndex].Value = "test"; - - // Assert - Assert.AreEqual("De tekst moet een getal zijn.", dataGridView.Rows[0].ErrorText); - } - - [Test] - [TestCase(1)] - [TestCase(1e-6)] - [TestCase(1e+6)] - [TestCase(14.3)] - public void FailureMechanismResultView_EditValueValid_DoNotShowErrorToolTipAndEditValue(double newValue) - { - // Setup - ShowFullyConfiguredPipingScenarioView(); - - var dataGridView = (DataGridView) new ControlTester("dataGridView").TheObject; - - // Call - dataGridView.Rows[0].Cells[contributionColumnIndex].Value = (RoundedDouble) newValue; - - // Assert - Assert.IsEmpty(dataGridView.Rows[0].ErrorText); - } - - [Test] - [TestCase(isRelevantColumnIndex, true)] - [TestCase(contributionColumnIndex, 30.0)] - public void PipingScenarioView_EditingPropertyViaDataGridView_ObserversCorrectlyNotified(int cellIndex, object newValue) - { - // Setup - var mocks = new MockRepository(); - var pipingCalculationObserver = mocks.StrictMock(); - var pipingCalculationInputObserver = mocks.StrictMock(); - pipingCalculationObserver.Expect(o => o.UpdateObserver()); - - mocks.ReplayAll(); - - PipingScenariosView pipingCalculationView = ShowFullyConfiguredPipingScenarioView(); - - var data = (CalculationGroup) pipingCalculationView.Data; - var pipingCalculation = (PipingCalculationScenario) data.Children.First(); - - pipingCalculation.Attach(pipingCalculationObserver); - pipingCalculation.InputParameters.Attach(pipingCalculationInputObserver); - - var dataGridView = (DataGridView) new ControlTester("dataGridView").TheObject; - - // Call - dataGridView.Rows[0].Cells[cellIndex].Value = newValue is double ? (RoundedDouble) (double) newValue : newValue; - - // Assert - mocks.VerifyAll(); - } - - [Test] - public void GivenPipingScenarioView_WhenFailureMechanismNotifiesObserver_ThenViewUpdated() - { - // Given - using (PipingScenariosView view = ShowFullyConfiguredPipingScenarioView()) - { - var dataGridView = (DataGridView) new ControlTester("dataGridView").TheObject; - - PipingScenarioRow[] sectionResultRows = dataGridView.Rows.Cast() - .Select(r => r.DataBoundItem) - .Cast() - .ToArray(); - - // When - view.PipingFailureMechanism.PipingProbabilityAssessmentInput.A = 0.01; - view.PipingFailureMechanism.NotifyObservers(); - - // Then - PipingScenarioRow[] updatedRows = dataGridView.Rows.Cast() - .Select(r => r.DataBoundItem) - .Cast() - .ToArray(); - - CollectionAssert.AreNotEquivalent(sectionResultRows, updatedRows); - } - } - - [Test] - public void GivenPipingScenarioView_WhenCalculationNotifiesObserver_ThenViewUpdated() - { - // Given - using (ShowFullyConfiguredPipingScenarioView()) - { - var dataGridView = (DataGridView) new ControlTester("dataGridView").TheObject; - - var refreshed = 0; - dataGridView.Invalidated += (sender, args) => refreshed++; - - DataGridViewRowCollection rows = dataGridView.Rows; - DataGridViewRow calculationRow = rows[1]; - PipingCalculationScenario calculation = ((PipingScenarioRow) calculationRow.DataBoundItem).Calculation; - - // Precondition - DataGridViewCellCollection cells = calculationRow.Cells; - Assert.AreEqual(7, cells.Count); - Assert.AreEqual(ProbabilityFormattingHelper.Format(2.425418e-4), cells[failureProbabilityPipingColumnIndex].FormattedValue); - Assert.AreEqual(ProbabilityFormattingHelper.Format(2.425418e-4), cells[failureProbabilityUpliftColumnIndex].FormattedValue); - Assert.AreEqual(ProbabilityFormattingHelper.Format(0.038461838), cells[failureProbabilityHeaveColumnIndex].FormattedValue); - Assert.AreEqual(ProbabilityFormattingHelper.Format(0.027777778), cells[failureProbabilitySellmeijerColumnIndex].FormattedValue); - - // When - calculation.ClearOutput(); - calculation.NotifyObservers(); - - // Then - Assert.AreEqual(1, refreshed); - - Assert.AreEqual("-", cells[failureProbabilityPipingColumnIndex].FormattedValue); - Assert.AreEqual("-".ToString(CultureInfo.CurrentCulture), cells[failureProbabilityUpliftColumnIndex].FormattedValue); - Assert.AreEqual("-".ToString(CultureInfo.CurrentCulture), cells[failureProbabilityHeaveColumnIndex].FormattedValue); - Assert.AreEqual("-".ToString(CultureInfo.CurrentCulture), cells[failureProbabilitySellmeijerColumnIndex].FormattedValue); - } - } - - public override void Setup() - { - base.Setup(); - - testForm = new Form(); - } - - public override void TearDown() - { - base.TearDown(); - - testForm.Dispose(); - } - - private PipingScenariosView ShowFullyConfiguredPipingScenarioView() - { var surfaceLine1 = new PipingSurfaceLine("Surface line 1") { ReferenceLineIntersectionWorldPoint = new Point2D(0.0, 0.0) @@ -453,9 +189,7 @@ }) }); - PipingScenariosView pipingScenarioView = ShowPipingScenarioView(); - - pipingScenarioView.Data = new CalculationGroup + var calculationGroup = new CalculationGroup { Children = { @@ -499,19 +233,15 @@ } }; - pipingScenarioView.PipingFailureMechanism = failureMechanism; - - return pipingScenarioView; + ShowPipingScenarioView(calculationGroup, failureMechanism); } - private PipingScenariosView ShowPipingScenarioView() + private void ShowPipingScenarioView(CalculationGroup calculationGroup, PipingFailureMechanism failureMechanism) { - var pipingScenarioView = new PipingScenariosView(new AssessmentSectionStub()); + var pipingScenarioView = new PipingScenariosView(calculationGroup, failureMechanism, new AssessmentSectionStub()); testForm.Controls.Add(pipingScenarioView); testForm.Show(); - - return pipingScenarioView; } } } \ No newline at end of file Index: Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/ViewInfos/PipingScenariosViewInfoTest.cs =================================================================== diff -u -r86594ccd7329d320872573a1d066fe18959d3cea -r9f6481bc31f2992b06a7ce74c7f10ca09a31b625 --- Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/ViewInfos/PipingScenariosViewInfoTest.cs (.../PipingScenariosViewInfoTest.cs) (revision 86594ccd7329d320872573a1d066fe18959d3cea) +++ Riskeer/Piping/test/Riskeer.Piping.Plugin.Test/ViewInfos/PipingScenariosViewInfoTest.cs (.../PipingScenariosViewInfoTest.cs) (revision 9f6481bc31f2992b06a7ce74c7f10ca09a31b625) @@ -98,18 +98,12 @@ public void CloseForData_AssessmentSectionRemovedWithoutPipingFailureMechanism_ReturnsFalse() { // Setup - var pipingCalculationsGroup = new CalculationGroup(); - var assessmentSection = mocks.Stub(); assessmentSection.Stub(asm => asm.GetFailureMechanisms()).Return(new IFailureMechanism[0]); - mocks.ReplayAll(); - using (var view = new PipingScenariosView(assessmentSection) + using (var view = new PipingScenariosView(new CalculationGroup(), new PipingFailureMechanism(), assessmentSection)) { - Data = pipingCalculationsGroup - }) - { // Call bool closeForData = info.CloseForData(view, assessmentSection); @@ -124,22 +118,19 @@ public void CloseForData_ViewNotCorrespondingToRemovedAssessmentSection_ReturnsFalse() { // Setup - var pipingFailureMechanism = new PipingFailureMechanism(); - var pipingCalculationsGroup = new CalculationGroup(); + var failureMechanism = new PipingFailureMechanism(); + var calculationGroup = new CalculationGroup(); var assessmentSection = mocks.Stub(); assessmentSection.Stub(asm => asm.GetFailureMechanisms()).Return(new[] { - pipingFailureMechanism + failureMechanism }); mocks.ReplayAll(); - using (var view = new PipingScenariosView(assessmentSection) + using (var view = new PipingScenariosView(calculationGroup, failureMechanism, assessmentSection)) { - Data = pipingCalculationsGroup - }) - { // Call bool closeForData = info.CloseForData(view, assessmentSection); @@ -154,21 +145,17 @@ public void CloseForData_ViewCorrespondingToRemovedAssessmentSection_ReturnsTrue() { // Setup - var pipingFailureMechanism = new PipingFailureMechanism(); + var failureMechanism = new PipingFailureMechanism(); var assessmentSection = mocks.Stub(); assessmentSection.Stub(asm => asm.GetFailureMechanisms()).Return(new[] { - pipingFailureMechanism + failureMechanism }); - mocks.ReplayAll(); - using (var view = new PipingScenariosView(assessmentSection) + using (var view = new PipingScenariosView(failureMechanism.CalculationsGroup, failureMechanism, assessmentSection)) { - Data = pipingFailureMechanism.CalculationsGroup - }) - { // Call bool closeForData = info.CloseForData(view, assessmentSection); @@ -186,11 +173,8 @@ var assessmentSection = mocks.Stub(); mocks.ReplayAll(); - using (var view = new PipingScenariosView(assessmentSection) + using (var view = new PipingScenariosView(new CalculationGroup(), new PipingFailureMechanism(), assessmentSection)) { - Data = new CalculationGroup() - }) - { var failureMechanism = new PipingFailureMechanism(); // Call @@ -212,11 +196,8 @@ var failureMechanism = new PipingFailureMechanism(); - using (var view = new PipingScenariosView(assessmentSection) + using (var view = new PipingScenariosView(failureMechanism.CalculationsGroup, failureMechanism, assessmentSection)) { - Data = failureMechanism.CalculationsGroup - }) - { // Call bool closeForData = info.CloseForData(view, failureMechanism); @@ -237,11 +218,8 @@ var failureMechanism = new PipingFailureMechanism(); var failureMechanismContext = new PipingFailureMechanismContext(new PipingFailureMechanism(), assessmentSection); - using (var view = new PipingScenariosView(assessmentSection) + using (var view = new PipingScenariosView(failureMechanism.CalculationsGroup, failureMechanism, assessmentSection)) { - Data = failureMechanism.CalculationsGroup - }) - { // Call bool closeForData = info.CloseForData(view, failureMechanismContext); @@ -262,11 +240,8 @@ var failureMechanism = new PipingFailureMechanism(); var failureMechanismContext = new PipingFailureMechanismContext(failureMechanism, assessmentSection); - using (var view = new PipingScenariosView(assessmentSection) + using (var view = new PipingScenariosView(failureMechanism.CalculationsGroup, failureMechanism, assessmentSection)) { - Data = failureMechanism.CalculationsGroup - }) - { // Call bool closeForData = info.CloseForData(view, failureMechanismContext); @@ -278,29 +253,6 @@ } [Test] - public void AfterCreate_Always_SetsSpecificPropertiesToView() - { - // Setup - var assessmentSection = mocks.Stub(); - mocks.ReplayAll(); - - var pipingFailureMechanism = new PipingFailureMechanism(); - var pipingCalculationsGroup = new CalculationGroup(); - var pipingScenariosContext = new PipingScenariosContext(pipingCalculationsGroup, pipingFailureMechanism, assessmentSection); - - using (var view = new PipingScenariosView(assessmentSection)) - { - // Call - info.AfterCreate(view, pipingScenariosContext); - - // Assert - Assert.AreSame(pipingFailureMechanism, view.PipingFailureMechanism); - } - - mocks.VerifyAll(); - } - - [Test] public void CreateInstance_WithContext_ReturnsView() { // Setup