Index: Riskeer/MacroStabilityInwards/src/Riskeer.MacroStabilityInwards.Data/MacroStabilityInwardsFailureMechanism.cs =================================================================== diff -u -r6a29395620a9ccb1c1e96767f8a137848ae8900a -r8db230c43dee4e0c11b63d77a4bbe61b5ca235a5 --- Riskeer/MacroStabilityInwards/src/Riskeer.MacroStabilityInwards.Data/MacroStabilityInwardsFailureMechanism.cs (.../MacroStabilityInwardsFailureMechanism.cs) (revision 6a29395620a9ccb1c1e96767f8a137848ae8900a) +++ Riskeer/MacroStabilityInwards/src/Riskeer.MacroStabilityInwards.Data/MacroStabilityInwardsFailureMechanism.cs (.../MacroStabilityInwardsFailureMechanism.cs) (revision 8db230c43dee4e0c11b63d77a4bbe61b5ca235a5) @@ -20,6 +20,7 @@ // All rights reserved. using System.Collections.Generic; +using Core.Common.Base; using Riskeer.Common.Data; using Riskeer.Common.Data.Calculation; using Riskeer.Common.Data.FailureMechanism; @@ -36,6 +37,8 @@ public class MacroStabilityInwardsFailureMechanism : FailureMechanismBase, ICalculatableFailureMechanism { + private readonly ObservableList scenarioConfigurationsPerFailureMechanismSection; + /// /// Creates a new instance of . /// @@ -51,6 +54,8 @@ Name = RiskeerCommonDataResources.FailureMechanism_Calculations_DisplayName }; CalculationsInputComments = new Comment(); + + scenarioConfigurationsPerFailureMechanismSection = new ObservableList(); } /// @@ -74,10 +79,28 @@ /// public ProbabilityAssessmentInput ProbabilityAssessmentInput { get; } + /// + /// Gets an of . + /// + public IObservableEnumerable ScenarioConfigurationsPerFailureMechanismSection => + scenarioConfigurationsPerFailureMechanismSection; + public IEnumerable Calculations => CalculationsGroup.GetCalculations(); public CalculationGroup CalculationsGroup { get; } public Comment CalculationsInputComments { get; } + + protected override void AddSectionDependentData(FailureMechanismSection section) + { + base.AddSectionDependentData(section); + scenarioConfigurationsPerFailureMechanismSection.Add(new MacroStabilityInwardsScenarioConfigurationPerFailureMechanismSection(section)); + } + + protected override void ClearSectionDependentData() + { + base.ClearSectionDependentData(); + scenarioConfigurationsPerFailureMechanismSection.Clear(); + } } } \ No newline at end of file Index: Riskeer/MacroStabilityInwards/test/Riskeer.MacroStabilityInwards.Data.Test/MacroStabilityInwardsFailureMechanismTest.cs =================================================================== diff -u -r6a29395620a9ccb1c1e96767f8a137848ae8900a -r8db230c43dee4e0c11b63d77a4bbe61b5ca235a5 --- Riskeer/MacroStabilityInwards/test/Riskeer.MacroStabilityInwards.Data.Test/MacroStabilityInwardsFailureMechanismTest.cs (.../MacroStabilityInwardsFailureMechanismTest.cs) (revision 6a29395620a9ccb1c1e96767f8a137848ae8900a) +++ Riskeer/MacroStabilityInwards/test/Riskeer.MacroStabilityInwards.Data.Test/MacroStabilityInwardsFailureMechanismTest.cs (.../MacroStabilityInwardsFailureMechanismTest.cs) (revision 8db230c43dee4e0c11b63d77a4bbe61b5ca235a5) @@ -19,10 +19,13 @@ // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. +using System.Linq; +using Core.Common.Base.Geometry; using NUnit.Framework; using Riskeer.Common.Data.Calculation; using Riskeer.Common.Data.FailureMechanism; using Riskeer.Common.Data.Probability; +using Riskeer.Common.Data.TestUtil; namespace Riskeer.MacroStabilityInwards.Data.Test { @@ -118,5 +121,56 @@ // Assert CollectionAssert.DoesNotContain(failureMechanism.CalculationsGroup.Children, folder); } + + [Test] + public void SetSections_WithSection_SetsSectionResults() + { + // Setup + var failureMechanism = new MacroStabilityInwardsFailureMechanism(); + FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); + + // Call + FailureMechanismTestHelper.SetSections(failureMechanism, new[] + { + section + }); + + // Assert + Assert.AreEqual(1, failureMechanism.Sections.Count()); + Assert.AreEqual(1, failureMechanism.SectionResults.Count()); + Assert.AreSame(section, failureMechanism.SectionResults.First().Section); + Assert.AreEqual(1, failureMechanism.ScenarioConfigurationsPerFailureMechanismSection.Count()); + Assert.AreSame(section, failureMechanism.ScenarioConfigurationsPerFailureMechanismSection.First().Section); + } + + [Test] + public void ClearAllSections_WithSectionResults_SectionResultsCleared() + { + // Setup + var failureMechanism = new MacroStabilityInwardsFailureMechanism(); + + FailureMechanismTestHelper.SetSections(failureMechanism, new[] + { + FailureMechanismSectionTestFactory.CreateFailureMechanismSection(new[] + { + new Point2D(2, 1) + }), + FailureMechanismSectionTestFactory.CreateFailureMechanismSection(new[] + { + new Point2D(2, 1) + }) + }); + + // Precondition + Assert.AreEqual(2, failureMechanism.SectionResults.Count()); + Assert.AreEqual(2, failureMechanism.ScenarioConfigurationsPerFailureMechanismSection.Count()); + + // Call + failureMechanism.ClearAllSections(); + + // Assert + CollectionAssert.IsEmpty(failureMechanism.SectionResults); + CollectionAssert.IsEmpty(failureMechanism.ScenarioConfigurationsPerFailureMechanismSection); + } } } \ No newline at end of file