Index: Riskeer/Piping/src/Riskeer.Piping.Forms/PropertyClasses/Probabilistic/ProbabilisticPipingInputContextProperties.cs =================================================================== diff -u -r6d980fb357f92a82cef3f5d0f8d41fc6efb63d16 -r8b7e85b1b827ca4b325595e17243d7a7b70b6f0e --- Riskeer/Piping/src/Riskeer.Piping.Forms/PropertyClasses/Probabilistic/ProbabilisticPipingInputContextProperties.cs (.../ProbabilisticPipingInputContextProperties.cs) (revision 6d980fb357f92a82cef3f5d0f8d41fc6efb63d16) +++ Riskeer/Piping/src/Riskeer.Piping.Forms/PropertyClasses/Probabilistic/ProbabilisticPipingInputContextProperties.cs (.../ProbabilisticPipingInputContextProperties.cs) (revision 8b7e85b1b827ca4b325595e17243d7a7b70b6f0e) @@ -158,11 +158,13 @@ return data.AvailablePipingSurfaceLines; } - private FailureMechanismSection GetSection() + private FailureMechanismSection GetCorrespondingSection() { - return data.FailureMechanism - .Sections - .FirstOrDefault(section => data.PipingCalculation.IsSurfaceLineIntersectionWithReferenceLineInSection(Math2D.ConvertPointsToLineSegments(section.Points))); + IEnumerable sections = data.FailureMechanism + .Sections + .Where(section => data.PipingCalculation.IsSurfaceLineIntersectionWithReferenceLineInSection(Math2D.ConvertPointsToLineSegments(section.Points))).ToArray(); + + return sections.Count() > 1 ? null : sections.First(); } #region Hydraulic data @@ -414,7 +416,7 @@ { get { - FailureMechanismSection failureMechanismSection = GetSection(); + FailureMechanismSection failureMechanismSection = GetCorrespondingSection(); return failureMechanismSection == null ? "-" : failureMechanismSection.Name; } } @@ -427,7 +429,7 @@ { get { - FailureMechanismSection failureMechanismSection = GetSection(); + FailureMechanismSection failureMechanismSection = GetCorrespondingSection(); return failureMechanismSection == null ? new RoundedDouble(2) : new RoundedDouble(2, failureMechanismSection.Length); } } Index: Riskeer/Piping/test/Riskeer.Piping.Forms.Test/PropertyClasses/Probabilistic/ProbabilisticPipingInputContextPropertiesTest.cs =================================================================== diff -u -r6d980fb357f92a82cef3f5d0f8d41fc6efb63d16 -r8b7e85b1b827ca4b325595e17243d7a7b70b6f0e --- Riskeer/Piping/test/Riskeer.Piping.Forms.Test/PropertyClasses/Probabilistic/ProbabilisticPipingInputContextPropertiesTest.cs (.../ProbabilisticPipingInputContextPropertiesTest.cs) (revision 6d980fb357f92a82cef3f5d0f8d41fc6efb63d16) +++ Riskeer/Piping/test/Riskeer.Piping.Forms.Test/PropertyClasses/Probabilistic/ProbabilisticPipingInputContextPropertiesTest.cs (.../ProbabilisticPipingInputContextPropertiesTest.cs) (revision 8b7e85b1b827ca4b325595e17243d7a7b70b6f0e) @@ -544,6 +544,63 @@ } [Test] + public void Calculation_InMultipleSections_ReturnExpectedValues() + { + // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + var handler = mocks.Stub(); + mocks.ReplayAll(); + + var failureMechanism = new PipingFailureMechanism(); + failureMechanism.SetSections(new[] + { + new FailureMechanismSection("Section1", new[] + { + new Point2D(0.0, 0.0), + new Point2D(0.5, 0.0) + }), + new FailureMechanismSection("Section2", new[] + { + new Point2D(0.5, 0.0), + new Point2D(1.0, 0.0) + }) + }, "path/to/sections"); + + var surfaceLine = new PipingSurfaceLine(string.Empty) + { + ReferenceLineIntersectionWorldPoint = new Point2D(0.5, 0.0) + }; + surfaceLine.SetGeometry(new[] + { + new Point3D(0.0, 0.0, 0.0), + new Point3D(0.5, 0.0, 0.0) + }); + + var calculation = new ProbabilisticPipingCalculationScenario + { + InputParameters = + { + SurfaceLine = surfaceLine + } + }; + + var context = new ProbabilisticPipingInputContext(calculation.InputParameters, calculation, + Enumerable.Empty(), + Enumerable.Empty(), + failureMechanism, assessmentSection); + + // Call + var properties = new ProbabilisticPipingInputContextProperties(context, handler); + + // Assert + Assert.AreEqual("-", properties.SectionName); + Assert.AreEqual(0.0, properties.SectionLength); + + mocks.VerifyAll(); + } + + [Test] public void GivenPropertiesWithData_WhenChangingProperties_ThenPropertiesSetOnInput() { // Given