Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Data/MacroStabilityInwardsCalculationScenario.cs =================================================================== diff -u -rd619624819b7200ac55b357b0a0c54d198fc20e4 -rfb3c4216478c0f072cf2f1a94053e81756ced5c7 --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Data/MacroStabilityInwardsCalculationScenario.cs (.../MacroStabilityInwardsCalculationScenario.cs) (revision d619624819b7200ac55b357b0a0c54d198fc20e4) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Data/MacroStabilityInwardsCalculationScenario.cs (.../MacroStabilityInwardsCalculationScenario.cs) (revision fb3c4216478c0f072cf2f1a94053e81756ced5c7) @@ -55,30 +55,12 @@ } } - public double Probability - { - get - { - if (Status != CalculationScenarioStatus.Done) - { - throw new InvalidOperationException("The probability can only be accessed when the status is done."); - } - - return SemiProbabilisticOutput.MacroStabilityInwardsProbability; - } - } - public CalculationScenarioStatus Status { get { - if (Output == null) - { - return CalculationScenarioStatus.NotCalculated; - } - - return SemiProbabilisticOutput == null || double.IsNaN(SemiProbabilisticOutput.MacroStabilityInwardsProbability) - ? CalculationScenarioStatus.Failed + return Output == null + ? CalculationScenarioStatus.NotCalculated : CalculationScenarioStatus.Done; } } Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Data/MacroStabilityInwardsFailureMechanismSection2aAssessmentResultExtensions.cs =================================================================== diff -u -rffba5900acc192187346a9ad73acea5e8b9d0bf5 -rfb3c4216478c0f072cf2f1a94053e81756ced5c7 --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Data/MacroStabilityInwardsFailureMechanismSection2aAssessmentResultExtensions.cs (.../MacroStabilityInwardsFailureMechanismSection2aAssessmentResultExtensions.cs) (revision ffba5900acc192187346a9ad73acea5e8b9d0bf5) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Data/MacroStabilityInwardsFailureMechanismSection2aAssessmentResultExtensions.cs (.../MacroStabilityInwardsFailureMechanismSection2aAssessmentResultExtensions.cs) (revision fb3c4216478c0f072cf2f1a94053e81756ced5c7) @@ -25,6 +25,7 @@ using System.Linq; using Core.Common.Base.Data; using Core.Common.Base.Geometry; +using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.Calculation; namespace Ringtoets.MacroStabilityInwards.Data @@ -37,19 +38,59 @@ /// /// Gets the value for the detailed assessment of safety per failure mechanism section as a probability. /// - /// The result to get the result for. + /// The section result to get the assessment layer 2A for. /// All calculations in the failure mechanism. - public static double GetAssessmentLayerTwoA(this MacroStabilityInwardsFailureMechanismSectionResult macroStabilityInwardsFailureMechanismSectionResult, - IEnumerable calculations) + /// The failure mechanism the calculations belong to. + /// The assessment section the calculations belong to. + /// The calculated assessment layer 2A; or when there are no + /// performed calculations. + /// Thrown when any parameter is null. + public static double GetAssessmentLayerTwoA(this MacroStabilityInwardsFailureMechanismSectionResult sectionResult, + IEnumerable calculations, + MacroStabilityInwardsFailureMechanism failureMechanism, + IAssessmentSection assessmentSection) { - List calculationScenarios = macroStabilityInwardsFailureMechanismSectionResult + if (sectionResult == null) + { + throw new ArgumentNullException(nameof(sectionResult)); + } + + if (calculations == null) + { + throw new ArgumentNullException(nameof(calculations)); + } + + if (failureMechanism == null) + { + throw new ArgumentNullException(nameof(failureMechanism)); + } + + if (assessmentSection == null) + { + throw new ArgumentNullException(nameof(assessmentSection)); + } + + List calculationScenarios = sectionResult .GetCalculationScenarios(calculations) .Where(cs => cs.Status == CalculationScenarioStatus.Done) .ToList(); - return calculationScenarios.Any() - ? calculationScenarios.Sum(scenario => scenario.Probability * scenario.Contribution.Value) - : double.NaN; + if (calculationScenarios.Any()) + { + double totalAssessmentLayerTwoA = 0; + foreach (MacroStabilityInwardsCalculationScenario scenario in calculationScenarios) + { + var derivedOutput = DerivedMacroStabilityInwardsOutputFactory.Create(scenario.Output, + failureMechanism.MacroStabilityInwardsProbabilityAssessmentInput, + assessmentSection.FailureMechanismContribution.Norm, + failureMechanism.Contribution); + + totalAssessmentLayerTwoA += derivedOutput.MacroStabilityInwardsProbability * (double) scenario.Contribution; + } + return totalAssessmentLayerTwoA; + } + + return double.NaN; } /// Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Forms/Views/MacroStabilityInwardsFailureMechanismResultView.cs =================================================================== diff -u -r42b0a40e019f6b36f83495fc46b13bac5971292f -rfb3c4216478c0f072cf2f1a94053e81756ced5c7 --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Forms/Views/MacroStabilityInwardsFailureMechanismResultView.cs (.../MacroStabilityInwardsFailureMechanismResultView.cs) (revision 42b0a40e019f6b36f83495fc46b13bac5971292f) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Forms/Views/MacroStabilityInwardsFailureMechanismResultView.cs (.../MacroStabilityInwardsFailureMechanismResultView.cs) (revision fb3c4216478c0f072cf2f1a94053e81756ced5c7) @@ -23,6 +23,7 @@ using System.Linq; using System.Windows.Forms; using Core.Common.Base; +using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.Calculation; using Ringtoets.Common.Data.FailureMechanism; using Ringtoets.Common.Forms.Views; @@ -41,12 +42,23 @@ private readonly RecursiveObserver calculationInputObserver; private readonly RecursiveObserver calculationOutputObserver; private readonly RecursiveObserver calculationGroupObserver; + private readonly IAssessmentSection assessmentSection; /// /// Creates a new instance of . /// - public MacroStabilityInwardsFailureMechanismResultView() + /// The assessment section that the failure mechanism belongs to. + /// Thrown when + /// is null. + public MacroStabilityInwardsFailureMechanismResultView(IAssessmentSection assessmentSection) { + if (assessmentSection == null) + { + throw new ArgumentNullException(nameof(assessmentSection)); + } + + this.assessmentSection = assessmentSection; + DataGridViewControl.CellFormatting += ShowAssessmentLayerTwoAErrors; DataGridViewControl.CellFormatting += DisableIrrelevantFieldsFormatting; @@ -99,7 +111,10 @@ { return null; } - return new MacroStabilityInwardsFailureMechanismSectionResultRow(sectionResult, FailureMechanism.Calculations.OfType()); + + return new MacroStabilityInwardsFailureMechanismSectionResultRow(sectionResult, + FailureMechanism.Calculations.OfType(), + (MacroStabilityInwardsFailureMechanism) FailureMechanism, assessmentSection); } protected override void AddDataGridColumns() @@ -170,7 +185,7 @@ currentDataGridViewCell.ErrorText = RingtoetsCommonFormsResources.FailureMechanismResultView_DataGridViewCellFormatting_Not_all_calculations_have_been_executed; return; } - if (calculationScenarioStatus == CalculationScenarioStatus.Failed) + if (double.IsNaN(resultRow.AssessmentLayerTwoA)) { currentDataGridViewCell.ErrorText = RingtoetsCommonFormsResources.FailureMechanismResultView_DataGridViewCellFormatting_All_calculations_must_have_valid_output; return; Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Forms/Views/MacroStabilityInwardsFailureMechanismSectionResultRow.cs =================================================================== diff -u -rad12f4e2c4a765cc6c20e9f17ac051a99644ec44 -rfb3c4216478c0f072cf2f1a94053e81756ced5c7 --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Forms/Views/MacroStabilityInwardsFailureMechanismSectionResultRow.cs (.../MacroStabilityInwardsFailureMechanismSectionResultRow.cs) (revision ad12f4e2c4a765cc6c20e9f17ac051a99644ec44) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Forms/Views/MacroStabilityInwardsFailureMechanismSectionResultRow.cs (.../MacroStabilityInwardsFailureMechanismSectionResultRow.cs) (revision fb3c4216478c0f072cf2f1a94053e81756ced5c7) @@ -23,6 +23,7 @@ using System.Collections.Generic; using System.ComponentModel; using System.Linq; +using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.Calculation; using Ringtoets.Common.Forms.TypeConverters; using Ringtoets.Common.Forms.Views; @@ -38,21 +39,42 @@ { private const double tolerance = 1e-6; private readonly IEnumerable calculations; + private readonly MacroStabilityInwardsFailureMechanism failureMechanism; + private readonly IAssessmentSection assessmentSection; /// /// Creates a new instance of . /// /// The that is /// the source of this row. - /// + /// All calculations in the failure mechanism. + /// The failure mechanism the section result belongs to. + /// The assessment section the section result belongs to. /// Throw when any parameter is null. - public MacroStabilityInwardsFailureMechanismSectionResultRow(MacroStabilityInwardsFailureMechanismSectionResult sectionResult, IEnumerable calculations) : base(sectionResult) + public MacroStabilityInwardsFailureMechanismSectionResultRow(MacroStabilityInwardsFailureMechanismSectionResult sectionResult, + IEnumerable calculations, + MacroStabilityInwardsFailureMechanism failureMechanism, + IAssessmentSection assessmentSection) + : base(sectionResult) { if (calculations == null) { throw new ArgumentNullException(nameof(calculations)); } + + if (failureMechanism == null) + { + throw new ArgumentNullException(nameof(failureMechanism)); + } + + if (assessmentSection == null) + { + throw new ArgumentNullException(nameof(assessmentSection)); + } + this.calculations = calculations; + this.failureMechanism = failureMechanism; + this.assessmentSection = assessmentSection; } /// @@ -94,7 +116,7 @@ return double.NaN; } - return SectionResult.GetAssessmentLayerTwoA(relevantScenarios); + return SectionResult.GetAssessmentLayerTwoA(relevantScenarios, failureMechanism, assessmentSection); } } Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Plugin/MacroStabilityInwardsPlugin.cs =================================================================== diff -u -r5a67fdd92b4e69e1fde669dd27605d0eeaad734b -rfb3c4216478c0f072cf2f1a94053e81756ced5c7 --- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Plugin/MacroStabilityInwardsPlugin.cs (.../MacroStabilityInwardsPlugin.cs) (revision 5a67fdd92b4e69e1fde669dd27605d0eeaad734b) +++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Plugin/MacroStabilityInwardsPlugin.cs (.../MacroStabilityInwardsPlugin.cs) (revision fb3c4216478c0f072cf2f1a94053e81756ced5c7) @@ -211,15 +211,16 @@ }; yield return new ViewInfo< - FailureMechanismSectionResultContext, + MacroStabilityInwardsFailureMechanismSectionResultContext, IEnumerable, MacroStabilityInwardsFailureMechanismResultView> { GetViewName = (view, results) => RingtoetsCommonFormsResources.FailureMechanism_AssessmentResult_DisplayName, 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 MacroStabilityInwardsFailureMechanismResultView(context.AssessmentSection) }; yield return new ViewInfo @@ -282,7 +283,7 @@ CalculationGroupContextContextMenuStrip, CalculationGroupContextOnNodeRemoved); - yield return new TreeNodeInfo> + yield return new TreeNodeInfo { Text = context => RingtoetsCommonFormsResources.FailureMechanism_AssessmentResult_DisplayName, Image = context => RingtoetsCommonFormsResources.FailureMechanismSectionResultIcon, @@ -715,8 +716,7 @@ return new object[] { new MacroStabilityInwardsScenariosContext(failureMechanism.CalculationsGroup, failureMechanism, assessmentSection), - new FailureMechanismSectionResultContext( - failureMechanism.SectionResults, failureMechanism), + new MacroStabilityInwardsFailureMechanismSectionResultContext(failureMechanism.SectionResults, failureMechanism, assessmentSection), failureMechanism.OutputComments }; } Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.Test/MacroStabilityInwardsCalculationScenarioTest.cs =================================================================== diff -u -rc5836107e7d32e9802f3febb60303ea5c0c37484 -rfb3c4216478c0f072cf2f1a94053e81756ced5c7 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.Test/MacroStabilityInwardsCalculationScenarioTest.cs (.../MacroStabilityInwardsCalculationScenarioTest.cs) (revision c5836107e7d32e9802f3febb60303ea5c0c37484) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.Test/MacroStabilityInwardsCalculationScenarioTest.cs (.../MacroStabilityInwardsCalculationScenarioTest.cs) (revision fb3c4216478c0f072cf2f1a94053e81756ced5c7) @@ -78,41 +78,6 @@ } [Test] - public void Probability_OutputSet_ReturnsOutputProbability() - { - // Setup - const double expectedProbability = 1.0 / 49862180; - - var scenario = new MacroStabilityInwardsCalculationScenario - { - Output = MacroStabilityInwardsOutputTestFactory.CreateOutput(), - SemiProbabilisticOutput = MacroStabilityInwardsSemiProbabilisticOutputTestFactory.CreateOutput(expectedProbability) - }; - - // Call - double probability = scenario.Probability; - - // Assert - Assert.AreEqual(expectedProbability, probability); - } - - [Test] - public void Probability_ScenarioStatusNotDone_ThrowsInvalidOperationException() - { - // Setup - var scenario = new MacroStabilityInwardsCalculationScenario(); - - // Call - TestDelegate call = () => - { - double probability = scenario.Probability; - }; - - // Assert - Assert.Throws(call); - } - - [Test] public void CalculationScenarioStatus_OutputNull_ReturnsStatusNotCalculated() { // Setup @@ -126,40 +91,6 @@ } [Test] - public void CalculationScenarioStatus_SemiProbabilisticOutputNull_ReturnsStatusFailed() - { - // Setup - var scenario = new MacroStabilityInwardsCalculationScenario - { - Output = MacroStabilityInwardsOutputTestFactory.CreateOutput(), - SemiProbabilisticOutput = null - }; - - // Call - CalculationScenarioStatus status = scenario.Status; - - // Assert - Assert.AreEqual(CalculationScenarioStatus.Failed, status); - } - - [Test] - public void CalculationScenarioStatus_ScenarioInvalid_ReturnsStatusFailed() - { - // Setup - var scenario = new MacroStabilityInwardsCalculationScenario - { - Output = MacroStabilityInwardsOutputTestFactory.CreateOutput(), - SemiProbabilisticOutput = MacroStabilityInwardsSemiProbabilisticOutputTestFactory.CreateOutput(double.NaN) - }; - - // Call - CalculationScenarioStatus status = scenario.Status; - - // Assert - Assert.AreEqual(CalculationScenarioStatus.Failed, status); - } - - [Test] public void CalculationScenarioStatus_OutputSet_ReturnsStatusDone() { // Setup Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.Test/MacroStabilityInwardsFailureMechanismSection2aAssessmentResultExtensionsTest.cs =================================================================== diff -u -r00da0d2f72214f140bceff0eaae5f14172c587de -rfb3c4216478c0f072cf2f1a94053e81756ced5c7 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.Test/MacroStabilityInwardsFailureMechanismSection2aAssessmentResultExtensionsTest.cs (.../MacroStabilityInwardsFailureMechanismSection2aAssessmentResultExtensionsTest.cs) (revision 00da0d2f72214f140bceff0eaae5f14172c587de) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.Test/MacroStabilityInwardsFailureMechanismSection2aAssessmentResultExtensionsTest.cs (.../MacroStabilityInwardsFailureMechanismSection2aAssessmentResultExtensionsTest.cs) (revision fb3c4216478c0f072cf2f1a94053e81756ced5c7) @@ -19,12 +19,16 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. +using System; using System.Linq; using Core.Common.Base.Data; using Core.Common.Base.Geometry; using NUnit.Framework; +using Rhino.Mocks; +using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.Calculation; using Ringtoets.Common.Data.FailureMechanism; +using Ringtoets.Common.Data.TestUtil; using Ringtoets.MacroStabilityInwards.Data.TestUtil; namespace Ringtoets.MacroStabilityInwards.Data.Test @@ -33,21 +37,103 @@ public class MacroStabilityInwardsFailureMechanismSection2aAssessmentResultExtensionsTest { [Test] + public void GetAssessmentLayerTwoA_SectionResultNull_ThrowsArgumentNullException() + { + // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + // Call + TestDelegate call = () => MacroStabilityInwardsFailureMechanismSection2aAssessmentResultExtensions.GetAssessmentLayerTwoA( + null, Enumerable.Empty(), + new MacroStabilityInwardsFailureMechanism(), assessmentSection); + + // Assert + var exception = Assert.Throws(call); + Assert.AreEqual("sectionResult", exception.ParamName); + mocks.VerifyAll(); + } + + [Test] + public void GetAssessmentLayerTwoA_CalculationsNull_ThrowsArgumentNullException() + { + // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); + var failureMechanismSectionResult = new MacroStabilityInwardsFailureMechanismSectionResult(section); + + // Call + TestDelegate call = () => failureMechanismSectionResult.GetAssessmentLayerTwoA(null, new MacroStabilityInwardsFailureMechanism(), + assessmentSection); + + // Assert + var exception = Assert.Throws(call); + Assert.AreEqual("calculations", exception.ParamName); + mocks.VerifyAll(); + } + + [Test] + public void GetAssessmentLayerTwoA_FailureMechanismNull_ThrowsArgumentNullException() + { + // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); + var failureMechanismSectionResult = new MacroStabilityInwardsFailureMechanismSectionResult(section); + + // Call + TestDelegate call = () => failureMechanismSectionResult.GetAssessmentLayerTwoA(Enumerable.Empty(), + null, assessmentSection); + + // Assert + var exception = Assert.Throws(call); + Assert.AreEqual("failureMechanism", exception.ParamName); + mocks.VerifyAll(); + } + + [Test] + public void GetAssessmentLayerTwoA_AssessmentSectionNull_ThrowsArgumentNullException() + { + // Setup + FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); + var failureMechanismSectionResult = new MacroStabilityInwardsFailureMechanismSectionResult(section); + + // Call + TestDelegate call = () => failureMechanismSectionResult.GetAssessmentLayerTwoA(Enumerable.Empty(), + new MacroStabilityInwardsFailureMechanism(), null); + + // Assert + var exception = Assert.Throws(call); + Assert.AreEqual("assessmentSection", exception.ParamName); + } + + [Test] public void GetAssessmentLayerTwoA_MultipleScenarios_ReturnsValueBasedOnRelevantAndDoneScenarios() { // Setup + var failureMechanism = new MacroStabilityInwardsFailureMechanism(); + + var mocks = new MockRepository(); + IAssessmentSection assessmentSection = AssessmentSectionHelper.CreateAssessmentSectionStub(failureMechanism, mocks); + FailureMechanismSection section = CreateSection(); var failureMechanismSectionResult = new MacroStabilityInwardsFailureMechanismSectionResult(section); const double contribution1 = 0.2; const double contribution2 = 0.8; - const double probability1 = 1.0 / 1000000.0; - const double probability2 = 1.0 / 2000000.0; + const double factorOfStability1 = 1.0 / 1000000.0; + const double factorOfStability2 = 1.0 / 2000000.0; - MacroStabilityInwardsCalculationScenario macroStabilityInwardsCalculationScenario1 = MacroStabilityInwardsCalculationScenarioFactory.CreateMacroStabilityInwardsCalculationScenario(probability1, section); - MacroStabilityInwardsCalculationScenario macroStabilityInwardsCalculationScenario2 = MacroStabilityInwardsCalculationScenarioFactory.CreateMacroStabilityInwardsCalculationScenario(probability2, section); + MacroStabilityInwardsCalculationScenario macroStabilityInwardsCalculationScenario1 = MacroStabilityInwardsCalculationScenarioFactory.CreateMacroStabilityInwardsCalculationScenario(factorOfStability1, section); + MacroStabilityInwardsCalculationScenario macroStabilityInwardsCalculationScenario2 = MacroStabilityInwardsCalculationScenarioFactory.CreateMacroStabilityInwardsCalculationScenario(factorOfStability2, section); MacroStabilityInwardsCalculationScenario macroStabilityInwardsCalculationScenario3 = MacroStabilityInwardsCalculationScenarioFactory.CreateMacroStabilityInwardsCalculationScenario(0.0, section); - MacroStabilityInwardsCalculationScenario macroStabilityInwardsCalculationScenario4 = MacroStabilityInwardsCalculationScenarioFactory.CreateFailedMacroStabilityInwardsCalculationScenario(section); + MacroStabilityInwardsCalculationScenario macroStabilityInwardsCalculationScenario4 = MacroStabilityInwardsCalculationScenarioFactory.CreateNotCalculatedMacroStabilityInwardsCalculationScenario(section); macroStabilityInwardsCalculationScenario1.IsRelevant = true; macroStabilityInwardsCalculationScenario1.Contribution = (RoundedDouble) contribution1; @@ -68,51 +154,45 @@ }; // Call - double assessmentLayerTwoA = failureMechanismSectionResult.GetAssessmentLayerTwoA(calculations); + double assessmentLayerTwoA = failureMechanismSectionResult.GetAssessmentLayerTwoA(calculations, failureMechanism, assessmentSection); // Assert - const double expectedProbability = probability1 * contribution1 + probability2 * contribution2; - Assert.AreEqual(expectedProbability, assessmentLayerTwoA, 1e-8); + Assert.AreEqual(0.99801160064610306, assessmentLayerTwoA, 1e-8); + mocks.VerifyAll(); } [Test] - public void GetAssessmentLayerTwoA_ScenarioInvalidOutput_ReturnsZero() - { - // Setup - FailureMechanismSection section = CreateSection(); - var failureMechanismSectionResult = new MacroStabilityInwardsFailureMechanismSectionResult(section); - - MacroStabilityInwardsCalculationScenario macroStabilityInwardsCalculationScenario = MacroStabilityInwardsCalculationScenarioFactory.CreateFailedMacroStabilityInwardsCalculationScenario(section); - macroStabilityInwardsCalculationScenario.Contribution = (RoundedDouble) 1.0; - - // Call - double assessmentLayerTwoA = failureMechanismSectionResult.GetAssessmentLayerTwoA(new[] - { - macroStabilityInwardsCalculationScenario - }); - - // Assert - Assert.IsNaN(assessmentLayerTwoA); - } - - [Test] public void GetAssessmentLayerTwoA_NoScenarios_ReturnsZero() { // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + var failureMechanism = new MacroStabilityInwardsFailureMechanism(); + FailureMechanismSection section = CreateSection(); var failureMechanismSectionResult = new MacroStabilityInwardsFailureMechanismSectionResult(section); // Call - double assessmentLayerTwoA = failureMechanismSectionResult.GetAssessmentLayerTwoA(Enumerable.Empty()); + double assessmentLayerTwoA = failureMechanismSectionResult.GetAssessmentLayerTwoA(Enumerable.Empty(), + failureMechanism, assessmentSection); // Assert Assert.IsNaN(assessmentLayerTwoA); + mocks.VerifyAll(); } [Test] public void GetAssessmentLayerTwoA_NoRelevantScenarios_ReturnsZero() { // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + var failureMechanism = new MacroStabilityInwardsFailureMechanism(); + FailureMechanismSection section = CreateSection(); var failureMechanismSectionResult = new MacroStabilityInwardsFailureMechanismSectionResult(section); @@ -126,16 +206,25 @@ }; // Call - double assessmentLayerTwoA = failureMechanismSectionResult.GetAssessmentLayerTwoA(calculationScenarios); + double assessmentLayerTwoA = failureMechanismSectionResult.GetAssessmentLayerTwoA(calculationScenarios, + failureMechanism, + assessmentSection); // Assert Assert.IsNaN(assessmentLayerTwoA); + mocks.VerifyAll(); } [Test] public void GetAssessmentLayerTwoA_ScenarioNotCalculated_ReturnsZero() { // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + var failureMechanism = new MacroStabilityInwardsFailureMechanism(); + FailureMechanismSection section = CreateSection(); var failureMechanismSectionResult = new MacroStabilityInwardsFailureMechanismSectionResult(section); @@ -145,23 +234,63 @@ double assessmentLayerTwoA = failureMechanismSectionResult.GetAssessmentLayerTwoA(new[] { macroStabilityInwardsCalculationScenario - }); + }, failureMechanism, assessmentSection); // Assert Assert.IsNaN(assessmentLayerTwoA); + mocks.VerifyAll(); } [Test] + public void GetAssessmentLayerTwoA_ScenarioWithNanResults_ReturnsNaN() + { + // Setup + var failureMechanism = new MacroStabilityInwardsFailureMechanism(); + + var mocks = new MockRepository(); + IAssessmentSection assessmentSection = AssessmentSectionHelper.CreateAssessmentSectionStub(failureMechanism, mocks); + + FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); + var failureMechanismSectionResult = new MacroStabilityInwardsFailureMechanismSectionResult(section); + + const double contribution1 = 0.2; + const double contribution2 = 0.8; + + MacroStabilityInwardsCalculationScenario calculationScenario1 = MacroStabilityInwardsCalculationScenarioFactory.CreateMacroStabilityInwardsCalculationScenario(0, section); + MacroStabilityInwardsCalculationScenario calculationScenario2 = MacroStabilityInwardsCalculationScenarioFactory.CreateNotCalculatedMacroStabilityInwardsCalculationScenario(section); + + calculationScenario1.IsRelevant = true; + calculationScenario1.Contribution = (RoundedDouble)contribution1; + + calculationScenario2.IsRelevant = true; + calculationScenario2.Contribution = (RoundedDouble)contribution2; + calculationScenario2.Output = MacroStabilityInwardsOutputTestFactory.CreateOutput(); + + var calculations = new[] + { + calculationScenario1, + calculationScenario2 + }; + + // Call + double assessmentLayerTwoA = failureMechanismSectionResult.GetAssessmentLayerTwoA(calculations, failureMechanism, assessmentSection); + + // Assert + Assert.IsNaN(assessmentLayerTwoA); + mocks.VerifyAll(); + } + + [Test] public void GetTotalContribution_Always_ReturnsTotalRelevantScenarioContribution() { // Setup FailureMechanismSection section = CreateSection(); var failureMechanismSectionResult = new MacroStabilityInwardsFailureMechanismSectionResult(section); - MacroStabilityInwardsCalculationScenario macroStabilityInwardsCalculationScenario = MacroStabilityInwardsCalculationScenarioFactory.CreateFailedMacroStabilityInwardsCalculationScenario(section); + MacroStabilityInwardsCalculationScenario macroStabilityInwardsCalculationScenario = MacroStabilityInwardsCalculationScenarioFactory.CreateNotCalculatedMacroStabilityInwardsCalculationScenario(section); macroStabilityInwardsCalculationScenario.Contribution = (RoundedDouble) 0.3; - MacroStabilityInwardsCalculationScenario macroStabilityInwardsCalculationScenario2 = MacroStabilityInwardsCalculationScenarioFactory.CreateFailedMacroStabilityInwardsCalculationScenario(section); + MacroStabilityInwardsCalculationScenario macroStabilityInwardsCalculationScenario2 = MacroStabilityInwardsCalculationScenarioFactory.CreateMacroStabilityInwardsCalculationScenarioWithNaNOutput(section); macroStabilityInwardsCalculationScenario2.Contribution = (RoundedDouble) 0.5; MacroStabilityInwardsCalculationScenario macroStabilityInwardsCalculationScenario3 = MacroStabilityInwardsCalculationScenarioFactory.CreateIrrelevantMacroStabilityInwardsCalculationScenario(section); @@ -200,13 +329,13 @@ } [Test] - public void GetCalculationScenarioStatus_ScenarioInvalidOutput_ReturnsStatusFailed() + public void GetCalculationScenarioStatus_ScenarioNaNOutput_ReturnsStatusDone() { // Setup FailureMechanismSection section = CreateSection(); var failureMechanismSectionResult = new MacroStabilityInwardsFailureMechanismSectionResult(section); - MacroStabilityInwardsCalculationScenario macroStabilityInwardsCalculationScenario = MacroStabilityInwardsCalculationScenarioFactory.CreateFailedMacroStabilityInwardsCalculationScenario(section); + MacroStabilityInwardsCalculationScenario macroStabilityInwardsCalculationScenario = MacroStabilityInwardsCalculationScenarioFactory.CreateMacroStabilityInwardsCalculationScenarioWithNaNOutput(section); macroStabilityInwardsCalculationScenario.Contribution = (RoundedDouble) 1.0; // Call @@ -216,11 +345,11 @@ }); // Assert - Assert.AreEqual(CalculationScenarioStatus.Failed, status); + Assert.AreEqual(CalculationScenarioStatus.Done, status); } [Test] - public void GetCalculationScenarioStatus_ScenarioInvalidOutputAndNotCalculated_ReturnsStatusFailed() + public void GetCalculationScenarioStatus_ScenarioNaNOutputAndNotCalculated_ReturnsStatusNotCalculated() { // Setup FailureMechanismSection section = CreateSection(); @@ -229,7 +358,7 @@ MacroStabilityInwardsCalculationScenario macroStabilityInwardsCalculationScenario = MacroStabilityInwardsCalculationScenarioFactory.CreateNotCalculatedMacroStabilityInwardsCalculationScenario(section); macroStabilityInwardsCalculationScenario.IsRelevant = true; - MacroStabilityInwardsCalculationScenario macroStabilityInwardsCalculationScenario2 = MacroStabilityInwardsCalculationScenarioFactory.CreateFailedMacroStabilityInwardsCalculationScenario(section); + MacroStabilityInwardsCalculationScenario macroStabilityInwardsCalculationScenario2 = MacroStabilityInwardsCalculationScenarioFactory.CreateMacroStabilityInwardsCalculationScenarioWithNaNOutput(section); macroStabilityInwardsCalculationScenario2.Contribution = (RoundedDouble) 1.0; var calculationScenarios = new[] @@ -242,7 +371,7 @@ CalculationScenarioStatus status = failureMechanismSectionResult.GetCalculationScenarioStatus(calculationScenarios); // Assert - Assert.AreEqual(CalculationScenarioStatus.Failed, status); + Assert.AreEqual(CalculationScenarioStatus.NotCalculated, status); } [Test] Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.Test/MacroStabilityInwardsFailureMechanismSectionResultTest.cs =================================================================== diff -u -rf4049b9b0967513aeadfddb1fe58efa3b3aa1677 -rfb3c4216478c0f072cf2f1a94053e81756ced5c7 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.Test/MacroStabilityInwardsFailureMechanismSectionResultTest.cs (.../MacroStabilityInwardsFailureMechanismSectionResultTest.cs) (revision f4049b9b0967513aeadfddb1fe58efa3b3aa1677) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.Test/MacroStabilityInwardsFailureMechanismSectionResultTest.cs (.../MacroStabilityInwardsFailureMechanismSectionResultTest.cs) (revision fb3c4216478c0f072cf2f1a94053e81756ced5c7) @@ -22,6 +22,8 @@ using System; using Core.Common.TestUtil; using NUnit.Framework; +using Rhino.Mocks; +using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.FailureMechanism; using Ringtoets.Common.Data.TestUtil; @@ -34,6 +36,11 @@ public void Constructor_WithParameters_ExpectedValues() { // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + var failureMechanism = new MacroStabilityInwardsFailureMechanism(); FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); // Call @@ -43,7 +50,8 @@ Assert.IsInstanceOf(sectionResult); Assert.AreSame(section, sectionResult.Section); Assert.IsNaN(sectionResult.AssessmentLayerThree); - Assert.IsNaN(sectionResult.GetAssessmentLayerTwoA(new MacroStabilityInwardsCalculationScenario[0])); + Assert.IsNaN(sectionResult.GetAssessmentLayerTwoA(new MacroStabilityInwardsCalculationScenario[0], failureMechanism, assessmentSection)); + mocks.VerifyAll(); } [Test] Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.TestUtil.Test/MacroStabilityInwardsCalculationScenarioFactoryTest.cs =================================================================== diff -u -re38673ff639b5d86a2f55997e2d0d876ba4737f7 -rfb3c4216478c0f072cf2f1a94053e81756ced5c7 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.TestUtil.Test/MacroStabilityInwardsCalculationScenarioFactoryTest.cs (.../MacroStabilityInwardsCalculationScenarioFactoryTest.cs) (revision e38673ff639b5d86a2f55997e2d0d876ba4737f7) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.TestUtil.Test/MacroStabilityInwardsCalculationScenarioFactoryTest.cs (.../MacroStabilityInwardsCalculationScenarioFactoryTest.cs) (revision fb3c4216478c0f072cf2f1a94053e81756ced5c7) @@ -50,45 +50,43 @@ [TestCase(0.0, TestName = "CreateCalculationScenario_WithSection_CreatesRelevantCalculationWithOutputSet(0.0)")] [TestCase(0.8, TestName = "CreateCalculationScenario_WithSection_CreatesRelevantCalculationWithOutputSet(0.8)")] [TestCase(1.0, TestName = "CreateCalculationScenario_WithSection_CreatesRelevantCalculationWithOutputSet(1.0)")] - public void CreateMacroStabilityInwardsCalculationScenario_WithSection_CreatesRelevantCalculationWithOutputSet(double probability) + public void CreateMacroStabilityInwardsCalculationScenario_WithSection_CreatesRelevantCalculationWithOutputSet(double factoryOfStability) { // Setup FailureMechanismSection section = CreateSection(); // Call - MacroStabilityInwardsCalculationScenario scenario = MacroStabilityInwardsCalculationScenarioFactory.CreateMacroStabilityInwardsCalculationScenario(probability, section); + MacroStabilityInwardsCalculationScenario scenario = MacroStabilityInwardsCalculationScenarioFactory.CreateMacroStabilityInwardsCalculationScenario(factoryOfStability, section); // Assert Assert.NotNull(scenario.Output); - Assert.NotNull(scenario.SemiProbabilisticOutput); - Assert.AreEqual(probability, scenario.SemiProbabilisticOutput.MacroStabilityInwardsProbability, 1e-6); + Assert.AreEqual(factoryOfStability, scenario.Output.FactorOfStability, 1e-6); Assert.IsTrue(scenario.IsRelevant); } [Test] - public void CreateFailedMacroStabilityInwardsCalculationScenario_WithNoSection_ThrowsArgumentNullException() + public void CreateMacroStabilityInwardsCalculationScenarioWithNaNOutput_WithNoSection_ThrowsArgumentNullException() { // Call - TestDelegate test = () => MacroStabilityInwardsCalculationScenarioFactory.CreateFailedMacroStabilityInwardsCalculationScenario(null); + TestDelegate test = () => MacroStabilityInwardsCalculationScenarioFactory.CreateMacroStabilityInwardsCalculationScenarioWithNaNOutput(null); // Assert string paramName = Assert.Throws(test).ParamName; Assert.AreEqual("section", paramName); } [Test] - public void CreateFailedMacroStabilityInwardsCalculationScenario_WithSection_CreatesRelevantCalculationWithOutputSetToNaN() + public void CreateMacroStabilityInwardsCalculationScenarioWithNaNOutput_WithSection_CreatesRelevantCalculationWithOutputSetToNaN() { // Setup FailureMechanismSection section = CreateSection(); // Call - MacroStabilityInwardsCalculationScenario scenario = MacroStabilityInwardsCalculationScenarioFactory.CreateFailedMacroStabilityInwardsCalculationScenario(section); + MacroStabilityInwardsCalculationScenario scenario = MacroStabilityInwardsCalculationScenarioFactory.CreateMacroStabilityInwardsCalculationScenarioWithNaNOutput(section); // Assert Assert.NotNull(scenario.Output); - Assert.NotNull(scenario.SemiProbabilisticOutput); - Assert.IsNaN(scenario.SemiProbabilisticOutput.MacroStabilityInwardsProbability); + Assert.IsNaN(scenario.Output.FactorOfStability); Assert.IsTrue(scenario.IsRelevant); } Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.TestUtil/MacroStabilityInwardsCalculationScenarioFactory.cs =================================================================== diff -u -re38673ff639b5d86a2f55997e2d0d876ba4737f7 -rfb3c4216478c0f072cf2f1a94053e81756ced5c7 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.TestUtil/MacroStabilityInwardsCalculationScenarioFactory.cs (.../MacroStabilityInwardsCalculationScenarioFactory.cs) (revision e38673ff639b5d86a2f55997e2d0d876ba4737f7) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.TestUtil/MacroStabilityInwardsCalculationScenarioFactory.cs (.../MacroStabilityInwardsCalculationScenarioFactory.cs) (revision fb3c4216478c0f072cf2f1a94053e81756ced5c7) @@ -41,34 +41,28 @@ /// /// Creates a calculated scenario for which the surface line on the input intersects with . /// - /// The value for . + /// The value for . /// The section for which an intersection will be created. /// A new . - public static MacroStabilityInwardsCalculationScenario CreateMacroStabilityInwardsCalculationScenario(double probability, + public static MacroStabilityInwardsCalculationScenario CreateMacroStabilityInwardsCalculationScenario(double factorOfStability, FailureMechanismSection section) { MacroStabilityInwardsCalculationScenario scenario = CreateNotCalculatedMacroStabilityInwardsCalculationScenario(section); - var random = new Random(21); - scenario.SemiProbabilisticOutput = new MacroStabilityInwardsSemiProbabilisticOutput( - random.NextDouble(), - random.NextDouble(), - random.NextDouble(), - probability, - random.NextDouble(), - random.NextDouble()); + scenario.Output = MacroStabilityInwardsOutputTestFactory.CreateOutput(new MacroStabilityInwardsOutput.ConstructionProperties + { + FactorOfStability = factorOfStability + }); - scenario.Output = MacroStabilityInwardsOutputTestFactory.CreateOutput(); - return scenario; } /// /// Creates a scenario for which the surface line on the input intersects with and - /// the calculation has failed. + /// the calculation has as factor of stability. /// /// The section for which an intersection will be created. /// A new . - public static MacroStabilityInwardsCalculationScenario CreateFailedMacroStabilityInwardsCalculationScenario(FailureMechanismSection section) + public static MacroStabilityInwardsCalculationScenario CreateMacroStabilityInwardsCalculationScenarioWithNaNOutput(FailureMechanismSection section) { return CreateMacroStabilityInwardsCalculationScenario(double.NaN, section); } Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Forms.Test/Views/MacroStabilityInwardsFailureMechanismResultViewTest.cs =================================================================== diff -u -rc4392a12110e2bb3549c5fee1ec319c229b67198 -rfb3c4216478c0f072cf2f1a94053e81756ced5c7 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Forms.Test/Views/MacroStabilityInwardsFailureMechanismResultViewTest.cs (.../MacroStabilityInwardsFailureMechanismResultViewTest.cs) (revision c4392a12110e2bb3549c5fee1ec319c229b67198) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Forms.Test/Views/MacroStabilityInwardsFailureMechanismResultViewTest.cs (.../MacroStabilityInwardsFailureMechanismResultViewTest.cs) (revision fb3c4216478c0f072cf2f1a94053e81756ced5c7) @@ -19,6 +19,7 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. +using System; using System.Collections.Generic; using System.Globalization; using System.Linq; @@ -29,7 +30,10 @@ using Core.Common.TestUtil; using NUnit.Extensions.Forms; using NUnit.Framework; +using Rhino.Mocks; +using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.FailureMechanism; +using Ringtoets.Common.Data.TestUtil; using Ringtoets.MacroStabilityInwards.Data; using Ringtoets.MacroStabilityInwards.Data.TestUtil; using Ringtoets.MacroStabilityInwards.Forms.Views; @@ -60,14 +64,20 @@ [Test] public void DefaultConstructor_DefaultValues() { + // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + // Call - using (var view = new MacroStabilityInwardsFailureMechanismResultView()) + using (var view = new MacroStabilityInwardsFailureMechanismResultView(assessmentSection)) { // Assert Assert.IsInstanceOf(view); Assert.IsInstanceOf(view); Assert.IsNull(view.Data); } + mocks.VerifyAll(); } [Test] @@ -349,7 +359,7 @@ // Assert Assert.IsEmpty(dataGridViewCell.ErrorText); - Assert.AreEqual($"1/{1 / calculationScenario.Probability:N0}", + Assert.AreEqual($"1/{1 / 1}", formattedValue); } } @@ -396,7 +406,7 @@ var failureMechanism = new MacroStabilityInwardsFailureMechanism(); using (MacroStabilityInwardsFailureMechanismResultView view = ShowFullyConfiguredFailureMechanismResultsView(failureMechanism)) { - MacroStabilityInwardsCalculationScenario calculationScenario = MacroStabilityInwardsCalculationScenarioFactory.CreateFailedMacroStabilityInwardsCalculationScenario( + MacroStabilityInwardsCalculationScenario calculationScenario = MacroStabilityInwardsCalculationScenarioFactory.CreateMacroStabilityInwardsCalculationScenarioWithNaNOutput( failureMechanism.Sections.First()); failureMechanism.CalculationsGroup.Children.Add(calculationScenario); view.Data = failureMechanism.SectionResults; @@ -484,7 +494,7 @@ var failureMechanism = new MacroStabilityInwardsFailureMechanism(); using (ShowFullyConfiguredFailureMechanismResultsView(failureMechanism)) { - MacroStabilityInwardsCalculationScenario calculationScenario = MacroStabilityInwardsCalculationScenarioFactory.CreateFailedMacroStabilityInwardsCalculationScenario( + MacroStabilityInwardsCalculationScenario calculationScenario = MacroStabilityInwardsCalculationScenarioFactory.CreateMacroStabilityInwardsCalculationScenarioWithNaNOutput( failureMechanism.Sections.First()); failureMechanism.CalculationsGroup.Children.Add(calculationScenario); @@ -526,7 +536,7 @@ private MacroStabilityInwardsFailureMechanismResultView ShowFailureMechanismResultsView() { - var failureMechanismResultView = new MacroStabilityInwardsFailureMechanismResultView(); + var failureMechanismResultView = new MacroStabilityInwardsFailureMechanismResultView(new ObservableTestAssessmentSectionStub()); testForm.Controls.Add(failureMechanismResultView); testForm.Show(); Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Forms.Test/Views/MacroStabilityInwardsFailureMechanismSectionResultRowTest.cs =================================================================== diff -u -rf4049b9b0967513aeadfddb1fe58efa3b3aa1677 -rfb3c4216478c0f072cf2f1a94053e81756ced5c7 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Forms.Test/Views/MacroStabilityInwardsFailureMechanismSectionResultRowTest.cs (.../MacroStabilityInwardsFailureMechanismSectionResultRowTest.cs) (revision f4049b9b0967513aeadfddb1fe58efa3b3aa1677) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Forms.Test/Views/MacroStabilityInwardsFailureMechanismSectionResultRowTest.cs (.../MacroStabilityInwardsFailureMechanismSectionResultRowTest.cs) (revision fb3c4216478c0f072cf2f1a94053e81756ced5c7) @@ -24,7 +24,8 @@ using Core.Common.Base.Data; using Core.Common.TestUtil; using NUnit.Framework; -using Ringtoets.Common.Data.Calculation; +using Rhino.Mocks; +using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.FailureMechanism; using Ringtoets.Common.Data.TestUtil; using Ringtoets.Common.Forms.TypeConverters; @@ -42,15 +43,24 @@ public void Constructor_WithParameters_ExpectedValues() { // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + var failureMechanism = new MacroStabilityInwardsFailureMechanism(); + FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); var result = new MacroStabilityInwardsFailureMechanismSectionResult(section); // Call - var row = new MacroStabilityInwardsFailureMechanismSectionResultRow(result, Enumerable.Empty()); + var row = new MacroStabilityInwardsFailureMechanismSectionResultRow(result, Enumerable.Empty(), + failureMechanism, assessmentSection); // Assert Assert.IsInstanceOf>(row); - Assert.AreEqual(result.GetAssessmentLayerTwoA(Enumerable.Empty()), row.AssessmentLayerTwoA); + Assert.AreEqual(result.GetAssessmentLayerTwoA(Enumerable.Empty(), + failureMechanism, assessmentSection), + row.AssessmentLayerTwoA); Assert.AreEqual(row.AssessmentLayerThree, result.AssessmentLayerThree); TestHelper.AssertTypeConverter( @@ -63,29 +73,82 @@ public void Constructor_CalculationsNull_ThrowsArgumentNullException() { // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + var failureMechanism = new MacroStabilityInwardsFailureMechanism(); + FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); var result = new MacroStabilityInwardsFailureMechanismSectionResult(section); // Call - TestDelegate test = () => new MacroStabilityInwardsFailureMechanismSectionResultRow(result, null); + TestDelegate test = () => new MacroStabilityInwardsFailureMechanismSectionResultRow(result, null, + failureMechanism, assessmentSection); // Assert string paramName = Assert.Throws(test).ParamName; Assert.AreEqual("calculations", paramName); + mocks.VerifyAll(); } [Test] + public void Constructor_FailureMechanismNull_ThrowsArgumentNullException() + { + // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); + var result = new MacroStabilityInwardsFailureMechanismSectionResult(section); + + // Call + TestDelegate call = () => new MacroStabilityInwardsFailureMechanismSectionResultRow(result, Enumerable.Empty(), + null, assessmentSection); + + // Assert + var exception = Assert.Throws(call); + Assert.AreEqual("failureMechanism", exception.ParamName); + mocks.VerifyAll(); + } + + [Test] + public void Constructor_AssessmentSectionNull_ThrowsArgumentNullException() + { + // Setup + FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); + var result = new MacroStabilityInwardsFailureMechanismSectionResult(section); + + // Call + TestDelegate call = () => new MacroStabilityInwardsFailureMechanismSectionResultRow(result, Enumerable.Empty(), + new MacroStabilityInwardsFailureMechanism(), null); + + // Assert + var exception = Assert.Throws(call); + Assert.AreEqual("assessmentSection", exception.ParamName); + } + + [Test] public void AssessmentLayerTwoA_NoScenarios_ReturnNaN() { // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + var failureMechanism = new MacroStabilityInwardsFailureMechanism(); + FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); var result = new MacroStabilityInwardsFailureMechanismSectionResult(section); // Call - var row = new MacroStabilityInwardsFailureMechanismSectionResultRow(result, Enumerable.Empty()); + var row = new MacroStabilityInwardsFailureMechanismSectionResultRow(result, Enumerable.Empty(), + failureMechanism, assessmentSection); // Assert Assert.IsNaN(row.AssessmentLayerTwoA); + mocks.VerifyAll(); } [Test] @@ -97,6 +160,12 @@ public void AssessmentLayerTwoA_RelevantScenarioContributionDontAddUpTo1_ReturnNaN(double contributionA, double contributionB) { // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + var failureMechanism = new MacroStabilityInwardsFailureMechanism(); + FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); MacroStabilityInwardsCalculationScenario scenarioA = @@ -111,45 +180,53 @@ { scenarioA, scenarioB - }); + }, failureMechanism, assessmentSection); // Call double assessmentLayerTwoA = row.AssessmentLayerTwoA; // Assert Assert.IsNaN(assessmentLayerTwoA); + mocks.VerifyAll(); } [Test] - [TestCase(CalculationScenarioStatus.NotCalculated)] - [TestCase(CalculationScenarioStatus.Failed)] - public void AssessmentLayerTwoA_NoRelevantScenariosDone_ReturnNaN(CalculationScenarioStatus status) + public void AssessmentLayerTwoA_NoRelevantScenariosDone_ReturnNaN() { // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + var failureMechanism = new MacroStabilityInwardsFailureMechanism(); + FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); - MacroStabilityInwardsCalculationScenario scenario = - status.Equals(CalculationScenarioStatus.NotCalculated) - ? MacroStabilityInwardsCalculationScenarioFactory.CreateNotCalculatedMacroStabilityInwardsCalculationScenario(section) - : MacroStabilityInwardsCalculationScenarioFactory.CreateFailedMacroStabilityInwardsCalculationScenario(section); + MacroStabilityInwardsCalculationScenario scenario = MacroStabilityInwardsCalculationScenarioFactory.CreateNotCalculatedMacroStabilityInwardsCalculationScenario(section); var result = new MacroStabilityInwardsFailureMechanismSectionResult(section); var row = new MacroStabilityInwardsFailureMechanismSectionResultRow(result, new[] { scenario - }); + }, failureMechanism, assessmentSection); // Call double assessmentLayerTwoA = row.AssessmentLayerTwoA; // Assert Assert.IsNaN(assessmentLayerTwoA); + mocks.VerifyAll(); } [Test] public void AssessmentLayerTwoA_RelevantScenariosDone_ResultOfSection() { // Setup + var failureMechanism = new MacroStabilityInwardsFailureMechanism(); + + var mocks = new MockRepository(); + IAssessmentSection assessmentSection = AssessmentSectionHelper.CreateAssessmentSectionStub(failureMechanism, mocks); + FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); MacroStabilityInwardsCalculationScenario scenario = MacroStabilityInwardsCalculationScenarioFactory.CreateMacroStabilityInwardsCalculationScenario(0.2, section); @@ -159,7 +236,7 @@ var row = new MacroStabilityInwardsFailureMechanismSectionResultRow(result, new[] { scenario - }); + }, failureMechanism, assessmentSection); // Call double assessmentLayerTwoA = row.AssessmentLayerTwoA; @@ -168,21 +245,29 @@ double expected = result.GetAssessmentLayerTwoA(new[] { scenario - }); + }, failureMechanism, assessmentSection); Assert.AreEqual(expected, assessmentLayerTwoA, 1e-6); + mocks.VerifyAll(); } [Test] public void AssessmentLayerThree_ValueSet_ReturnExpectedValue() { // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + var failureMechanism = new MacroStabilityInwardsFailureMechanism(); + var random = new Random(21); double assessmentLayerThree = random.NextDouble(); var sectionResult = new MacroStabilityInwardsFailureMechanismSectionResult( FailureMechanismSectionTestFactory.CreateFailureMechanismSection()); var row = new MacroStabilityInwardsFailureMechanismSectionResultRow(sectionResult, - Enumerable.Empty()); + Enumerable.Empty(), + failureMechanism, assessmentSection); // Call row.AssessmentLayerThree = assessmentLayerThree; Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Integration.Test/MacroStabilityInwardsFailureMechanismResultViewIntegrationTest.cs =================================================================== diff -u -r5d822eca2d7467c9781a4a3a54d796ac4229e4a3 -rfb3c4216478c0f072cf2f1a94053e81756ced5c7 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Integration.Test/MacroStabilityInwardsFailureMechanismResultViewIntegrationTest.cs (.../MacroStabilityInwardsFailureMechanismResultViewIntegrationTest.cs) (revision 5d822eca2d7467c9781a4a3a54d796ac4229e4a3) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Integration.Test/MacroStabilityInwardsFailureMechanismResultViewIntegrationTest.cs (.../MacroStabilityInwardsFailureMechanismResultViewIntegrationTest.cs) (revision fb3c4216478c0f072cf2f1a94053e81756ced5c7) @@ -47,15 +47,16 @@ using (var form = new Form()) { // Show the view - var failureMechanismResultView = new MacroStabilityInwardsFailureMechanismResultView(); + var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); + + var failureMechanismResultView = new MacroStabilityInwardsFailureMechanismResultView(assessmentSection); form.Controls.Add(failureMechanismResultView); form.Show(); // Obtain the data grid view var dataGridView = (DataGridView) new ControlTester("dataGridView").TheObject; // Set all necessary data to the view - var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); failureMechanismResultView.Data = assessmentSection.MacroStabilityInwards.SectionResults; failureMechanismResultView.FailureMechanism = assessmentSection.MacroStabilityInwards; @@ -119,19 +120,17 @@ dataGridView.Rows[22].Cells[assessmentLayerTwoAIndex].ErrorText); // Execute the first calculation and ensure the data grid view is updated - const double probability = 1.0 / 31846382.0; - calculation1.Output = MacroStabilityInwardsOutputTestFactory.CreateOutput(); - calculation1.SemiProbabilisticOutput = MacroStabilityInwardsSemiProbabilisticOutputTestFactory.CreateOutput(probability); + calculation1.Output = MacroStabilityInwardsOutputTestFactory.CreateRandomOutput(); calculation1.NotifyObservers(); - Assert.AreEqual($"1/{1.0 / calculation1.Probability:N0}", + Assert.AreEqual("1/14", dataGridView.Rows[22].Cells[assessmentLayerTwoAIndex].FormattedValue); Assert.IsEmpty(dataGridView.Rows[22].Cells[assessmentLayerTwoAIndex].ErrorText); // Add another, nested calculation without surface line and ensure the data grid view is updated when the surface line is set var calculation3 = new MacroStabilityInwardsCalculationScenario(); nestedCalculationGroup.Children.Add(calculation3); nestedCalculationGroup.NotifyObservers(); - Assert.AreEqual($"1/{1.0 / calculation1.Probability:N0}", + Assert.AreEqual("1/14", dataGridView.Rows[22].Cells[assessmentLayerTwoAIndex].FormattedValue); Assert.IsEmpty(dataGridView.Rows[22].Cells[assessmentLayerTwoAIndex].ErrorText); @@ -165,7 +164,7 @@ // Set contribution again so we have a probability. calculation1.Contribution = (RoundedDouble) 1.0; calculation1.NotifyObservers(); - Assert.AreEqual($"1/{1.0 / calculation1.Probability:N0}", + Assert.AreEqual("1/14", dataGridView.Rows[22].Cells[assessmentLayerTwoAIndex].FormattedValue); Assert.IsEmpty(dataGridView.Rows[22].Cells[assessmentLayerTwoAIndex].ErrorText); Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Plugin.Test/MacroStabilityInwardsPluginTest.cs =================================================================== diff -u -r0bc724e93170500800aa7e5d3bf641ab44eeeac7 -rfb3c4216478c0f072cf2f1a94053e81756ced5c7 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Plugin.Test/MacroStabilityInwardsPluginTest.cs (.../MacroStabilityInwardsPluginTest.cs) (revision 0bc724e93170500800aa7e5d3bf641ab44eeeac7) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Plugin.Test/MacroStabilityInwardsPluginTest.cs (.../MacroStabilityInwardsPluginTest.cs) (revision fb3c4216478c0f072cf2f1a94053e81756ced5c7) @@ -130,7 +130,7 @@ Assert.IsTrue(treeNodeInfos.Any(tni => tni.TagType == typeof(MacroStabilityInwardsCalculationGroupContext))); Assert.IsTrue(treeNodeInfos.Any(tni => tni.TagType == typeof(MacroStabilityInwardsInputContext))); Assert.IsTrue(treeNodeInfos.Any(tni => tni.TagType == typeof(MacroStabilityInwardsFailureMechanismContext))); - Assert.IsTrue(treeNodeInfos.Any(tni => tni.TagType == typeof(FailureMechanismSectionResultContext))); + Assert.IsTrue(treeNodeInfos.Any(tni => tni.TagType == typeof(MacroStabilityInwardsFailureMechanismSectionResultContext))); Assert.IsTrue(treeNodeInfos.Any(tni => tni.TagType == typeof(MacroStabilityInwardsOutputContext))); Assert.IsTrue(treeNodeInfos.Any(tni => tni.TagType == typeof(MacroStabilityInwardsScenariosContext))); } @@ -155,7 +155,7 @@ PluginTestHelper.AssertViewInfoDefined( viewInfos, - typeof(FailureMechanismSectionResultContext), + typeof(MacroStabilityInwardsFailureMechanismSectionResultContext), typeof(IEnumerable), typeof(MacroStabilityInwardsFailureMechanismResultView)); Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Plugin.Test/Ringtoets.MacroStabilityInwards.Plugin.Test.csproj =================================================================== diff -u -r0bc724e93170500800aa7e5d3bf641ab44eeeac7 -rfb3c4216478c0f072cf2f1a94053e81756ced5c7 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Plugin.Test/Ringtoets.MacroStabilityInwards.Plugin.Test.csproj (.../Ringtoets.MacroStabilityInwards.Plugin.Test.csproj) (revision 0bc724e93170500800aa7e5d3bf641ab44eeeac7) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Plugin.Test/Ringtoets.MacroStabilityInwards.Plugin.Test.csproj (.../Ringtoets.MacroStabilityInwards.Plugin.Test.csproj) (revision fb3c4216478c0f072cf2f1a94053e81756ced5c7) @@ -53,7 +53,7 @@ - + Fisheye: Tag fb3c4216478c0f072cf2f1a94053e81756ced5c7 refers to a dead (removed) revision in file `Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Plugin.Test/TreeNodeInfos/FailureMechanismSectionResultContextTreeNodeInfoTest.cs'. Fisheye: No comparison available. Pass `N' to diff? Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Plugin.Test/TreeNodeInfos/MacroStabilityInwardsFailureMechanismSectionResultContextTreeNodeInfoTest.cs =================================================================== diff -u --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Plugin.Test/TreeNodeInfos/MacroStabilityInwardsFailureMechanismSectionResultContextTreeNodeInfoTest.cs (revision 0) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Plugin.Test/TreeNodeInfos/MacroStabilityInwardsFailureMechanismSectionResultContextTreeNodeInfoTest.cs (revision fb3c4216478c0f072cf2f1a94053e81756ced5c7) @@ -0,0 +1,140 @@ +// Copyright (C) Stichting Deltares 2017. All rights reserved. +// +// This file is part of Ringtoets. +// +// Ringtoets is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +// +// All names, logos, and references to "Deltares" are registered trademarks of +// Stichting Deltares and remain full property of Stichting Deltares at all times. +// All rights reserved. + +using System.Drawing; +using System.Linq; +using Core.Common.Controls.TreeView; +using Core.Common.Gui; +using Core.Common.Gui.ContextMenu; +using Core.Common.TestUtil; +using NUnit.Framework; +using Rhino.Mocks; +using Ringtoets.Common.Data.AssessmentSection; +using Ringtoets.MacroStabilityInwards.Data; +using Ringtoets.MacroStabilityInwards.Forms.PresentationObjects; +using RingtoetsCommonFormsResources = Ringtoets.Common.Forms.Properties.Resources; + +namespace Ringtoets.MacroStabilityInwards.Plugin.Test.TreeNodeInfos +{ + [TestFixture] + public class MacroStabilityInwardsFailureMechanismSectionResultContextTreeNodeInfoTest + { + private MockRepository mocks; + private MacroStabilityInwardsPlugin plugin; + private TreeNodeInfo info; + + [SetUp] + public void SetUp() + { + mocks = new MockRepository(); + plugin = new MacroStabilityInwardsPlugin(); + info = plugin.GetTreeNodeInfos().First(tni => tni.TagType == typeof(MacroStabilityInwardsFailureMechanismSectionResultContext)); + } + + [TearDown] + public void TearDown() + { + plugin.Dispose(); + mocks.VerifyAll(); + } + + [Test] + public void Initialized_Always_ExpectedPropertiesSet() + { + // Setup + mocks.ReplayAll(); + + // Assert + Assert.IsNotNull(info.Text); + Assert.IsNull(info.ForeColor); + Assert.IsNotNull(info.Image); + Assert.IsNotNull(info.ContextMenuStrip); + Assert.IsNull(info.EnsureVisibleOnCreate); + Assert.IsNull(info.ExpandOnCreate); + Assert.IsNull(info.ChildNodeObjects); + Assert.IsNull(info.CanRename); + Assert.IsNull(info.OnNodeRenamed); + Assert.IsNull(info.CanRemove); + Assert.IsNull(info.OnNodeRemoved); + Assert.IsNull(info.CanCheck); + Assert.IsNull(info.IsChecked); + Assert.IsNull(info.OnNodeChecked); + Assert.IsNull(info.CanDrag); + Assert.IsNull(info.CanDrop); + Assert.IsNull(info.CanInsert); + Assert.IsNull(info.OnDrop); + } + + [Test] + public void Text_Always_ReturnsName() + { + // Setup + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + var mechanism = new MacroStabilityInwardsFailureMechanism(); + var context = new MacroStabilityInwardsFailureMechanismSectionResultContext(mechanism.SectionResults, mechanism, assessmentSection); + + // Call + string text = info.Text(context); + + // Assert + Assert.AreEqual("Resultaat", text); + } + + [Test] + public void Image_Always_ReturnsGenericInputOutputIcon() + { + // Setup + mocks.ReplayAll(); + + // Call + Image image = info.Image(null); + + // Assert + TestHelper.AssertImagesAreEqual(RingtoetsCommonFormsResources.FailureMechanismSectionResultIcon, image); + } + + [Test] + public void ContextMenuStrip_Always_CallsBuilder() + { + // Setup + var menuBuilder = mocks.StrictMock(); + menuBuilder.Expect(mb => mb.AddOpenItem()).Return(menuBuilder); + menuBuilder.Expect(mb => mb.Build()).Return(null); + + using (var treeViewControl = new TreeViewControl()) + { + var gui = mocks.Stub(); + gui.Stub(g => g.Get(null, treeViewControl)).Return(menuBuilder); + + mocks.ReplayAll(); + + plugin.Gui = gui; + + // Call + info.ContextMenuStrip(null, null, treeViewControl); + } + // Assert + // Assert expectancies are called in TearDown() + } + } +} \ No newline at end of file Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Plugin.Test/ViewInfos/MacroStabilityInwardsFailureMechanismResultViewInfoTest.cs =================================================================== diff -u -r3178e116f5e59e03078d465efeb303c5e232c7bf -rfb3c4216478c0f072cf2f1a94053e81756ced5c7 --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Plugin.Test/ViewInfos/MacroStabilityInwardsFailureMechanismResultViewInfoTest.cs (.../MacroStabilityInwardsFailureMechanismResultViewInfoTest.cs) (revision 3178e116f5e59e03078d465efeb303c5e232c7bf) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Plugin.Test/ViewInfos/MacroStabilityInwardsFailureMechanismResultViewInfoTest.cs (.../MacroStabilityInwardsFailureMechanismResultViewInfoTest.cs) (revision fb3c4216478c0f072cf2f1a94053e81756ced5c7) @@ -23,6 +23,7 @@ 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; @@ -63,70 +64,49 @@ public void Initialized_Always_ExpectedPropertiesSet() { // Assert - Assert.AreEqual(typeof(FailureMechanismSectionResultContext), info.DataType); + Assert.AreEqual(typeof(MacroStabilityInwardsFailureMechanismSectionResultContext), info.DataType); Assert.AreEqual(typeof(IEnumerable), info.ViewDataType); } [Test] public void GetViewData_Always_ReturnsWrappedFailureMechanismResult() { // Setup + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + var failureMechanism = new MacroStabilityInwardsFailureMechanism(); - var context = new FailureMechanismSectionResultContext(failureMechanism.SectionResults, failureMechanism); + var context = new MacroStabilityInwardsFailureMechanismSectionResultContext(failureMechanism.SectionResults, failureMechanism, assessmentSection); // Call object viewData = info.GetViewData(context); // Assert Assert.AreSame(failureMechanism.SectionResults, viewData); + mocks.VerifyAll(); } [Test] public void GetViewName_Always_ReturnsViewName() { // Setup + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + var failureMechanism = new MacroStabilityInwardsFailureMechanism(); - using (var view = new MacroStabilityInwardsFailureMechanismResultView()) + using (var view = new MacroStabilityInwardsFailureMechanismResultView(assessmentSection)) { // Call string viewName = info.GetViewName(view, failureMechanism.SectionResults); // Assert Assert.AreEqual("Resultaat", viewName); } - } - [Test] - public void ViewType_Always_ReturnsViewType() - { - // Call - Type viewType = info.ViewType; - - // Assert - Assert.AreEqual(typeof(MacroStabilityInwardsFailureMechanismResultView), viewType); + mocks.VerifyAll(); } [Test] - public void DataType_Always_ReturnsDataType() - { - // Call - Type dataType = info.DataType; - - // Assert - Assert.AreEqual(typeof(FailureMechanismSectionResultContext), dataType); - } - - [Test] - public void ViewDataType_Always_ReturnsViewDataType() - { - // Call - Type viewDataType = info.ViewDataType; - - // Assert - Assert.AreEqual(typeof(IEnumerable), viewDataType); - } - - [Test] public void Image_Always_ReturnsGenericInputOutputIcon() { // Call @@ -146,7 +126,7 @@ var failureMechanism = new MacroStabilityInwardsFailureMechanism(); - using (var view = new MacroStabilityInwardsFailureMechanismResultView + using (var view = new MacroStabilityInwardsFailureMechanismResultView(assessmentSection) { Data = failureMechanism.SectionResults }) @@ -157,6 +137,7 @@ // Assert Assert.IsFalse(closeForData); } + mocks.VerifyAll(); } @@ -176,7 +157,7 @@ var failureMechanism = new MacroStabilityInwardsFailureMechanism(); - using (var view = new MacroStabilityInwardsFailureMechanismResultView + using (var view = new MacroStabilityInwardsFailureMechanismResultView(assessmentSection) { Data = failureMechanism.SectionResults }) @@ -187,6 +168,7 @@ // Assert Assert.IsFalse(closeForData); } + mocks.VerifyAll(); } @@ -205,7 +187,7 @@ mocks.ReplayAll(); - using (var view = new MacroStabilityInwardsFailureMechanismResultView + using (var view = new MacroStabilityInwardsFailureMechanismResultView(assessmentSection) { Data = failureMechanism.SectionResults }) @@ -216,16 +198,20 @@ // Assert Assert.IsTrue(closeForData); } + mocks.VerifyAll(); } [Test] public void CloseForData_ViewCorrespondingToRemovedFailureMechanism_ReturnsTrue() { // Setup + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + var failureMechanism = new MacroStabilityInwardsFailureMechanism(); - using (var view = new MacroStabilityInwardsFailureMechanismResultView + using (var view = new MacroStabilityInwardsFailureMechanismResultView(assessmentSection) { Data = failureMechanism.SectionResults }) @@ -236,14 +222,19 @@ // Assert Assert.IsTrue(closeForData); } + + mocks.VerifyAll(); } [Test] public void CloseForData_ViewNotCorrespondingToRemovedFailureMechanismContext_ReturnsFalse() { // Setup + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + var failureMechanism = new MacroStabilityInwardsFailureMechanism(); - using (var view = new MacroStabilityInwardsFailureMechanismResultView + using (var view = new MacroStabilityInwardsFailureMechanismResultView(assessmentSection) { Data = failureMechanism.SectionResults }) @@ -254,6 +245,8 @@ // Assert Assert.IsFalse(closeForData); } + + mocks.VerifyAll(); } [Test] @@ -265,7 +258,7 @@ var failureMechanism = new MacroStabilityInwardsFailureMechanism(); var failureMechanismContext = new MacroStabilityInwardsFailureMechanismContext(failureMechanism, assessmentSection); - using (var view = new MacroStabilityInwardsFailureMechanismResultView + using (var view = new MacroStabilityInwardsFailureMechanismResultView(assessmentSection) { Data = failureMechanism.SectionResults }) @@ -276,6 +269,7 @@ // Assert Assert.IsTrue(closeForData); } + mocks.VerifyAll(); } @@ -287,7 +281,7 @@ mocks.ReplayAll(); var failureMechanism = new MacroStabilityInwardsFailureMechanism(); - using (var view = new MacroStabilityInwardsFailureMechanismResultView + using (var view = new MacroStabilityInwardsFailureMechanismResultView(assessmentSection) { Data = failureMechanism.SectionResults }) @@ -302,15 +296,19 @@ // Assert Assert.IsFalse(closeForData); } + mocks.VerifyAll(); } [Test] public void AfterCreate_Always_SetsSpecificPropertiesToView() { // Setup + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + var failureMechanism = new MacroStabilityInwardsFailureMechanism(); - var context = new FailureMechanismSectionResultContext(failureMechanism.SectionResults, failureMechanism); + var context = new MacroStabilityInwardsFailureMechanismSectionResultContext(failureMechanism.SectionResults, failureMechanism, assessmentSection); var view = mocks.StrictMock(); view.Expect(v => v.FailureMechanism = failureMechanism); @@ -322,5 +320,26 @@ // Assert mocks.VerifyAll(); } + + [Test] + public void CreateInstance_Always_ReturnsView() + { + // Setup + var failureMechanism = new MacroStabilityInwardsFailureMechanism(); + + IAssessmentSection assessmentSection = AssessmentSectionHelper.CreateAssessmentSectionStub(failureMechanism, mocks); + mocks.ReplayAll(); + + var context = new MacroStabilityInwardsFailureMechanismSectionResultContext(failureMechanism.SectionResults, + failureMechanism, + assessmentSection); + + // Call + IView view = info.CreateInstance(context); + + // Assert + Assert.IsInstanceOf(view); + mocks.VerifyAll(); + } } } \ No newline at end of file Index: Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingFailureMechanismSection2aAssessmentResultExtensionsTest.cs =================================================================== diff -u -r271e81c620b40ebce812a9595b22ed0e4e7ce94a -rfb3c4216478c0f072cf2f1a94053e81756ced5c7 --- Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingFailureMechanismSection2aAssessmentResultExtensionsTest.cs (.../PipingFailureMechanismSection2aAssessmentResultExtensionsTest.cs) (revision 271e81c620b40ebce812a9595b22ed0e4e7ce94a) +++ Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingFailureMechanismSection2aAssessmentResultExtensionsTest.cs (.../PipingFailureMechanismSection2aAssessmentResultExtensionsTest.cs) (revision fb3c4216478c0f072cf2f1a94053e81756ced5c7) @@ -187,7 +187,6 @@ var failureMechanism = new PipingFailureMechanism(); - FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); var failureMechanismSectionResult = new PipingFailureMechanismSectionResult(section); Index: Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/PresentationObjects/PipingFailureMechanismSectionResultContextTest.cs =================================================================== diff -u -rf4c4fe2feedd73d2f45395017b77df2bb56d5c27 -rfb3c4216478c0f072cf2f1a94053e81756ced5c7 --- Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/PresentationObjects/PipingFailureMechanismSectionResultContextTest.cs (.../PipingFailureMechanismSectionResultContextTest.cs) (revision f4c4fe2feedd73d2f45395017b77df2bb56d5c27) +++ Ringtoets/Piping/test/Ringtoets.Piping.Forms.Test/PresentationObjects/PipingFailureMechanismSectionResultContextTest.cs (.../PipingFailureMechanismSectionResultContextTest.cs) (revision fb3c4216478c0f072cf2f1a94053e81756ced5c7) @@ -65,6 +65,7 @@ Assert.AreSame(sectionResults, context.WrappedData); Assert.AreSame(failureMechanism, context.FailureMechanism); Assert.AreSame(assessmentSection, context.AssessmentSection); + mocks.VerifyAll(); } } } \ No newline at end of file Index: Ringtoets/Piping/test/Ringtoets.Piping.Integration.Test/PipingFailureMechanismResultViewIntegrationTest.cs =================================================================== diff -u -r25244fe94c640d8b0598ee52e355a320efb66512 -rfb3c4216478c0f072cf2f1a94053e81756ced5c7 --- Ringtoets/Piping/test/Ringtoets.Piping.Integration.Test/PipingFailureMechanismResultViewIntegrationTest.cs (.../PipingFailureMechanismResultViewIntegrationTest.cs) (revision 25244fe94c640d8b0598ee52e355a320efb66512) +++ Ringtoets/Piping/test/Ringtoets.Piping.Integration.Test/PipingFailureMechanismResultViewIntegrationTest.cs (.../PipingFailureMechanismResultViewIntegrationTest.cs) (revision fb3c4216478c0f072cf2f1a94053e81756ced5c7) @@ -47,9 +47,9 @@ { using (var form = new Form()) { + // Show the view var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); - // Show the view var failureMechanismResultView = new PipingFailureMechanismResultView(assessmentSection); form.Controls.Add(failureMechanismResultView); form.Show(); Index: Ringtoets/Piping/test/Ringtoets.Piping.Plugin.Test/ViewInfos/PipingFailureMechanismResultViewInfoTest.cs =================================================================== diff -u -rdf44be36b5c375ff32cd94086af5e6610ec9fc3a -rfb3c4216478c0f072cf2f1a94053e81756ced5c7 --- Ringtoets/Piping/test/Ringtoets.Piping.Plugin.Test/ViewInfos/PipingFailureMechanismResultViewInfoTest.cs (.../PipingFailureMechanismResultViewInfoTest.cs) (revision df44be36b5c375ff32cd94086af5e6610ec9fc3a) +++ Ringtoets/Piping/test/Ringtoets.Piping.Plugin.Test/ViewInfos/PipingFailureMechanismResultViewInfoTest.cs (.../PipingFailureMechanismResultViewInfoTest.cs) (revision fb3c4216478c0f072cf2f1a94053e81756ced5c7) @@ -19,7 +19,6 @@ // 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; @@ -31,7 +30,6 @@ using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.FailureMechanism; using Ringtoets.Common.Data.TestUtil; -using Ringtoets.Common.Forms.PresentationObjects; using Ringtoets.Piping.Data; using Ringtoets.Piping.Forms.PresentationObjects; using Ringtoets.Piping.Forms.Views;