Index: Riskeer/Integration/src/Riskeer.Integration.Data/Merge/AssessmentSectionMergeData.cs =================================================================== diff -u -rc36b47c2e1e8cf948767cca33f80ad735f370ad0 -ra0404ba256ba7bc2184c57d04237c98718c272b4 --- Riskeer/Integration/src/Riskeer.Integration.Data/Merge/AssessmentSectionMergeData.cs (.../AssessmentSectionMergeData.cs) (revision c36b47c2e1e8cf948767cca33f80ad735f370ad0) +++ Riskeer/Integration/src/Riskeer.Integration.Data/Merge/AssessmentSectionMergeData.cs (.../AssessmentSectionMergeData.cs) (revision a0404ba256ba7bc2184c57d04237c98718c272b4) @@ -20,6 +20,8 @@ // All rights reserved. using System; +using System.Collections.Generic; +using Riskeer.Common.Data.AssessmentSection; namespace Riskeer.Integration.Data.Merge { @@ -35,6 +37,7 @@ /// The container of the properties for the /// . /// Thrown when any parameter is null. + /// Thrown when is null. public AssessmentSectionMergeData(AssessmentSection assessmentSection, ConstructionProperties properties) { @@ -48,6 +51,11 @@ throw new ArgumentNullException(nameof(properties)); } + if (properties.MergeFailurePaths == null) + { + throw new ArgumentException("MergeFailurePaths must be set"); + } + AssessmentSection = assessmentSection; MergePiping = properties.MergePiping; @@ -68,6 +76,7 @@ MergeStrengthStabilityLengthwiseConstruction = properties.MergeStrengthStabilityLengthwiseConstruction; MergeDuneErosion = properties.MergeDuneErosion; MergeTechnicalInnovation = properties.MergeTechnicalInnovation; + MergeFailurePaths = properties.MergeFailurePaths; } /// @@ -166,6 +175,11 @@ public bool MergeTechnicalInnovation { get; } /// + /// Gets the collection of failure paths that should be merged. + /// + public IEnumerable MergeFailurePaths { get; } + + /// /// Container for properties for constructing an . /// public class ConstructionProperties @@ -259,6 +273,11 @@ /// Gets or sets the indicator whether technical innovation should be merged. /// public bool MergeTechnicalInnovation { internal get; set; } + + /// + /// Gets or sets the collection of failure paths that should be merged. + /// + public IEnumerable MergeFailurePaths { internal get; set; } } } } \ No newline at end of file Index: Riskeer/Integration/src/Riskeer.Integration.Forms/Merge/AssessmentSectionMergeDataProviderDialog.cs =================================================================== diff -u -rc955304a80f98036956cb8159e87efd406723894 -ra0404ba256ba7bc2184c57d04237c98718c272b4 --- Riskeer/Integration/src/Riskeer.Integration.Forms/Merge/AssessmentSectionMergeDataProviderDialog.cs (.../AssessmentSectionMergeDataProviderDialog.cs) (revision c955304a80f98036956cb8159e87efd406723894) +++ Riskeer/Integration/src/Riskeer.Integration.Forms/Merge/AssessmentSectionMergeDataProviderDialog.cs (.../AssessmentSectionMergeDataProviderDialog.cs) (revision a0404ba256ba7bc2184c57d04237c98718c272b4) @@ -25,6 +25,7 @@ using System.Windows.Forms; using Core.Common.Controls.Dialogs; using Riskeer.ClosingStructures.Data; +using Riskeer.Common.Data.AssessmentSection; using Riskeer.Common.Data.FailureMechanism; using Riskeer.DuneErosion.Data; using Riskeer.GrassCoverErosionInwards.Data; @@ -101,7 +102,8 @@ MergeStabilityPointStructures = FailureMechanismIsSelectedToMerge(), MergeStrengthStabilityLengthwiseConstruction = FailureMechanismIsSelectedToMerge(), MergeDuneErosion = FailureMechanismIsSelectedToMerge(), - MergeTechnicalInnovation = FailureMechanismIsSelectedToMerge() + MergeTechnicalInnovation = FailureMechanismIsSelectedToMerge(), + MergeFailurePaths = Enumerable.Empty() }; return new AssessmentSectionMergeData((AssessmentSection) assessmentSectionComboBox.SelectedItem, Index: Riskeer/Integration/test/Riskeer.Integration.Data.Test/Merge/AssessmentSectionMergeDataTest.cs =================================================================== diff -u -rc36b47c2e1e8cf948767cca33f80ad735f370ad0 -ra0404ba256ba7bc2184c57d04237c98718c272b4 --- Riskeer/Integration/test/Riskeer.Integration.Data.Test/Merge/AssessmentSectionMergeDataTest.cs (.../AssessmentSectionMergeDataTest.cs) (revision c36b47c2e1e8cf948767cca33f80ad735f370ad0) +++ Riskeer/Integration/test/Riskeer.Integration.Data.Test/Merge/AssessmentSectionMergeDataTest.cs (.../AssessmentSectionMergeDataTest.cs) (revision a0404ba256ba7bc2184c57d04237c98718c272b4) @@ -20,6 +20,8 @@ // All rights reserved. using System; +using System.Collections.Generic; +using System.Linq; using Core.Common.TestUtil; using NUnit.Framework; using Riskeer.Common.Data.AssessmentSection; @@ -34,21 +36,21 @@ public void Constructor_AssessmentSectionNull_ThrowsArgumentNullException() { // Call - TestDelegate call = () => new AssessmentSectionMergeData(null, new AssessmentSectionMergeData.ConstructionProperties()); + void Call() => new AssessmentSectionMergeData(null, new AssessmentSectionMergeData.ConstructionProperties()); // Assert - var exception = Assert.Throws(call); + var exception = Assert.Throws(Call); Assert.AreEqual("assessmentSection", exception.ParamName); } [Test] public void Constructor_PropertiesNull_ThrowsArgumentNullException() { // Call - TestDelegate call = () => new AssessmentSectionMergeData(new AssessmentSection(AssessmentSectionComposition.Dike), null); + void Call() => new AssessmentSectionMergeData(new AssessmentSection(AssessmentSectionComposition.Dike), null); // Assert - var exception = Assert.Throws(call); + var exception = Assert.Throws(Call); Assert.AreEqual("properties", exception.ParamName); } @@ -59,7 +61,11 @@ var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); // Call - var mergeData = new AssessmentSectionMergeData(assessmentSection, new AssessmentSectionMergeData.ConstructionProperties()); + var mergeData = new AssessmentSectionMergeData(assessmentSection, + new AssessmentSectionMergeData.ConstructionProperties + { + MergeFailurePaths = Enumerable.Empty() + }); // Assert Assert.AreSame(assessmentSection, mergeData.AssessmentSection); @@ -90,6 +96,7 @@ var random = new Random(21); var assessmentSection = new AssessmentSection(AssessmentSectionComposition.Dike); + IEnumerable failurePaths = Enumerable.Empty(); var constructionProperties = new AssessmentSectionMergeData.ConstructionProperties { MergePiping = random.NextBoolean(), @@ -109,7 +116,8 @@ MergeStabilityPointStructures = random.NextBoolean(), MergeStrengthStabilityLengthwiseConstruction = random.NextBoolean(), MergeDuneErosion = random.NextBoolean(), - MergeTechnicalInnovation = random.NextBoolean() + MergeTechnicalInnovation = random.NextBoolean(), + MergeFailurePaths = failurePaths }; // Call @@ -135,6 +143,19 @@ Assert.AreEqual(constructionProperties.MergeStrengthStabilityLengthwiseConstruction, mergeData.MergeStrengthStabilityLengthwiseConstruction); Assert.AreEqual(constructionProperties.MergeDuneErosion, mergeData.MergeDuneErosion); Assert.AreEqual(constructionProperties.MergeTechnicalInnovation, mergeData.MergeTechnicalInnovation); + Assert.AreSame(constructionProperties.MergeFailurePaths, mergeData.MergeFailurePaths); } + + [Test] + public void Constructor_MergeFailurePathsNull_ThrowsArgumentException() + { + // Call + void Call() => new AssessmentSectionMergeData(new AssessmentSection(AssessmentSectionComposition.Dike), + new AssessmentSectionMergeData.ConstructionProperties()); + + // Assert + const string expectedMessage = "MergeFailurePaths must be set"; + TestHelper.AssertThrowsArgumentExceptionAndTestMessage(Call, expectedMessage); + } } } \ No newline at end of file