Index: Riskeer/AssemblyTool/test/Riskeer.AssemblyTool.IO.TestUtil/ExportableFailureMechanismSectionTestHelper.cs =================================================================== diff -u -rf56c6e3627abb4f2399032992d4793089f86d419 -rd41d466b016e29fb8e52680f61a8cb744be378ce --- Riskeer/AssemblyTool/test/Riskeer.AssemblyTool.IO.TestUtil/ExportableFailureMechanismSectionTestHelper.cs (.../ExportableFailureMechanismSectionTestHelper.cs) (revision f56c6e3627abb4f2399032992d4793089f86d419) +++ Riskeer/AssemblyTool/test/Riskeer.AssemblyTool.IO.TestUtil/ExportableFailureMechanismSectionTestHelper.cs (.../ExportableFailureMechanismSectionTestHelper.cs) (revision d41d466b016e29fb8e52680f61a8cb744be378ce) @@ -43,7 +43,8 @@ /// /// The number of sections between and /// do not match. - /// The geometry of any the sections are not equal. + /// The geometry of the sections are not equal. + /// The id does not contain the expected value. /// public static void AssertExportableFailureMechanismSections(IEnumerable expectedSections, IEnumerable actualSections) @@ -56,6 +57,8 @@ { FailureMechanismSection expectedSection = expectedSections.ElementAt(i); ExportableFailureMechanismSection actualSection = actualSections.ElementAt(i); + + Assert.AreEqual($"Bv.{i}", actualSection.Id); double expectedEndDistance = expectedStartDistance + Math2D.Length(expectedSection.Points); Index: Riskeer/Integration/src/Riskeer.Integration.IO/Factories/ExportableAssessmentSectionFactory.cs =================================================================== diff -u -r48cf7bc97178507b34018066b407c85f7f47d3a5 -rd41d466b016e29fb8e52680f61a8cb744be378ce --- Riskeer/Integration/src/Riskeer.Integration.IO/Factories/ExportableAssessmentSectionFactory.cs (.../ExportableAssessmentSectionFactory.cs) (revision 48cf7bc97178507b34018066b407c85f7f47d3a5) +++ Riskeer/Integration/src/Riskeer.Integration.IO/Factories/ExportableAssessmentSectionFactory.cs (.../ExportableAssessmentSectionFactory.cs) (revision d41d466b016e29fb8e52680f61a8cb744be378ce) @@ -85,7 +85,7 @@ assessmentSection.ReferenceLine.Points, CreateExportableFailureMechanismSectionCollections(idGenerator, registry, assessmentSection), CreateExportableAssessmentSectionAssemblyResult(idGenerator, assessmentSection), - CreateExportableFailureMechanisms(idGenerator, assessmentSection), + CreateExportableFailureMechanisms(idGenerator, registry, assessmentSection), CreateExportableCombinedSectionAssemblyCollection(assessmentSection)); } @@ -149,73 +149,75 @@ /// for failure mechanisms that are in assembly based on . /// /// The generator to generate ids for the exportable components. + /// The to keep track of the created items. /// The assessment section to create a collection of /// with probability for. /// A collection of based on failure /// mechanisms that are in assembly. /// Thrown when assembly results cannot be created for . - private static IEnumerable CreateExportableFailureMechanisms(IdentifierGenerator idGenerator, AssessmentSection assessmentSection) + private static IEnumerable CreateExportableFailureMechanisms( + IdentifierGenerator idGenerator, ExportableModelRegistry registry, AssessmentSection assessmentSection) { var exportableFailureMechanisms = new List(); AddGenericFailureMechanismWhenInAssembly( - idGenerator, exportableFailureMechanisms, assessmentSection.Piping, assessmentSection, PipingFailureMechanismAssemblyFactory.AssembleFailureMechanism, + idGenerator, registry, exportableFailureMechanisms, assessmentSection.Piping, assessmentSection, PipingFailureMechanismAssemblyFactory.AssembleFailureMechanism, PipingFailureMechanismAssemblyFactory.AssembleSection); AddGenericFailureMechanismWhenInAssembly( - idGenerator, exportableFailureMechanisms, assessmentSection.GrassCoverErosionInwards, assessmentSection, GrassCoverErosionInwardsFailureMechanismAssemblyFactory.AssembleFailureMechanism, + idGenerator, registry, exportableFailureMechanisms, assessmentSection.GrassCoverErosionInwards, assessmentSection, GrassCoverErosionInwardsFailureMechanismAssemblyFactory.AssembleFailureMechanism, GrassCoverErosionInwardsFailureMechanismAssemblyFactory.AssembleSection); AddGenericFailureMechanismWhenInAssembly( - idGenerator, exportableFailureMechanisms, assessmentSection.MacroStabilityInwards, assessmentSection, MacroStabilityInwardsFailureMechanismAssemblyFactory.AssembleFailureMechanism, + idGenerator, registry, exportableFailureMechanisms, assessmentSection.MacroStabilityInwards, assessmentSection, MacroStabilityInwardsFailureMechanismAssemblyFactory.AssembleFailureMechanism, MacroStabilityInwardsFailureMechanismAssemblyFactory.AssembleSection); AddGenericFailureMechanismWhenInAssembly( - idGenerator, exportableFailureMechanisms, assessmentSection.Microstability, assessmentSection, FailureMechanismAssemblyFactory.AssembleFailureMechanism, + idGenerator, registry, exportableFailureMechanisms, assessmentSection.Microstability, assessmentSection, FailureMechanismAssemblyFactory.AssembleFailureMechanism, FailureMechanismAssemblyFactory.AssembleSection); AddGenericFailureMechanismWhenInAssembly( - idGenerator, exportableFailureMechanisms, assessmentSection.StabilityStoneCover, assessmentSection, StabilityStoneCoverFailureMechanismAssemblyFactory.AssembleFailureMechanism, + idGenerator, registry, exportableFailureMechanisms, assessmentSection.StabilityStoneCover, assessmentSection, StabilityStoneCoverFailureMechanismAssemblyFactory.AssembleFailureMechanism, StabilityStoneCoverFailureMechanismAssemblyFactory.AssembleSection); AddGenericFailureMechanismWhenInAssembly( - idGenerator, exportableFailureMechanisms, assessmentSection.WaveImpactAsphaltCover, assessmentSection, WaveImpactAsphaltCoverFailureMechanismAssemblyFactory.AssembleFailureMechanism, + idGenerator, registry, exportableFailureMechanisms, assessmentSection.WaveImpactAsphaltCover, assessmentSection, WaveImpactAsphaltCoverFailureMechanismAssemblyFactory.AssembleFailureMechanism, WaveImpactAsphaltCoverFailureMechanismAssemblyFactory.AssembleSection); AddGenericFailureMechanismWhenInAssembly( - idGenerator, exportableFailureMechanisms, assessmentSection.WaterPressureAsphaltCover, assessmentSection, FailureMechanismAssemblyFactory.AssembleFailureMechanism, + idGenerator, registry, exportableFailureMechanisms, assessmentSection.WaterPressureAsphaltCover, assessmentSection, FailureMechanismAssemblyFactory.AssembleFailureMechanism, FailureMechanismAssemblyFactory.AssembleSection); AddGenericFailureMechanismWhenInAssembly( - idGenerator, exportableFailureMechanisms, assessmentSection.GrassCoverErosionOutwards, assessmentSection, GrassCoverErosionOutwardsFailureMechanismAssemblyFactory.AssembleFailureMechanism, + idGenerator, registry, exportableFailureMechanisms, assessmentSection.GrassCoverErosionOutwards, assessmentSection, GrassCoverErosionOutwardsFailureMechanismAssemblyFactory.AssembleFailureMechanism, GrassCoverErosionOutwardsFailureMechanismAssemblyFactory.AssembleSection); AddGenericFailureMechanismWhenInAssembly( - idGenerator, exportableFailureMechanisms, assessmentSection.GrassCoverSlipOffOutwards, assessmentSection, FailureMechanismAssemblyFactory.AssembleFailureMechanism, + idGenerator, registry, exportableFailureMechanisms, assessmentSection.GrassCoverSlipOffOutwards, assessmentSection, FailureMechanismAssemblyFactory.AssembleFailureMechanism, FailureMechanismAssemblyFactory.AssembleSection); AddGenericFailureMechanismWhenInAssembly( - idGenerator, exportableFailureMechanisms, assessmentSection.GrassCoverSlipOffInwards, assessmentSection, FailureMechanismAssemblyFactory.AssembleFailureMechanism, + idGenerator, registry, exportableFailureMechanisms, assessmentSection.GrassCoverSlipOffInwards, assessmentSection, FailureMechanismAssemblyFactory.AssembleFailureMechanism, FailureMechanismAssemblyFactory.AssembleSection); AddGenericFailureMechanismWhenInAssembly( - idGenerator, exportableFailureMechanisms, assessmentSection.HeightStructures, assessmentSection, HeightStructuresFailureMechanismAssemblyFactory.AssembleFailureMechanism, + idGenerator, registry, exportableFailureMechanisms, assessmentSection.HeightStructures, assessmentSection, HeightStructuresFailureMechanismAssemblyFactory.AssembleFailureMechanism, StructuresFailureMechanismAssemblyFactory.AssembleSection); AddGenericFailureMechanismWhenInAssembly( - idGenerator, exportableFailureMechanisms, assessmentSection.ClosingStructures, assessmentSection, ClosingStructuresFailureMechanismAssemblyFactory.AssembleFailureMechanism, + idGenerator, registry, exportableFailureMechanisms, assessmentSection.ClosingStructures, assessmentSection, ClosingStructuresFailureMechanismAssemblyFactory.AssembleFailureMechanism, StructuresFailureMechanismAssemblyFactory.AssembleSection); AddGenericFailureMechanismWhenInAssembly( - idGenerator, exportableFailureMechanisms, assessmentSection.PipingStructure, assessmentSection, PipingStructureFailureMechanismAssemblyFactory.AssembleFailureMechanism, + idGenerator, registry, exportableFailureMechanisms, assessmentSection.PipingStructure, assessmentSection, PipingStructureFailureMechanismAssemblyFactory.AssembleFailureMechanism, (sr, fm, ass) => FailureMechanismSectionAssemblyResultFactory.AssembleSection(sr, ass)); AddGenericFailureMechanismWhenInAssembly( - idGenerator, exportableFailureMechanisms, assessmentSection.StabilityPointStructures, assessmentSection, StabilityPointStructuresFailureMechanismAssemblyFactory.AssembleFailureMechanism, + idGenerator, registry, exportableFailureMechanisms, assessmentSection.StabilityPointStructures, assessmentSection, StabilityPointStructuresFailureMechanismAssemblyFactory.AssembleFailureMechanism, StructuresFailureMechanismAssemblyFactory.AssembleSection); AddGenericFailureMechanismWhenInAssembly( - idGenerator, exportableFailureMechanisms, assessmentSection.DuneErosion, assessmentSection, DuneErosionFailureMechanismAssemblyFactory.AssembleFailureMechanism, + idGenerator, registry, exportableFailureMechanisms, assessmentSection.DuneErosion, assessmentSection, DuneErosionFailureMechanismAssemblyFactory.AssembleFailureMechanism, (sr, fm, ass) => FailureMechanismSectionAssemblyResultFactory.AssembleSection(sr, ass)); foreach (SpecificFailureMechanism specificFailureMechanism in assessmentSection.SpecificFailureMechanisms) @@ -224,7 +226,7 @@ { exportableFailureMechanisms.Add( ExportableFailureMechanismFactory.CreateExportableSpecificFailureMechanism( - idGenerator, specificFailureMechanism, assessmentSection, FailureMechanismAssemblyFactory.AssembleFailureMechanism, + idGenerator, registry, specificFailureMechanism, assessmentSection, FailureMechanismAssemblyFactory.AssembleFailureMechanism, FailureMechanismAssemblyFactory.AssembleSection)); } } @@ -233,7 +235,8 @@ } private static void AddGenericFailureMechanismWhenInAssembly( - IdentifierGenerator idGenerator, List exportableFailureMechanisms, TFailureMechanism failureMechanism, IAssessmentSection assessmentSection, + IdentifierGenerator idGenerator, ExportableModelRegistry registry, List exportableFailureMechanisms, + TFailureMechanism failureMechanism, IAssessmentSection assessmentSection, Func assembleFailureMechanismFunc, Func assembleFailureMechanismSectionFunc) where TFailureMechanism : IFailureMechanism @@ -243,7 +246,7 @@ { exportableFailureMechanisms.Add( ExportableFailureMechanismFactory.CreateExportableGenericFailureMechanism( - idGenerator, failureMechanism, assessmentSection, assembleFailureMechanismFunc, assembleFailureMechanismSectionFunc)); + idGenerator, registry, failureMechanism, assessmentSection, assembleFailureMechanismFunc, assembleFailureMechanismSectionFunc)); } } Index: Riskeer/Integration/src/Riskeer.Integration.IO/Factories/ExportableFailureMechanismFactory.cs =================================================================== diff -u -rd45c4d685f147e9ef02db77b8085ce59edf92d08 -rd41d466b016e29fb8e52680f61a8cb744be378ce --- Riskeer/Integration/src/Riskeer.Integration.IO/Factories/ExportableFailureMechanismFactory.cs (.../ExportableFailureMechanismFactory.cs) (revision d45c4d685f147e9ef02db77b8085ce59edf92d08) +++ Riskeer/Integration/src/Riskeer.Integration.IO/Factories/ExportableFailureMechanismFactory.cs (.../ExportableFailureMechanismFactory.cs) (revision d41d466b016e29fb8e52680f61a8cb744be378ce) @@ -42,6 +42,7 @@ /// with assembly results based on the input parameters. /// /// The generator to generate ids for the exportable components. + /// The to keep track of the created items. /// The failure mechanism to create an for. /// The assessment section the failure mechanism belongs to. /// The to perform @@ -51,12 +52,10 @@ /// The type of the failure mechanism. /// The type of the section result. /// An with assembly results. - /// Thrown when , , - /// , or - /// is null. + /// Thrown when any parameter is null. /// Thrown when assembly results cannot be created. public static ExportableGenericFailureMechanism CreateExportableGenericFailureMechanism( - IdentifierGenerator idGenerator, TFailureMechanism failureMechanism, IAssessmentSection assessmentSection, + IdentifierGenerator idGenerator, ExportableModelRegistry registry, TFailureMechanism failureMechanism, IAssessmentSection assessmentSection, Func assembleFailureMechanismFunc, Func assembleFailureMechanismSectionFunc) where TFailureMechanism : IFailureMechanism @@ -67,6 +66,11 @@ throw new ArgumentNullException(nameof(idGenerator)); } + if (registry == null) + { + throw new ArgumentNullException(nameof(registry)); + } + if (failureMechanism == null) { throw new ArgumentNullException(nameof(failureMechanism)); @@ -92,7 +96,8 @@ new ExportableFailureMechanismAssemblyResult( assemblyResultWrapper.AssemblyResult, ExportableAssemblyMethodFactory.Create(assemblyResultWrapper.AssemblyMethod)), - CreateExportableFailureMechanismSectionResults(idGenerator, failureMechanism, assessmentSection, assembleFailureMechanismSectionFunc), + CreateExportableFailureMechanismSectionResults(idGenerator, registry, + failureMechanism, assessmentSection, assembleFailureMechanismSectionFunc), failureMechanism.Code); } @@ -101,19 +106,18 @@ /// with assembly results based on the input parameters. /// /// The generator to generate ids for the exportable components. + /// The to keep track of the created items. /// The failure mechanism to create an for. /// The assessment section the failure mechanism belongs to. /// The to perform /// the failure mechanism assembly. /// The /// to perform the failure mechanism section assembly. /// An with assembly results. - /// Thrown when , , - /// , or - /// is null. + /// Thrown when any parameter is null. /// Thrown when assembly results cannot be created. public static ExportableSpecificFailureMechanism CreateExportableSpecificFailureMechanism( - IdentifierGenerator idGenerator, SpecificFailureMechanism failureMechanism, IAssessmentSection assessmentSection, + IdentifierGenerator idGenerator, ExportableModelRegistry registry, SpecificFailureMechanism failureMechanism, IAssessmentSection assessmentSection, Func assembleFailureMechanismFunc, Func assembleFailureMechanismSectionFunc) { @@ -122,6 +126,11 @@ throw new ArgumentNullException(nameof(idGenerator)); } + if (registry == null) + { + throw new ArgumentNullException(nameof(registry)); + } + if (failureMechanism == null) { throw new ArgumentNullException(nameof(failureMechanism)); @@ -147,7 +156,8 @@ new ExportableFailureMechanismAssemblyResult( assemblyResultWrapper.AssemblyResult, ExportableAssemblyMethodFactory.Create(assemblyResultWrapper.AssemblyMethod)), - CreateExportableFailureMechanismSectionResults(idGenerator, failureMechanism, assessmentSection, assembleFailureMechanismSectionFunc), + CreateExportableFailureMechanismSectionResults(idGenerator, registry, failureMechanism, + assessmentSection, assembleFailureMechanismSectionFunc), failureMechanism.Name); } @@ -156,6 +166,7 @@ /// with assembly results based on . /// /// The generator to generate ids for the exportable components. + /// The to keep track of the created items. /// The failure mechanism to create a collection of /// for. /// The to use in the assembly. @@ -166,24 +177,23 @@ /// A collection of . /// Thrown when assembly results cannot be created. private static IEnumerable CreateExportableFailureMechanismSectionResults - (IdentifierGenerator idGenerator, TFailureMechanism failureMechanism, IAssessmentSection assessmentSection, - Func assembleFailureMechanismSectionFunc) + ( + IdentifierGenerator idGenerator, ExportableModelRegistry registry, TFailureMechanism failureMechanism, IAssessmentSection assessmentSection, + Func assembleFailureMechanismSectionFunc) where TFailureMechanism : IFailureMechanism where TSectionResult : FailureMechanismSectionResult { - IDictionary failureMechanismSectionsLookup = - ExportableFailureMechanismSectionHelper.CreateFailureMechanismSectionResultLookup(failureMechanism.SectionResults); - var exportableResults = new List(); - foreach (KeyValuePair failureMechanismSectionPair in failureMechanismSectionsLookup) + foreach (TSectionResult sectionResult in failureMechanism.SectionResults) { FailureMechanismSectionAssemblyResultWrapper assemblyResultWrapper = assembleFailureMechanismSectionFunc( - failureMechanismSectionPair.Key, failureMechanism, assessmentSection); + sectionResult, failureMechanism, assessmentSection); FailureMechanismSectionAssemblyResult assemblyResult = assemblyResultWrapper.AssemblyResult; exportableResults.Add( new ExportableFailureMechanismSectionAssemblyResult( - idGenerator.GetNewId("Fa"), failureMechanismSectionPair.Value, assemblyResult.SectionProbability, assemblyResult.FailureMechanismSectionAssemblyGroup, + idGenerator.GetNewId(Resources.ExportableFailureMechanismSectionAssemblyResult_IdPrefix), registry.Get(sectionResult.Section), + assemblyResult.SectionProbability, assemblyResult.FailureMechanismSectionAssemblyGroup, ExportableAssemblyMethodFactory.Create(assemblyResultWrapper.AssemblyGroupMethod), ExportableAssemblyMethodFactory.Create(assemblyResultWrapper.ProbabilityMethod))); } Index: Riskeer/Integration/src/Riskeer.Integration.IO/Properties/Resources.Designer.cs =================================================================== diff -u -r234c67f206c92dde881cc2c15e2cb4299be50741 -rd41d466b016e29fb8e52680f61a8cb744be378ce --- Riskeer/Integration/src/Riskeer.Integration.IO/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision 234c67f206c92dde881cc2c15e2cb4299be50741) +++ Riskeer/Integration/src/Riskeer.Integration.IO/Properties/Resources.Designer.cs (.../Resources.Designer.cs) (revision d41d466b016e29fb8e52680f61a8cb744be378ce) @@ -154,6 +154,15 @@ } /// + /// Looks up a localized string similar to Fa. + /// + public static string ExportableFailureMechanismSectionAssemblyResult_IdPrefix { + get { + return ResourceManager.GetString("ExportableFailureMechanismSectionAssemblyResult_IdPrefix", resourceCulture); + } + } + + /// /// Looks up a localized string similar to Vi. /// public static string ExportableFailureMechanismSectionCollection_IdPrefix { Index: Riskeer/Integration/src/Riskeer.Integration.IO/Properties/Resources.resx =================================================================== diff -u -r234c67f206c92dde881cc2c15e2cb4299be50741 -rd41d466b016e29fb8e52680f61a8cb744be378ce --- Riskeer/Integration/src/Riskeer.Integration.IO/Properties/Resources.resx (.../Resources.resx) (revision 234c67f206c92dde881cc2c15e2cb4299be50741) +++ Riskeer/Integration/src/Riskeer.Integration.IO/Properties/Resources.resx (.../Resources.resx) (revision d41d466b016e29fb8e52680f61a8cb744be378ce) @@ -230,4 +230,7 @@ Bv + + Fa + \ No newline at end of file Index: Riskeer/Integration/test/Riskeer.Integration.IO.Test/Factories/ExportableFailureMechanismFactoryTest.cs =================================================================== diff -u -r3fedb02f6284e45456911f5831bb399ecc85e307 -rd41d466b016e29fb8e52680f61a8cb744be378ce --- Riskeer/Integration/test/Riskeer.Integration.IO.Test/Factories/ExportableFailureMechanismFactoryTest.cs (.../ExportableFailureMechanismFactoryTest.cs) (revision 3fedb02f6284e45456911f5831bb399ecc85e307) +++ Riskeer/Integration/test/Riskeer.Integration.IO.Test/Factories/ExportableFailureMechanismFactoryTest.cs (.../ExportableFailureMechanismFactoryTest.cs) (revision d41d466b016e29fb8e52680f61a8cb744be378ce) @@ -50,7 +50,7 @@ // Call void Call() => ExportableFailureMechanismFactory.CreateExportableGenericFailureMechanism( - null, new TestFailureMechanism(), assessmentSection, (fm, section) => null, (sr, fm, section) => null); + null, new ExportableModelRegistry(), new TestFailureMechanism(), assessmentSection, (fm, section) => null, (sr, fm, section) => null); // Assert var exception = Assert.Throws(Call); @@ -59,6 +59,24 @@ } [Test] + public void CreateExportableGenericFailureMechanism_RegistryNull_ThrowsArgumentNullException() + { + // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + // Call + void Call() => ExportableFailureMechanismFactory.CreateExportableGenericFailureMechanism( + new IdentifierGenerator(), null, new TestFailureMechanism(), assessmentSection, (fm, section) => null, (sr, fm, section) => null); + + // Assert + var exception = Assert.Throws(Call); + Assert.AreEqual("registry", exception.ParamName); + mocks.VerifyAll(); + } + + [Test] public void CreateExportableGenericFailureMechanism_FailureMechanismNull_ThrowsArgumentNullException() { // Setup @@ -68,7 +86,7 @@ // Call void Call() => ExportableFailureMechanismFactory.CreateExportableGenericFailureMechanism( - new IdentifierGenerator(), null, assessmentSection, (fm, section) => null, (sr, fm, section) => null); + new IdentifierGenerator(), new ExportableModelRegistry(), null, assessmentSection, (fm, section) => null, (sr, fm, section) => null); // Assert var exception = Assert.Throws(Call); @@ -81,7 +99,7 @@ { // Call void Call() => ExportableFailureMechanismFactory.CreateExportableGenericFailureMechanism( - new IdentifierGenerator(), new TestFailureMechanism(), null, (fm, section) => null, (sr, fm, section) => null); + new IdentifierGenerator(), new ExportableModelRegistry(), new TestFailureMechanism(), null, (fm, section) => null, (sr, fm, section) => null); // Assert var exception = Assert.Throws(Call); @@ -98,7 +116,7 @@ // Call void Call() => ExportableFailureMechanismFactory.CreateExportableGenericFailureMechanism( - new IdentifierGenerator(), new TestFailureMechanism(), assessmentSection, null, (sr, fm, section) => null); + new IdentifierGenerator(), new ExportableModelRegistry(), new TestFailureMechanism(), assessmentSection, null, (sr, fm, section) => null); // Assert var exception = Assert.Throws(Call); @@ -116,7 +134,7 @@ // Call void Call() => ExportableFailureMechanismFactory.CreateExportableGenericFailureMechanism( - new IdentifierGenerator(), new TestFailureMechanism(), assessmentSection, (fm, section) => null, null); + new IdentifierGenerator(), new ExportableModelRegistry(), new TestFailureMechanism(), assessmentSection, (fm, section) => null, null); // Assert var exception = Assert.Throws(Call); @@ -139,10 +157,13 @@ var idGenerator = new IdentifierGenerator(); + var registry = new ExportableModelRegistry(); + RegisterFailureMechanismSections(registry, failureMechanism.Sections); + // Call ExportableGenericFailureMechanism exportableFailureMechanism = ExportableFailureMechanismFactory.CreateExportableGenericFailureMechanism( - idGenerator, failureMechanism, assessmentSection, (fm, section) => new FailureMechanismAssemblyResultWrapper(probability, assemblyMethod), + idGenerator, registry, failureMechanism, assessmentSection, (fm, section) => new FailureMechanismAssemblyResultWrapper(probability, assemblyMethod), (sr, fm, section) => expectedSectionOutput); // Assert @@ -171,7 +192,7 @@ // Call void Call() => ExportableFailureMechanismFactory.CreateExportableSpecificFailureMechanism( - null, new SpecificFailureMechanism(), assessmentSection, (fm, section) => null, (sr, fm, section) => null); + null, new ExportableModelRegistry(), new SpecificFailureMechanism(), assessmentSection, (fm, section) => null, (sr, fm, section) => null); // Assert var exception = Assert.Throws(Call); @@ -180,6 +201,24 @@ } [Test] + public void CreateExportableSpecificFailureMechanism_RegistryNull_ThrowsArgumentNullException() + { + // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + // Call + void Call() => ExportableFailureMechanismFactory.CreateExportableSpecificFailureMechanism( + new IdentifierGenerator(), null, new SpecificFailureMechanism(), assessmentSection, (fm, section) => null, (sr, fm, section) => null); + + // Assert + var exception = Assert.Throws(Call); + Assert.AreEqual("registry", exception.ParamName); + mocks.VerifyAll(); + } + + [Test] public void CreateExportableSpecificFailureMechanism_FailureMechanismNull_ThrowsArgumentNullException() { // Setup @@ -189,7 +228,7 @@ // Call void Call() => ExportableFailureMechanismFactory.CreateExportableSpecificFailureMechanism( - new IdentifierGenerator(), null, assessmentSection, (fm, section) => null, (sr, fm, section) => null); + new IdentifierGenerator(), new ExportableModelRegistry(), null, assessmentSection, (fm, section) => null, (sr, fm, section) => null); // Assert var exception = Assert.Throws(Call); @@ -202,7 +241,7 @@ { // Call void Call() => ExportableFailureMechanismFactory.CreateExportableSpecificFailureMechanism( - new IdentifierGenerator(), new SpecificFailureMechanism(), null, (fm, section) => null, (sr, fm, section) => null); + new IdentifierGenerator(), new ExportableModelRegistry(), new SpecificFailureMechanism(), null, (fm, section) => null, (sr, fm, section) => null); // Assert var exception = Assert.Throws(Call); @@ -219,7 +258,7 @@ // Call void Call() => ExportableFailureMechanismFactory.CreateExportableSpecificFailureMechanism( - new IdentifierGenerator(), new SpecificFailureMechanism(), assessmentSection, null, (sr, fm, section) => null); + new IdentifierGenerator(), new ExportableModelRegistry(), new SpecificFailureMechanism(), assessmentSection, null, (sr, fm, section) => null); // Assert var exception = Assert.Throws(Call); @@ -237,7 +276,7 @@ // Call void Call() => ExportableFailureMechanismFactory.CreateExportableSpecificFailureMechanism( - new IdentifierGenerator(), new SpecificFailureMechanism(), assessmentSection, (fm, section) => null, null); + new IdentifierGenerator(), new ExportableModelRegistry(), new SpecificFailureMechanism(), assessmentSection, (fm, section) => null, null); // Assert var exception = Assert.Throws(Call); @@ -259,11 +298,13 @@ FailureMechanismSectionAssemblyResultWrapper expectedSectionOutput = FailureMechanismSectionAssemblyResultWrapperTestFactory.Create(); var idGenerator = new IdentifierGenerator(); + var registry = new ExportableModelRegistry(); + RegisterFailureMechanismSections(registry, failureMechanism.Sections); // Call ExportableSpecificFailureMechanism exportableFailureMechanism = ExportableFailureMechanismFactory.CreateExportableSpecificFailureMechanism( - idGenerator, failureMechanism, assessmentSection, (fm, section) => new FailureMechanismAssemblyResultWrapper(probability, assemblyMethod), + idGenerator, registry, failureMechanism, assessmentSection, (fm, section) => new FailureMechanismAssemblyResultWrapper(probability, assemblyMethod), (sr, fm, section) => expectedSectionOutput); // Assert @@ -281,5 +322,11 @@ ExportableFailureMechanismSectionAssemblyResultTestHelper.AssertExportableFailureMechanismSectionResults( expectedSectionOutput, exportableFailureMechanismSections, exportableFailureMechanism.SectionAssemblyResults); } + + private static void RegisterFailureMechanismSections(ExportableModelRegistry registry, IEnumerable failureMechanismSections) + { + ExportableFailureMechanismSectionCollectionFactory.CreateExportableFailureMechanismSectionCollection( + new IdentifierGenerator(), registry, failureMechanismSections); + } } } \ No newline at end of file