Index: Riskeer/MacroStabilityInwards/src/Riskeer.MacroStabilityInwards.Forms/Views/MacroStabilityInwardsFailureMechanismSectionResultRow.cs =================================================================== diff -u -r26a31ade853688c62aa90aad3d3cb1ee0881fcfb -rd25f67e9af61410facb0d2ef5a39cc3a774cbf51 --- Riskeer/MacroStabilityInwards/src/Riskeer.MacroStabilityInwards.Forms/Views/MacroStabilityInwardsFailureMechanismSectionResultRow.cs (.../MacroStabilityInwardsFailureMechanismSectionResultRow.cs) (revision 26a31ade853688c62aa90aad3d3cb1ee0881fcfb) +++ Riskeer/MacroStabilityInwards/src/Riskeer.MacroStabilityInwards.Forms/Views/MacroStabilityInwardsFailureMechanismSectionResultRow.cs (.../MacroStabilityInwardsFailureMechanismSectionResultRow.cs) (revision d25f67e9af61410facb0d2ef5a39cc3a774cbf51) @@ -36,6 +36,18 @@ /// public class MacroStabilityInwardsFailureMechanismSectionResultRow : FailureMechanismSectionResultRow { + private readonly int initialFailureMechanismResultIndex; + private readonly int initialFailureMechanismResultProfileProbabilityIndex; + private readonly int initialFailureMechanismResultSectionProbabilityIndex; + private readonly int furtherAnalysisNeededIndex; + private readonly int probabilityRefinementTypeIndex; + private readonly int refinedProfileProbabilityIndex; + private readonly int refinedSectionProbabilityIndex; + private readonly int profileProbabilityIndex; + private readonly int sectionProbabilityIndex; + private readonly int sectionNIndex; + private readonly int assemblyGroupIndex; + private readonly IEnumerable calculationScenarios; private readonly MacroStabilityInwardsFailureMechanism failureMechanism; @@ -46,10 +58,13 @@ /// the source of this row. /// All calculation scenarios in the failure mechanism. /// The failure mechanism the section result belongs to. + /// /// The property values required to create an instance of + /// . /// Throw when any parameter is null. public MacroStabilityInwardsFailureMechanismSectionResultRow(MacroStabilityInwardsFailureMechanismSectionResult sectionResult, IEnumerable calculationScenarios, - MacroStabilityInwardsFailureMechanism failureMechanism) + MacroStabilityInwardsFailureMechanism failureMechanism, + ConstructionProperties constructionProperties) : base(sectionResult) { if (calculationScenarios == null) @@ -62,8 +77,25 @@ throw new ArgumentNullException(nameof(failureMechanism)); } + if (constructionProperties == null) + { + throw new ArgumentNullException(nameof(constructionProperties)); + } + this.calculationScenarios = calculationScenarios; this.failureMechanism = failureMechanism; + + initialFailureMechanismResultIndex = constructionProperties.InitialFailureMechanismResultIndex; + initialFailureMechanismResultProfileProbabilityIndex = constructionProperties.InitialFailureMechanismResultProfileProbabilityIndex; + initialFailureMechanismResultSectionProbabilityIndex = constructionProperties.InitialFailureMechanismResultSectionProbabilityIndex; + furtherAnalysisNeededIndex = constructionProperties.FurtherAnalysisNeededIndex; + probabilityRefinementTypeIndex = constructionProperties.ProbabilityRefinementTypeIndex; + refinedProfileProbabilityIndex = constructionProperties.RefinedProfileProbabilityIndex; + refinedSectionProbabilityIndex = constructionProperties.RefinedSectionProbabilityIndex; + profileProbabilityIndex = constructionProperties.ProfileProbabilityIndex; + sectionProbabilityIndex = constructionProperties.SectionProbabilityIndex; + sectionNIndex = constructionProperties.SectionNIndex; + assemblyGroupIndex = constructionProperties.AssemblyGroupIndex; } /// @@ -190,5 +222,66 @@ public override void Update() { } + + /// + /// Class holding the various construction parameters for . + /// + public class ConstructionProperties + { + /// + /// Sets the initial failure mechanism result index. + /// + public int InitialFailureMechanismResultIndex { internal get; set; } + + /// + /// Sets the initial failure mechanism result profile probability index. + /// + public int InitialFailureMechanismResultProfileProbabilityIndex { internal get; set; } + + /// + /// Sets the initial failure mechanism result section probability index. + /// + public int InitialFailureMechanismResultSectionProbabilityIndex { internal get; set; } + + /// + /// Sets the further analysis needed index. + /// + public int FurtherAnalysisNeededIndex { internal get; set; } + + /// + /// Sets the probability refinement type index. + /// + public int ProbabilityRefinementTypeIndex { internal get; set; } + + /// + /// Sets the refined profile probability index. + /// + public int RefinedProfileProbabilityIndex { internal get; set; } + + /// + /// Sets the refined section probability index. + /// + public int RefinedSectionProbabilityIndex { internal get; set; } + + /// + /// Sets the profile probability index. + /// + public int ProfileProbabilityIndex { internal get; set; } + + /// + /// Sets the section probability index. + /// + public int SectionProbabilityIndex { internal get; set; } + + /// + /// Sets the section N index. + /// + public int SectionNIndex { internal get; set; } + + /// + /// Sets the assembly group index. + /// + public int AssemblyGroupIndex { internal get; set; } + } } } \ No newline at end of file Index: Riskeer/MacroStabilityInwards/test/Riskeer.MacroStabilityInwards.Forms.Test/Views/MacroStabilityInwardsFailureMechanismSectionResultRowTest.cs =================================================================== diff -u -rb2760d5e952dd44ad0f02f8d95f3f0b2f01ada4e -rd25f67e9af61410facb0d2ef5a39cc3a774cbf51 --- Riskeer/MacroStabilityInwards/test/Riskeer.MacroStabilityInwards.Forms.Test/Views/MacroStabilityInwardsFailureMechanismSectionResultRowTest.cs (.../MacroStabilityInwardsFailureMechanismSectionResultRowTest.cs) (revision b2760d5e952dd44ad0f02f8d95f3f0b2f01ada4e) +++ Riskeer/MacroStabilityInwards/test/Riskeer.MacroStabilityInwards.Forms.Test/Views/MacroStabilityInwardsFailureMechanismSectionResultRowTest.cs (.../MacroStabilityInwardsFailureMechanismSectionResultRowTest.cs) (revision d25f67e9af61410facb0d2ef5a39cc3a774cbf51) @@ -41,6 +41,22 @@ [TestFixture] public class MacroStabilityInwardsFailureMechanismSectionResultRowTest { + private static MacroStabilityInwardsFailureMechanismSectionResultRow.ConstructionProperties ConstructionProperties => + new MacroStabilityInwardsFailureMechanismSectionResultRow.ConstructionProperties + { + InitialFailureMechanismResultIndex = 2, + InitialFailureMechanismResultProfileProbabilityIndex = 3, + InitialFailureMechanismResultSectionProbabilityIndex = 4, + FurtherAnalysisNeededIndex = 5, + ProbabilityRefinementTypeIndex = 6, + RefinedProfileProbabilityIndex = 7, + RefinedSectionProbabilityIndex = 8, + ProfileProbabilityIndex = 9, + SectionProbabilityIndex = 10, + SectionNIndex = 11, + AssemblyGroupIndex = 12 + }; + [Test] public void Constructor_CalculationScenariosNull_ThrowsArgumentNullException() { @@ -49,7 +65,8 @@ var result = new MacroStabilityInwardsFailureMechanismSectionResult(section); // Call - void Call() => new MacroStabilityInwardsFailureMechanismSectionResultRow(result, null, new MacroStabilityInwardsFailureMechanism()); + void Call() => new MacroStabilityInwardsFailureMechanismSectionResultRow(result, null, new MacroStabilityInwardsFailureMechanism(), + ConstructionProperties); // Assert var exception = Assert.Throws(Call); @@ -64,14 +81,31 @@ var result = new MacroStabilityInwardsFailureMechanismSectionResult(section); // Call - void Call() => new MacroStabilityInwardsFailureMechanismSectionResultRow(result, Enumerable.Empty(), null); + void Call() => new MacroStabilityInwardsFailureMechanismSectionResultRow(result, Enumerable.Empty(), null, + ConstructionProperties); // Assert var exception = Assert.Throws(Call); Assert.AreEqual("failureMechanism", exception.ParamName); } [Test] + public void Constructor_ConstructionPropertiesNull_ThrowsArgumentNullException() + { + // Setup + FailureMechanismSection section = FailureMechanismSectionTestFactory.CreateFailureMechanismSection(); + var result = new MacroStabilityInwardsFailureMechanismSectionResult(section); + + // Call + void Call() => new MacroStabilityInwardsFailureMechanismSectionResultRow(result, Enumerable.Empty(), + new MacroStabilityInwardsFailureMechanism(), null); + + // Assert + var exception = Assert.Throws(Call); + Assert.AreEqual("constructionProperties", exception.ParamName); + } + + [Test] public void Constructor_ExpectedValues() { // Setup @@ -90,7 +124,7 @@ using (new AssemblyToolCalculatorFactoryConfig()) { // Call - var row = new MacroStabilityInwardsFailureMechanismSectionResultRow(result, calculationScenarios, failureMechanism); + var row = new MacroStabilityInwardsFailureMechanismSectionResultRow(result, calculationScenarios, failureMechanism, ConstructionProperties); // Assert double initialFailureMechanismResultProbability = result.GetInitialFailureMechanismResultProbability( @@ -139,7 +173,7 @@ using (new AssemblyToolCalculatorFactoryConfig()) { - var row = new MacroStabilityInwardsFailureMechanismSectionResultRow(result, calculationScenarios, failureMechanism); + var row = new MacroStabilityInwardsFailureMechanismSectionResultRow(result, calculationScenarios, failureMechanism, ConstructionProperties); // Precondition Assert.AreEqual(profileProbability, row.InitialFailureMechanismResultProfileProbability); @@ -174,7 +208,7 @@ using (new AssemblyToolCalculatorFactoryConfig()) { - var row = new MacroStabilityInwardsFailureMechanismSectionResultRow(result, calculationScenarios, failureMechanism); + var row = new MacroStabilityInwardsFailureMechanismSectionResultRow(result, calculationScenarios, failureMechanism, ConstructionProperties); // Precondition Assert.AreEqual(result.RefinedProfileProbability, row.RefinedProfileProbability); @@ -320,7 +354,8 @@ using (new AssemblyToolCalculatorFactoryConfig()) { - var row = new MacroStabilityInwardsFailureMechanismSectionResultRow(result, Enumerable.Empty(), new MacroStabilityInwardsFailureMechanism()); + var row = new MacroStabilityInwardsFailureMechanismSectionResultRow(result, Enumerable.Empty(), + new MacroStabilityInwardsFailureMechanism(), ConstructionProperties); // Call setPropertyAction(row); @@ -341,7 +376,8 @@ using (new AssemblyToolCalculatorFactoryConfig()) { - var row = new MacroStabilityInwardsFailureMechanismSectionResultRow(result, Enumerable.Empty(), new MacroStabilityInwardsFailureMechanism()); + var row = new MacroStabilityInwardsFailureMechanismSectionResultRow(result, Enumerable.Empty(), + new MacroStabilityInwardsFailureMechanism(), ConstructionProperties); // Call void Call() => setPropertyAction(row);