Index: Ringtoets/ClosingStructures/src/Ringtoets.ClosingStructures.Forms/Views/ClosingStructuresFailureMechanismResultView.cs =================================================================== diff -u -r16559315c0a64fffd05827d249200c62e353231f -r322ce828729ae3abc8af382244727615520e9339 --- Ringtoets/ClosingStructures/src/Ringtoets.ClosingStructures.Forms/Views/ClosingStructuresFailureMechanismResultView.cs (.../ClosingStructuresFailureMechanismResultView.cs) (revision 16559315c0a64fffd05827d249200c62e353231f) +++ Ringtoets/ClosingStructures/src/Ringtoets.ClosingStructures.Forms/Views/ClosingStructuresFailureMechanismResultView.cs (.../ClosingStructuresFailureMechanismResultView.cs) (revision 322ce828729ae3abc8af382244727615520e9339) @@ -19,10 +19,12 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. +using System; using System.Linq; using System.Windows.Forms; using Core.Common.Base; using Ringtoets.ClosingStructures.Data; +using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.Calculation; using Ringtoets.Common.Data.FailureMechanism; using Ringtoets.Common.Data.Structures; @@ -38,15 +40,25 @@ public class ClosingStructuresFailureMechanismResultView : FailureMechanismResultView { private const int assessmentLayerTwoAIndex = 2; + private readonly IAssessmentSection assessmentSection; private readonly RecursiveObserver calculationInputObserver; private readonly RecursiveObserver calculationOutputObserver; private readonly RecursiveObserver calculationGroupObserver; /// /// Creates a new instance of . /// - public ClosingStructuresFailureMechanismResultView() + /// The assessment section the failure mechanism result belongs to. + /// Thrown when + /// is null. + public ClosingStructuresFailureMechanismResultView(IAssessmentSection assessmentSection) { + if (assessmentSection == null) + { + throw new ArgumentNullException(nameof(assessmentSection)); + } + + this.assessmentSection = assessmentSection; DataGridViewControl.CellFormatting += ShowAssessmentLayerErrors; DataGridViewControl.CellFormatting += OnCellFormatting; Index: Ringtoets/ClosingStructures/src/Ringtoets.ClosingStructures.Plugin/ClosingStructuresPlugin.cs =================================================================== diff -u -r512b95219f63a898d244925c2d3f7cea33560f6d -r322ce828729ae3abc8af382244727615520e9339 --- Ringtoets/ClosingStructures/src/Ringtoets.ClosingStructures.Plugin/ClosingStructuresPlugin.cs (.../ClosingStructuresPlugin.cs) (revision 512b95219f63a898d244925c2d3f7cea33560f6d) +++ Ringtoets/ClosingStructures/src/Ringtoets.ClosingStructures.Plugin/ClosingStructuresPlugin.cs (.../ClosingStructuresPlugin.cs) (revision 322ce828729ae3abc8af382244727615520e9339) @@ -112,7 +112,8 @@ Image = RingtoetsCommonFormsResources.FailureMechanismSectionResultIcon, CloseForData = CloseFailureMechanismResultViewForData, GetViewData = context => context.WrappedData, - AfterCreate = (view, context) => view.FailureMechanism = context.FailureMechanism + AfterCreate = (view, context) => view.FailureMechanism = context.FailureMechanism, + CreateInstance = context => new ClosingStructuresFailureMechanismResultView(context.AssessmentSection) }; yield return new ViewInfo Index: Ringtoets/ClosingStructures/test/Ringtoets.ClosingStructures.Forms.Test/Views/ClosingStructuresFailureMechanismResultViewTest.cs =================================================================== diff -u -r764b136687c9fa77c566e120f4ca7256c2ca2b93 -r322ce828729ae3abc8af382244727615520e9339 --- Ringtoets/ClosingStructures/test/Ringtoets.ClosingStructures.Forms.Test/Views/ClosingStructuresFailureMechanismResultViewTest.cs (.../ClosingStructuresFailureMechanismResultViewTest.cs) (revision 764b136687c9fa77c566e120f4ca7256c2ca2b93) +++ Ringtoets/ClosingStructures/test/Ringtoets.ClosingStructures.Forms.Test/Views/ClosingStructuresFailureMechanismResultViewTest.cs (.../ClosingStructuresFailureMechanismResultViewTest.cs) (revision 322ce828729ae3abc8af382244727615520e9339) @@ -30,8 +30,10 @@ using Core.Common.TestUtil; using NUnit.Extensions.Forms; using NUnit.Framework; +using Rhino.Mocks; using Ringtoets.ClosingStructures.Data; using Ringtoets.ClosingStructures.Forms.Views; +using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.FailureMechanism; using Ringtoets.Common.Data.Structures; using Ringtoets.Common.Data.TestUtil; @@ -62,18 +64,35 @@ } [Test] - public void DefaultConstructor_DefaultValues() + public void Constructor_ExpectedValues() { + // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + // Call - using (var view = new ClosingStructuresFailureMechanismResultView()) + using (var view = new ClosingStructuresFailureMechanismResultView(assessmentSection)) { // Assert Assert.IsInstanceOf>(view); Assert.IsNull(view.Data); } + mocks.VerifyAll(); } [Test] + public void Constructor_AssessmentSectionNull_ThrowsArgumentNullException() + { + // Call + TestDelegate call = () => new ClosingStructuresFailureMechanismResultView(null); + + // Assert + var exception = Assert.Throws(call); + Assert.AreEqual("assessmentSection", exception.ParamName); + } + + [Test] public void Data_DataAlreadySetNewDataSet_DataSetAndDataGridViewUpdated() { // Setup @@ -728,7 +747,7 @@ private ClosingStructuresFailureMechanismResultView ShowFailureMechanismResultsView() { - var failureMechanismResultView = new ClosingStructuresFailureMechanismResultView(); + var failureMechanismResultView = new ClosingStructuresFailureMechanismResultView(new ObservableTestAssessmentSectionStub()); testForm.Controls.Add(failureMechanismResultView); testForm.Show(); Index: Ringtoets/ClosingStructures/test/Ringtoets.ClosingStructures.Plugin.Test/ViewInfos/ClosingStructuresFailureMechanismResultViewInfoTest.cs =================================================================== diff -u -r512b95219f63a898d244925c2d3f7cea33560f6d -r322ce828729ae3abc8af382244727615520e9339 --- Ringtoets/ClosingStructures/test/Ringtoets.ClosingStructures.Plugin.Test/ViewInfos/ClosingStructuresFailureMechanismResultViewInfoTest.cs (.../ClosingStructuresFailureMechanismResultViewInfoTest.cs) (revision 512b95219f63a898d244925c2d3f7cea33560f6d) +++ Ringtoets/ClosingStructures/test/Ringtoets.ClosingStructures.Plugin.Test/ViewInfos/ClosingStructuresFailureMechanismResultViewInfoTest.cs (.../ClosingStructuresFailureMechanismResultViewInfoTest.cs) (revision 322ce828729ae3abc8af382244727615520e9339) @@ -19,10 +19,10 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. -using System; using System.Collections.Generic; using System.Drawing; using System.Linq; +using Core.Common.Controls.Views; using Core.Common.Gui.Plugin; using Core.Common.TestUtil; using NUnit.Framework; @@ -121,7 +121,7 @@ assessmentSection.Stub(asm => asm.GetFailureMechanisms()).Return(new IFailureMechanism[0]); mocks.ReplayAll(); - using (var view = new ClosingStructuresFailureMechanismResultView()) + using (var view = new ClosingStructuresFailureMechanismResultView(assessmentSection)) { var failureMechanism = new ClosingStructuresFailureMechanism(); view.Data = failureMechanism.SectionResults; @@ -132,6 +132,7 @@ // Assert Assert.IsFalse(closeForData); } + mocks.VerifyAll(); } @@ -140,79 +141,91 @@ { // Setup var assessmentSection = mocks.Stub(); - var failureMechanism = new ClosingStructuresFailureMechanism(); var otherFailureMechanism = mocks.Stub("N", "C"); - assessmentSection.Stub(asm => asm.GetFailureMechanisms()).Return(new[] { otherFailureMechanism }); - mocks.ReplayAll(); - using (var view = new ClosingStructuresFailureMechanismResultView()) - { - view.Data = failureMechanism.SectionResults; + var failureMechanism = new ClosingStructuresFailureMechanism(); + using (var view = new ClosingStructuresFailureMechanismResultView(assessmentSection) + { + Data = failureMechanism.SectionResults + }) + { // Call bool closeForData = info.CloseForData(view, assessmentSection); // Assert Assert.IsFalse(closeForData); } + mocks.VerifyAll(); } [Test] public void CloseForData_ViewCorrespondingToRemovedAssessmentSection_ReturnsTrue() { // Setup - var assessmentSection = mocks.Stub(); var failureMechanism = new ClosingStructuresFailureMechanism(); + var assessmentSection = mocks.Stub(); assessmentSection.Stub(asm => asm.GetFailureMechanisms()).Return(new IFailureMechanism[] { new TestFailureMechanism(), failureMechanism }); - mocks.ReplayAll(); - using (var view = new ClosingStructuresFailureMechanismResultView()) + using (var view = new ClosingStructuresFailureMechanismResultView(assessmentSection) { - view.Data = failureMechanism.SectionResults; - + Data = failureMechanism.SectionResults + }) + { // Call bool closeForData = info.CloseForData(view, assessmentSection); // Assert Assert.IsTrue(closeForData); } + mocks.VerifyAll(); } [Test] public void CloseForData_ViewCorrespondingToRemovedFailureMechanism_ReturnsTrue() { // Setup - using (var view = new ClosingStructuresFailureMechanismResultView()) - { - var failureMechanism = new ClosingStructuresFailureMechanism(); - view.Data = failureMechanism.SectionResults; + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + var failureMechanism = new ClosingStructuresFailureMechanism(); + + using (var view = new ClosingStructuresFailureMechanismResultView(assessmentSection) + { + Data = failureMechanism.SectionResults + }) + { // Call bool closeForData = info.CloseForData(view, failureMechanism); // Assert Assert.IsTrue(closeForData); } + + mocks.VerifyAll(); } [Test] public void CloseForData_ViewNotCorrespondingToRemovedFailureMechanismContext_ReturnsFalse() { // Setup - using (var view = new ClosingStructuresFailureMechanismResultView()) + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + using (var view = new ClosingStructuresFailureMechanismResultView(assessmentSection)) { var failureMechanism = new ClosingStructuresFailureMechanism(); view.Data = failureMechanism.SectionResults; @@ -223,6 +236,8 @@ // Assert Assert.IsFalse(closeForData); } + + mocks.VerifyAll(); } [Test] @@ -235,7 +250,7 @@ var failureMechanism = new ClosingStructuresFailureMechanism(); var failureMechanismContext = new ClosingStructuresFailureMechanismContext(failureMechanism, assessmentSection); - using (var view = new ClosingStructuresFailureMechanismResultView()) + using (var view = new ClosingStructuresFailureMechanismResultView(assessmentSection)) { view.Data = failureMechanism.SectionResults; @@ -257,7 +272,7 @@ mocks.ReplayAll(); var failureMechanism = new ClosingStructuresFailureMechanism(); - using (var view = new ClosingStructuresFailureMechanismResultView()) + using (var view = new ClosingStructuresFailureMechanismResultView(assessmentSection)) { view.Data = failureMechanism.SectionResults; @@ -295,17 +310,23 @@ mocks.VerifyAll(); } - private class TestFailureMechanism : FailureMechanismBase + [Test] + public void CreateInstance_Always_ReturnsView() { - public TestFailureMechanism() : base("Name", "FailureMechanismCode") {} + // Setup + var failureMechanism = new ClosingStructuresFailureMechanism(); + IAssessmentSection assessmentSection = AssessmentSectionHelper.CreateAssessmentSectionStub(failureMechanism, mocks); - public override IEnumerable Calculations - { - get - { - return null; - } - } + var context = new ProbabilityFailureMechanismSectionResultContext(failureMechanism.SectionResults, + failureMechanism, + assessmentSection); + + // Call + IView view = info.CreateInstance(context); + + // Assert + Assert.IsInstanceOf(view); + mocks.VerifyAll(); } } } \ No newline at end of file