Index: Riskeer/Integration/test/Riskeer.Integration.IO.Test/Factories/ExportableAssemblyFactoryTest.cs =================================================================== diff -u -r080697c142dc27ec10228b365fed8e6301c8b8f3 -r30d63f2cf5c708feb8ea4b0a74ac29d65658e685 --- Riskeer/Integration/test/Riskeer.Integration.IO.Test/Factories/ExportableAssemblyFactoryTest.cs (.../ExportableAssemblyFactoryTest.cs) (revision 080697c142dc27ec10228b365fed8e6301c8b8f3) +++ Riskeer/Integration/test/Riskeer.Integration.IO.Test/Factories/ExportableAssemblyFactoryTest.cs (.../ExportableAssemblyFactoryTest.cs) (revision 30d63f2cf5c708feb8ea4b0a74ac29d65658e685) @@ -58,6 +58,7 @@ Id = id }; ReferenceLineTestFactory.SetReferenceLineGeometry(assessmentSection.ReferenceLine); + AddFailureMechanismSections(assessmentSection); using (new AssemblyToolCalculatorFactoryConfig()) { @@ -71,6 +72,28 @@ } } + private static void AddFailureMechanismSections(AssessmentSection assessmentSection) + { + var random = new Random(21); + FailureMechanismTestHelper.AddSections(assessmentSection.Piping, random.Next(1, 10)); + FailureMechanismTestHelper.AddSections(assessmentSection.MacroStabilityInwards, random.Next(1, 10)); + FailureMechanismTestHelper.AddSections(assessmentSection.GrassCoverErosionInwards, random.Next(1, 10)); + FailureMechanismTestHelper.AddSections(assessmentSection.HeightStructures, random.Next(1, 10)); + FailureMechanismTestHelper.AddSections(assessmentSection.ClosingStructures, random.Next(1, 10)); + FailureMechanismTestHelper.AddSections(assessmentSection.StabilityPointStructures, random.Next(1, 10)); + + FailureMechanismTestHelper.AddSections(assessmentSection.StabilityStoneCover, random.Next(1, 10)); + FailureMechanismTestHelper.AddSections(assessmentSection.WaveImpactAsphaltCover, random.Next(1, 10)); + FailureMechanismTestHelper.AddSections(assessmentSection.GrassCoverErosionOutwards, random.Next(1, 10)); + FailureMechanismTestHelper.AddSections(assessmentSection.DuneErosion, random.Next(1, 10)); + + FailureMechanismTestHelper.AddSections(assessmentSection.Microstability, random.Next(1, 10)); + FailureMechanismTestHelper.AddSections(assessmentSection.GrassCoverSlipOffOutwards, random.Next(1, 10)); + FailureMechanismTestHelper.AddSections(assessmentSection.GrassCoverSlipOffInwards, random.Next(1, 10)); + FailureMechanismTestHelper.AddSections(assessmentSection.PipingStructure, random.Next(1, 10)); + FailureMechanismTestHelper.AddSections(assessmentSection.WaterPressureAsphaltCover, random.Next(1, 10)); + } + private static void AssertExportableAssessmentSection( IAssessmentSection assessmentSection, ExportableAssessmentSection exportableAssessmentSection) { Index: Riskeer/Integration/test/Riskeer.Integration.IO.Test/Factories/ExportableAssessmentSectionFactoryTest.cs =================================================================== diff -u -r9b32336135a84049f0b77296616370691f4cd407 -r30d63f2cf5c708feb8ea4b0a74ac29d65658e685 --- Riskeer/Integration/test/Riskeer.Integration.IO.Test/Factories/ExportableAssessmentSectionFactoryTest.cs (.../ExportableAssessmentSectionFactoryTest.cs) (revision 9b32336135a84049f0b77296616370691f4cd407) +++ Riskeer/Integration/test/Riskeer.Integration.IO.Test/Factories/ExportableAssessmentSectionFactoryTest.cs (.../ExportableAssessmentSectionFactoryTest.cs) (revision 30d63f2cf5c708feb8ea4b0a74ac29d65658e685) @@ -40,6 +40,24 @@ [TestFixture] public class ExportableAssessmentSectionFactoryTest { + private const int pipingIndex = 0; + private const int grassCoverErosionInwardsIndex = 1; + private const int macroStabilityInwardsIndex = 2; + private const int microstabilityIndex = 3; + private const int stabilityStoneCoverIndex = 4; + private const int waveImpactAsphaltCoverIndex = 5; + private const int waterPressureAsphaltCoverIndex = 6; + private const int grassCoverErosionOutwardsIndex = 7; + private const int grassCoverSlipOffOutwardsIndex = 8; + private const int grassCoverSlipOffInwardsIndex = 9; + private const int heightStructuresIndex = 10; + private const int closingStructuresIndex = 11; + private const int pipingStructureIndex = 12; + private const int stabilityPointStructuresIndex = 13; + private const int duneErosionIndex = 14; + private const int firstSpecificFailureMechanismIndex = 15; + private const int secondSpecificFailureMechanismIndex = 16; + [Test] public void CreateExportableAssessmentSection_IdGeneratorNull_ThrowsArgumentNullException() { @@ -84,26 +102,8 @@ assessmentSection.SpecificFailureMechanisms.Add(new SpecificFailureMechanism()); assessmentSection.SpecificFailureMechanisms.Add(new SpecificFailureMechanism()); - FailureMechanismTestHelper.AddSections(assessmentSection.Piping, random.Next(1, 10)); - FailureMechanismTestHelper.AddSections(assessmentSection.MacroStabilityInwards, random.Next(1, 10)); - FailureMechanismTestHelper.AddSections(assessmentSection.GrassCoverErosionInwards, random.Next(1, 10)); - FailureMechanismTestHelper.AddSections(assessmentSection.HeightStructures, random.Next(1, 10)); - FailureMechanismTestHelper.AddSections(assessmentSection.ClosingStructures, random.Next(1, 10)); - FailureMechanismTestHelper.AddSections(assessmentSection.StabilityPointStructures, random.Next(1, 10)); + AddFailureMechanismSections(assessmentSection); - FailureMechanismTestHelper.AddSections(assessmentSection.StabilityStoneCover, random.Next(1, 10)); - FailureMechanismTestHelper.AddSections(assessmentSection.WaveImpactAsphaltCover, random.Next(1, 10)); - FailureMechanismTestHelper.AddSections(assessmentSection.GrassCoverErosionOutwards, random.Next(1, 10)); - FailureMechanismTestHelper.AddSections(assessmentSection.DuneErosion, random.Next(1, 10)); - - FailureMechanismTestHelper.AddSections(assessmentSection.Microstability, random.Next(1, 10)); - FailureMechanismTestHelper.AddSections(assessmentSection.GrassCoverSlipOffOutwards, random.Next(1, 10)); - FailureMechanismTestHelper.AddSections(assessmentSection.GrassCoverSlipOffInwards, random.Next(1, 10)); - FailureMechanismTestHelper.AddSections(assessmentSection.PipingStructure, random.Next(1, 10)); - FailureMechanismTestHelper.AddSections(assessmentSection.WaterPressureAsphaltCover, random.Next(1, 10)); - FailureMechanismTestHelper.AddSections(assessmentSection.SpecificFailureMechanisms.First(), random.Next(1, 10)); - FailureMechanismTestHelper.AddSections(assessmentSection.SpecificFailureMechanisms.Last(), random.Next(1, 10)); - var idGenerator = new IdentifierGenerator(); using (new AssemblyToolCalculatorFactoryConfig()) @@ -129,12 +129,15 @@ ExportableCombinedSectionAssembly exportableCombinedSectionAssembly = exportableAssessmentSection.CombinedSectionAssemblies.ElementAt(0); Assert.AreEqual(FailureMechanismSectionAssemblyGroup.Zero, exportableCombinedSectionAssembly.AssemblyGroup); Assert.AreEqual(ExportableAssemblyMethod.BOI3C1, exportableCombinedSectionAssembly.AssemblyGroupAssemblyMethod); - Assert.AreEqual(0.0, exportableCombinedSectionAssembly.Section.StartDistance); - Assert.AreEqual(1.0, exportableCombinedSectionAssembly.Section.EndDistance); - AssertExportableFailureMechanismCombinedSectionAssemblyResults(exportableCombinedSectionAssembly.FailureMechanismResults, assessmentSection); - Assert.AreEqual(ExportableAssemblyMethod.BOI3A1, exportableCombinedSectionAssembly.Section.AssemblyMethod); - Assert.AreEqual(0.0, exportableCombinedSectionAssembly.Section.StartDistance); - Assert.AreEqual(1.0, exportableCombinedSectionAssembly.Section.EndDistance); + + ExportableCombinedFailureMechanismSection exportableCombinedFailureMechanismSection = exportableCombinedSectionAssembly.Section; + AssertExportableFailureMechanismCombinedSectionAssemblyResults(exportableCombinedFailureMechanismSection, + exportableAssessmentSection.FailureMechanisms, + exportableCombinedSectionAssembly.FailureMechanismResults); + + Assert.AreEqual(ExportableAssemblyMethod.BOI3A1, exportableCombinedFailureMechanismSection.AssemblyMethod); + Assert.AreEqual(0.0, exportableCombinedFailureMechanismSection.StartDistance); + Assert.AreEqual(1.0, exportableCombinedFailureMechanismSection.EndDistance); } } @@ -156,27 +159,8 @@ assessmentSection.SpecificFailureMechanisms.Add(new SpecificFailureMechanism()); assessmentSection.SpecificFailureMechanisms.Add(new SpecificFailureMechanism()); - FailureMechanismTestHelper.AddSections(assessmentSection.Piping, random.Next(1, 10)); - FailureMechanismTestHelper.AddSections(assessmentSection.MacroStabilityInwards, random.Next(1, 10)); - FailureMechanismTestHelper.AddSections(assessmentSection.GrassCoverErosionInwards, random.Next(1, 10)); - FailureMechanismTestHelper.AddSections(assessmentSection.HeightStructures, random.Next(1, 10)); - FailureMechanismTestHelper.AddSections(assessmentSection.ClosingStructures, random.Next(1, 10)); - FailureMechanismTestHelper.AddSections(assessmentSection.StabilityPointStructures, random.Next(1, 10)); + AddFailureMechanismSections(assessmentSection); - FailureMechanismTestHelper.AddSections(assessmentSection.StabilityStoneCover, random.Next(1, 10)); - FailureMechanismTestHelper.AddSections(assessmentSection.WaveImpactAsphaltCover, random.Next(1, 10)); - FailureMechanismTestHelper.AddSections(assessmentSection.GrassCoverErosionOutwards, random.Next(1, 10)); - FailureMechanismTestHelper.AddSections(assessmentSection.DuneErosion, random.Next(1, 10)); - - FailureMechanismTestHelper.AddSections(assessmentSection.Microstability, random.Next(1, 10)); - FailureMechanismTestHelper.AddSections(assessmentSection.GrassCoverSlipOffOutwards, random.Next(1, 10)); - FailureMechanismTestHelper.AddSections(assessmentSection.GrassCoverSlipOffInwards, random.Next(1, 10)); - FailureMechanismTestHelper.AddSections(assessmentSection.PipingStructure, random.Next(1, 10)); - FailureMechanismTestHelper.AddSections(assessmentSection.WaterPressureAsphaltCover, random.Next(1, 10)); - - FailureMechanismTestHelper.AddSections(assessmentSection.SpecificFailureMechanisms.First(), random.Next(1, 10)); - FailureMechanismTestHelper.AddSections(assessmentSection.SpecificFailureMechanisms.Last(), random.Next(1, 10)); - foreach (IFailureMechanism failureMechanism in assessmentSection.GetFailureMechanisms() .Concat(assessmentSection.SpecificFailureMechanisms)) { @@ -208,15 +192,40 @@ ExportableCombinedSectionAssembly exportableCombinedSectionAssembly = exportableAssessmentSection.CombinedSectionAssemblies.ElementAt(0); Assert.AreEqual(FailureMechanismSectionAssemblyGroup.Zero, exportableCombinedSectionAssembly.AssemblyGroup); Assert.AreEqual(ExportableAssemblyMethod.BOI3C1, exportableCombinedSectionAssembly.AssemblyGroupAssemblyMethod); - Assert.AreEqual(0.0, exportableCombinedSectionAssembly.Section.StartDistance); - Assert.AreEqual(1.0, exportableCombinedSectionAssembly.Section.EndDistance); + CollectionAssert.IsEmpty(exportableCombinedSectionAssembly.FailureMechanismResults); - Assert.AreEqual(ExportableAssemblyMethod.BOI3A1, exportableCombinedSectionAssembly.Section.AssemblyMethod); - Assert.AreEqual(0.0, exportableCombinedSectionAssembly.Section.StartDistance); - Assert.AreEqual(1.0, exportableCombinedSectionAssembly.Section.EndDistance); + + ExportableCombinedFailureMechanismSection exportableCombinedFailureMechanismSection = exportableCombinedSectionAssembly.Section; + Assert.AreEqual(ExportableAssemblyMethod.BOI3A1, exportableCombinedFailureMechanismSection.AssemblyMethod); + Assert.AreEqual(0.0, exportableCombinedFailureMechanismSection.StartDistance); + Assert.AreEqual(1.0, exportableCombinedFailureMechanismSection.EndDistance); } } + private static void AddFailureMechanismSections(AssessmentSection assessmentSection) + { + var random = new Random(21); + FailureMechanismTestHelper.AddSections(assessmentSection.Piping, random.Next(1, 10)); + FailureMechanismTestHelper.AddSections(assessmentSection.MacroStabilityInwards, random.Next(1, 10)); + FailureMechanismTestHelper.AddSections(assessmentSection.GrassCoverErosionInwards, random.Next(1, 10)); + FailureMechanismTestHelper.AddSections(assessmentSection.HeightStructures, random.Next(1, 10)); + FailureMechanismTestHelper.AddSections(assessmentSection.ClosingStructures, random.Next(1, 10)); + FailureMechanismTestHelper.AddSections(assessmentSection.StabilityPointStructures, random.Next(1, 10)); + + FailureMechanismTestHelper.AddSections(assessmentSection.StabilityStoneCover, random.Next(1, 10)); + FailureMechanismTestHelper.AddSections(assessmentSection.WaveImpactAsphaltCover, random.Next(1, 10)); + FailureMechanismTestHelper.AddSections(assessmentSection.GrassCoverErosionOutwards, random.Next(1, 10)); + FailureMechanismTestHelper.AddSections(assessmentSection.DuneErosion, random.Next(1, 10)); + + FailureMechanismTestHelper.AddSections(assessmentSection.Microstability, random.Next(1, 10)); + FailureMechanismTestHelper.AddSections(assessmentSection.GrassCoverSlipOffOutwards, random.Next(1, 10)); + FailureMechanismTestHelper.AddSections(assessmentSection.GrassCoverSlipOffInwards, random.Next(1, 10)); + FailureMechanismTestHelper.AddSections(assessmentSection.PipingStructure, random.Next(1, 10)); + FailureMechanismTestHelper.AddSections(assessmentSection.WaterPressureAsphaltCover, random.Next(1, 10)); + FailureMechanismTestHelper.AddSections(assessmentSection.SpecificFailureMechanisms.First(), random.Next(1, 10)); + FailureMechanismTestHelper.AddSections(assessmentSection.SpecificFailureMechanisms.Last(), random.Next(1, 10)); + } + private static void AssertExportableFailureMechanismSectionCollections( AssessmentSection assessmentSection, IEnumerable failureMechanismSectionCollections) { @@ -247,55 +256,55 @@ Assert.AreEqual(17, exportableFailureMechanisms.Count()); AssertExportableGenericFailureMechanism(assessmentSection.Piping, - (ExportableGenericFailureMechanism) exportableFailureMechanisms.ElementAt(0)); + (ExportableGenericFailureMechanism) exportableFailureMechanisms.ElementAt(pipingIndex)); AssertExportableGenericFailureMechanism(assessmentSection.GrassCoverErosionInwards, - (ExportableGenericFailureMechanism) exportableFailureMechanisms.ElementAt(1)); + (ExportableGenericFailureMechanism) exportableFailureMechanisms.ElementAt(grassCoverErosionInwardsIndex)); AssertExportableGenericFailureMechanism(assessmentSection.MacroStabilityInwards, - (ExportableGenericFailureMechanism) exportableFailureMechanisms.ElementAt(2)); + (ExportableGenericFailureMechanism) exportableFailureMechanisms.ElementAt(macroStabilityInwardsIndex)); AssertExportableGenericFailureMechanism(assessmentSection.Microstability, - (ExportableGenericFailureMechanism) exportableFailureMechanisms.ElementAt(3)); + (ExportableGenericFailureMechanism) exportableFailureMechanisms.ElementAt(microstabilityIndex)); AssertExportableGenericFailureMechanism(assessmentSection.StabilityStoneCover, - (ExportableGenericFailureMechanism) exportableFailureMechanisms.ElementAt(4)); + (ExportableGenericFailureMechanism) exportableFailureMechanisms.ElementAt(stabilityStoneCoverIndex)); AssertExportableGenericFailureMechanism(assessmentSection.WaveImpactAsphaltCover, - (ExportableGenericFailureMechanism) exportableFailureMechanisms.ElementAt(5)); + (ExportableGenericFailureMechanism) exportableFailureMechanisms.ElementAt(waveImpactAsphaltCoverIndex)); AssertExportableGenericFailureMechanism(assessmentSection.WaterPressureAsphaltCover, - (ExportableGenericFailureMechanism) exportableFailureMechanisms.ElementAt(6)); + (ExportableGenericFailureMechanism) exportableFailureMechanisms.ElementAt(waterPressureAsphaltCoverIndex)); AssertExportableGenericFailureMechanism(assessmentSection.GrassCoverErosionOutwards, - (ExportableGenericFailureMechanism) exportableFailureMechanisms.ElementAt(7)); + (ExportableGenericFailureMechanism) exportableFailureMechanisms.ElementAt(grassCoverErosionOutwardsIndex)); AssertExportableGenericFailureMechanism(assessmentSection.GrassCoverSlipOffOutwards, - (ExportableGenericFailureMechanism) exportableFailureMechanisms.ElementAt(8)); + (ExportableGenericFailureMechanism) exportableFailureMechanisms.ElementAt(grassCoverSlipOffOutwardsIndex)); AssertExportableGenericFailureMechanism(assessmentSection.GrassCoverSlipOffInwards, - (ExportableGenericFailureMechanism) exportableFailureMechanisms.ElementAt(9)); + (ExportableGenericFailureMechanism) exportableFailureMechanisms.ElementAt(grassCoverSlipOffInwardsIndex)); AssertExportableGenericFailureMechanism(assessmentSection.HeightStructures, - (ExportableGenericFailureMechanism) exportableFailureMechanisms.ElementAt(10)); + (ExportableGenericFailureMechanism) exportableFailureMechanisms.ElementAt(heightStructuresIndex)); AssertExportableGenericFailureMechanism(assessmentSection.ClosingStructures, - (ExportableGenericFailureMechanism) exportableFailureMechanisms.ElementAt(11)); + (ExportableGenericFailureMechanism) exportableFailureMechanisms.ElementAt(closingStructuresIndex)); AssertExportableGenericFailureMechanism(assessmentSection.PipingStructure, - (ExportableGenericFailureMechanism) exportableFailureMechanisms.ElementAt(12)); + (ExportableGenericFailureMechanism) exportableFailureMechanisms.ElementAt(pipingStructureIndex)); AssertExportableGenericFailureMechanism(assessmentSection.StabilityPointStructures, - (ExportableGenericFailureMechanism) exportableFailureMechanisms.ElementAt(13)); + (ExportableGenericFailureMechanism) exportableFailureMechanisms.ElementAt(stabilityPointStructuresIndex)); AssertExportableGenericFailureMechanism(assessmentSection.DuneErosion, - (ExportableGenericFailureMechanism) exportableFailureMechanisms.ElementAt(14)); + (ExportableGenericFailureMechanism) exportableFailureMechanisms.ElementAt(duneErosionIndex)); AssertExportableSpecificFailureMechanism(assessmentSection.SpecificFailureMechanisms.First(), - (ExportableSpecificFailureMechanism) exportableFailureMechanisms.ElementAt(15)); + (ExportableSpecificFailureMechanism) exportableFailureMechanisms.ElementAt(firstSpecificFailureMechanismIndex)); AssertExportableSpecificFailureMechanism(assessmentSection.SpecificFailureMechanisms.Last(), - (ExportableSpecificFailureMechanism) exportableFailureMechanisms.ElementAt(16)); + (ExportableSpecificFailureMechanism) exportableFailureMechanisms.ElementAt(secondSpecificFailureMechanismIndex)); } private static void AssertExportableGenericFailureMechanism(IFailureMechanism failureMechanism, @@ -324,68 +333,107 @@ Assert.AreEqual(failureMechanism.SectionResults.Count(), actualExportableFailureMechanism.SectionAssemblyResults.Count()); } - private static void AssertExportableFailureMechanismCombinedSectionAssemblyResults(IEnumerable exportableFailureMechanismCombinedSectionAssemblyResults, - AssessmentSection assessmentSection) + private static void AssertExportableFailureMechanismCombinedSectionAssemblyResults( + ExportableCombinedFailureMechanismSection combinedFailureMechanismSection, IEnumerable exportableFailureMechanisms, + IEnumerable exportableFailureMechanismCombinedSectionAssemblyResults) { Assert.AreEqual(17, exportableFailureMechanismCombinedSectionAssemblyResults.Count()); - AssertExportableFailureMechanismCombinedSectionAssemblyResult(assessmentSection.Piping, - exportableFailureMechanismCombinedSectionAssemblyResults.ElementAt(0)); + AssertExportableFailureMechanismCombinedSectionAssemblyResult( + combinedFailureMechanismSection, exportableFailureMechanisms.ElementAt(pipingIndex).SectionAssemblyResults, + exportableFailureMechanismCombinedSectionAssemblyResults.ElementAt(pipingIndex)); - AssertExportableFailureMechanismCombinedSectionAssemblyResult(assessmentSection.GrassCoverErosionInwards, - exportableFailureMechanismCombinedSectionAssemblyResults.ElementAt(1)); + AssertExportableFailureMechanismCombinedSectionAssemblyResult( + combinedFailureMechanismSection, exportableFailureMechanisms.ElementAt(grassCoverErosionInwardsIndex).SectionAssemblyResults, + exportableFailureMechanismCombinedSectionAssemblyResults.ElementAt(grassCoverErosionInwardsIndex)); - AssertExportableFailureMechanismCombinedSectionAssemblyResult(assessmentSection.MacroStabilityInwards, - exportableFailureMechanismCombinedSectionAssemblyResults.ElementAt(2)); + AssertExportableFailureMechanismCombinedSectionAssemblyResult( + combinedFailureMechanismSection, exportableFailureMechanisms.ElementAt(macroStabilityInwardsIndex).SectionAssemblyResults, + exportableFailureMechanismCombinedSectionAssemblyResults.ElementAt(macroStabilityInwardsIndex)); - AssertExportableFailureMechanismCombinedSectionAssemblyResult(assessmentSection.Microstability, - exportableFailureMechanismCombinedSectionAssemblyResults.ElementAt(3)); + AssertExportableFailureMechanismCombinedSectionAssemblyResult( + combinedFailureMechanismSection, exportableFailureMechanisms.ElementAt(microstabilityIndex).SectionAssemblyResults, + exportableFailureMechanismCombinedSectionAssemblyResults.ElementAt(microstabilityIndex)); - AssertExportableFailureMechanismCombinedSectionAssemblyResult(assessmentSection.StabilityStoneCover, - exportableFailureMechanismCombinedSectionAssemblyResults.ElementAt(4)); + AssertExportableFailureMechanismCombinedSectionAssemblyResult( + combinedFailureMechanismSection, exportableFailureMechanisms.ElementAt(stabilityStoneCoverIndex).SectionAssemblyResults, + exportableFailureMechanismCombinedSectionAssemblyResults.ElementAt(stabilityStoneCoverIndex)); - AssertExportableFailureMechanismCombinedSectionAssemblyResult(assessmentSection.WaveImpactAsphaltCover, - exportableFailureMechanismCombinedSectionAssemblyResults.ElementAt(5)); + AssertExportableFailureMechanismCombinedSectionAssemblyResult( + combinedFailureMechanismSection, exportableFailureMechanisms.ElementAt(waveImpactAsphaltCoverIndex).SectionAssemblyResults, + exportableFailureMechanismCombinedSectionAssemblyResults.ElementAt(waveImpactAsphaltCoverIndex)); - AssertExportableFailureMechanismCombinedSectionAssemblyResult(assessmentSection.WaterPressureAsphaltCover, - exportableFailureMechanismCombinedSectionAssemblyResults.ElementAt(6)); + AssertExportableFailureMechanismCombinedSectionAssemblyResult( + combinedFailureMechanismSection, exportableFailureMechanisms.ElementAt(waterPressureAsphaltCoverIndex).SectionAssemblyResults, + exportableFailureMechanismCombinedSectionAssemblyResults.ElementAt(waterPressureAsphaltCoverIndex)); - AssertExportableFailureMechanismCombinedSectionAssemblyResult(assessmentSection.GrassCoverErosionOutwards, - exportableFailureMechanismCombinedSectionAssemblyResults.ElementAt(7)); + AssertExportableFailureMechanismCombinedSectionAssemblyResult( + combinedFailureMechanismSection, exportableFailureMechanisms.ElementAt(grassCoverErosionOutwardsIndex).SectionAssemblyResults, + exportableFailureMechanismCombinedSectionAssemblyResults.ElementAt(grassCoverErosionOutwardsIndex)); - AssertExportableFailureMechanismCombinedSectionAssemblyResult(assessmentSection.GrassCoverSlipOffOutwards, - exportableFailureMechanismCombinedSectionAssemblyResults.ElementAt(8)); + AssertExportableFailureMechanismCombinedSectionAssemblyResult( + combinedFailureMechanismSection, exportableFailureMechanisms.ElementAt(grassCoverSlipOffOutwardsIndex).SectionAssemblyResults, + exportableFailureMechanismCombinedSectionAssemblyResults.ElementAt(grassCoverSlipOffOutwardsIndex)); - AssertExportableFailureMechanismCombinedSectionAssemblyResult(assessmentSection.GrassCoverSlipOffInwards, - exportableFailureMechanismCombinedSectionAssemblyResults.ElementAt(9)); + AssertExportableFailureMechanismCombinedSectionAssemblyResult( + combinedFailureMechanismSection, exportableFailureMechanisms.ElementAt(grassCoverSlipOffInwardsIndex).SectionAssemblyResults, + exportableFailureMechanismCombinedSectionAssemblyResults.ElementAt(grassCoverSlipOffInwardsIndex)); - AssertExportableFailureMechanismCombinedSectionAssemblyResult(assessmentSection.HeightStructures, - exportableFailureMechanismCombinedSectionAssemblyResults.ElementAt(10)); + AssertExportableFailureMechanismCombinedSectionAssemblyResult( + combinedFailureMechanismSection, exportableFailureMechanisms.ElementAt(heightStructuresIndex).SectionAssemblyResults, + exportableFailureMechanismCombinedSectionAssemblyResults.ElementAt(heightStructuresIndex)); - AssertExportableFailureMechanismCombinedSectionAssemblyResult(assessmentSection.ClosingStructures, - exportableFailureMechanismCombinedSectionAssemblyResults.ElementAt(11)); + AssertExportableFailureMechanismCombinedSectionAssemblyResult( + combinedFailureMechanismSection, exportableFailureMechanisms.ElementAt(closingStructuresIndex).SectionAssemblyResults, + exportableFailureMechanismCombinedSectionAssemblyResults.ElementAt(closingStructuresIndex)); - AssertExportableFailureMechanismCombinedSectionAssemblyResult(assessmentSection.PipingStructure, - exportableFailureMechanismCombinedSectionAssemblyResults.ElementAt(12)); + AssertExportableFailureMechanismCombinedSectionAssemblyResult( + combinedFailureMechanismSection, exportableFailureMechanisms.ElementAt(pipingStructureIndex).SectionAssemblyResults, + exportableFailureMechanismCombinedSectionAssemblyResults.ElementAt(pipingStructureIndex)); - AssertExportableFailureMechanismCombinedSectionAssemblyResult(assessmentSection.StabilityPointStructures, - exportableFailureMechanismCombinedSectionAssemblyResults.ElementAt(13)); + AssertExportableFailureMechanismCombinedSectionAssemblyResult( + combinedFailureMechanismSection, exportableFailureMechanisms.ElementAt(stabilityPointStructuresIndex).SectionAssemblyResults, + exportableFailureMechanismCombinedSectionAssemblyResults.ElementAt(stabilityPointStructuresIndex)); - AssertExportableFailureMechanismCombinedSectionAssemblyResult(assessmentSection.DuneErosion, - exportableFailureMechanismCombinedSectionAssemblyResults.ElementAt(14)); + AssertExportableFailureMechanismCombinedSectionAssemblyResult( + combinedFailureMechanismSection, exportableFailureMechanisms.ElementAt(duneErosionIndex).SectionAssemblyResults, + exportableFailureMechanismCombinedSectionAssemblyResults.ElementAt(duneErosionIndex)); - AssertExportableFailureMechanismCombinedSectionAssemblyResult(assessmentSection.SpecificFailureMechanisms.First(), - exportableFailureMechanismCombinedSectionAssemblyResults.ElementAt(15)); + AssertExportableFailureMechanismCombinedSectionAssemblyResult( + combinedFailureMechanismSection, exportableFailureMechanisms.ElementAt(firstSpecificFailureMechanismIndex).SectionAssemblyResults, + exportableFailureMechanismCombinedSectionAssemblyResults.ElementAt(firstSpecificFailureMechanismIndex)); - AssertExportableFailureMechanismCombinedSectionAssemblyResult(assessmentSection.SpecificFailureMechanisms.Last(), - exportableFailureMechanismCombinedSectionAssemblyResults.ElementAt(16)); + AssertExportableFailureMechanismCombinedSectionAssemblyResult( + combinedFailureMechanismSection, exportableFailureMechanisms.ElementAt(secondSpecificFailureMechanismIndex).SectionAssemblyResults, + exportableFailureMechanismCombinedSectionAssemblyResults.ElementAt(secondSpecificFailureMechanismIndex)); } - private static void AssertExportableFailureMechanismCombinedSectionAssemblyResult(IFailureMechanism failureMechanism, - ExportableFailureMechanismCombinedSectionAssemblyResult actualExportableFailureMechanismCombinedSectionAssemblyResult) + private static void AssertExportableFailureMechanismCombinedSectionAssemblyResult( + ExportableCombinedFailureMechanismSection combinedFailureMechanismSectionAssembly, + IEnumerable failureMechanismSectionAssemblyResults, + ExportableFailureMechanismCombinedSectionAssemblyResult actualExportableFailureMechanismCombinedSectionAssemblyResult) { + ExportableFailureMechanismSectionAssemblyResult associatedAssemblyResult = GetCorrespondingSectionAssemblyResultResult(combinedFailureMechanismSectionAssembly, failureMechanismSectionAssemblyResults); + Assert.AreSame(associatedAssemblyResult, actualExportableFailureMechanismCombinedSectionAssemblyResult.FailureMechanismSectionResult); Assert.AreEqual(FailureMechanismSectionAssemblyGroup.Dominant, actualExportableFailureMechanismCombinedSectionAssemblyResult.AssemblyGroup); Assert.AreEqual(ExportableAssemblyMethod.BOI3B1, actualExportableFailureMechanismCombinedSectionAssemblyResult.AssemblyMethod); } + + private static ExportableFailureMechanismSectionAssemblyResult GetCorrespondingSectionAssemblyResultResult( + ExportableCombinedFailureMechanismSection combinedFailureMechanismSection, + IEnumerable sectionAssemblyResults) + { + foreach (ExportableFailureMechanismSectionAssemblyResult assemblyResult in sectionAssemblyResults) + { + ExportableFailureMechanismSection exportableFailureMechanismSection = assemblyResult.FailureMechanismSection; + if (combinedFailureMechanismSection.StartDistance >= exportableFailureMechanismSection.StartDistance + && combinedFailureMechanismSection.EndDistance <= exportableFailureMechanismSection.EndDistance) + { + return assemblyResult; + } + } + + throw new Exception("Match not found"); + } } } \ No newline at end of file Index: Riskeer/Integration/test/Riskeer.Integration.IO.Test/test-data/AssemblyExporter/ExpectedGml.gml =================================================================== diff -u -rb25d71c274bf802dc8dd9fce8c69fd8263f7c054 -r30d63f2cf5c708feb8ea4b0a74ac29d65658e685 --- Riskeer/Integration/test/Riskeer.Integration.IO.Test/test-data/AssemblyExporter/ExpectedGml.gml (.../ExpectedGml.gml) (revision b25d71c274bf802dc8dd9fce8c69fd8263f7c054) +++ Riskeer/Integration/test/Riskeer.Integration.IO.Test/test-data/AssemblyExporter/ExpectedGml.gml (.../ExpectedGml.gml) (revision 30d63f2cf5c708feb8ea4b0a74ac29d65658e685) @@ -539,7 +539,7 @@ +II BOI-3B-1 VOLLDG - + @@ -548,7 +548,7 @@ +II BOI-3B-1 VOLLDG - + @@ -557,7 +557,7 @@ +II BOI-3B-1 VOLLDG - + @@ -566,7 +566,7 @@ +II BOI-3B-1 VOLLDG - + @@ -575,7 +575,7 @@ +II BOI-3B-1 VOLLDG - + @@ -584,7 +584,7 @@ +II BOI-3B-1 VOLLDG - + @@ -593,7 +593,7 @@ +II BOI-3B-1 VOLLDG - + @@ -602,7 +602,7 @@ +II BOI-3B-1 VOLLDG - + @@ -611,7 +611,7 @@ +II BOI-3B-1 VOLLDG - + @@ -620,7 +620,7 @@ +II BOI-3B-1 VOLLDG - + @@ -629,7 +629,7 @@ +II BOI-3B-1 VOLLDG - + @@ -638,7 +638,7 @@ +II BOI-3B-1 VOLLDG - + @@ -647,7 +647,7 @@ +II BOI-3B-1 VOLLDG - + @@ -656,7 +656,7 @@ +II BOI-3B-1 VOLLDG - + @@ -665,7 +665,7 @@ +II BOI-3B-1 VOLLDG - + @@ -674,7 +674,7 @@ +II BOI-3B-1 VOLLDG - + @@ -692,7 +692,7 @@ +III BOI-3B-1 VOLLDG - + @@ -701,7 +701,7 @@ +III BOI-3B-1 VOLLDG - + @@ -710,7 +710,7 @@ +III BOI-3B-1 VOLLDG - + @@ -719,7 +719,7 @@ +III BOI-3B-1 VOLLDG - + @@ -728,7 +728,7 @@ +III BOI-3B-1 VOLLDG - + @@ -737,7 +737,7 @@ +III BOI-3B-1 VOLLDG - + @@ -746,7 +746,7 @@ +III BOI-3B-1 VOLLDG - + @@ -755,7 +755,7 @@ +III BOI-3B-1 VOLLDG - + @@ -764,7 +764,7 @@ +III BOI-3B-1 VOLLDG - + @@ -773,7 +773,7 @@ +III BOI-3B-1 VOLLDG - + @@ -782,7 +782,7 @@ +III BOI-3B-1 VOLLDG - + @@ -791,7 +791,7 @@ +III BOI-3B-1 VOLLDG - + @@ -800,7 +800,7 @@ +III BOI-3B-1 VOLLDG - + @@ -809,7 +809,7 @@ +III BOI-3B-1 VOLLDG - + @@ -818,7 +818,7 @@ +III BOI-3B-1 VOLLDG - + @@ -827,7 +827,7 @@ +III BOI-3B-1 VOLLDG - +