Index: Riskeer/Common/src/Riskeer.Common.Forms/Helpers/FailureMechanismSectionPresentationHelper.cs
===================================================================
diff -u -r6e3bc0437167a40cf4a79f0f04e31dc61ef4407f -r62d9d51394ec9ac00cb96558f1920a7af914d29b
--- Riskeer/Common/src/Riskeer.Common.Forms/Helpers/FailureMechanismSectionPresentationHelper.cs (.../FailureMechanismSectionPresentationHelper.cs) (revision 6e3bc0437167a40cf4a79f0f04e31dc61ef4407f)
+++ Riskeer/Common/src/Riskeer.Common.Forms/Helpers/FailureMechanismSectionPresentationHelper.cs (.../FailureMechanismSectionPresentationHelper.cs) (revision 62d9d51394ec9ac00cb96558f1920a7af914d29b)
@@ -26,7 +26,7 @@
namespace Riskeer.Common.Forms.Helpers
{
///
- /// Helper class for displaying .
+ /// Helper class for displaying failure mechanism sections.
///
public static class FailureMechanismSectionPresentationHelper
{
@@ -47,8 +47,7 @@
///
///
/// The created presentation objects.
- /// Thrown when or
- /// is null.
+ /// Thrown when any parameter is null.
public static T[] CreatePresentableFailureMechanismSections(IEnumerable failureMechanismSections,
Func createPresentableFailureMechanismSectionFunc)
{
@@ -62,15 +61,59 @@
throw new ArgumentNullException(nameof(createPresentableFailureMechanismSectionFunc));
}
+ return CreatePresentableFailureMechanismSections(failureMechanismSections, section => section.Length, createPresentableFailureMechanismSectionFunc);
+ }
+
+ ///
+ /// Creates presentation objects for the provided ,
+ /// taking into account the start and the end of the sections in relation to the beginning of
+ /// the reference line.
+ ///
+ /// The type of the presentation objects.
+ /// The type of failure mechanism section configuration.
+ /// The failure mechanism section configurations to create presentation
+ /// objects for.
+ ///
+ /// for creating the presentation objects of type , in which:
+ ///
+ /// - T1 represents the failure mechanism section configuration at stake;
+ /// - T2 represents the start of the section in relation to the beginning of the reference line;
+ /// - T3 represents the end of the section in relation to the beginning of the reference line.
+ ///
+ ///
+ /// The created presentation objects.
+ /// Thrown when any parameter is null.
+ public static T[] CreatePresentableFailureMechanismSectionConfigurations(
+ IEnumerable failureMechanismSectionConfigurations,
+ Func createPresentableFailureMechanismSectionConfigurationFunc)
+ where TFailureMechanismSectionConfiguration : FailureMechanismSectionConfiguration
+ {
+ if (failureMechanismSectionConfigurations == null)
+ {
+ throw new ArgumentNullException(nameof(failureMechanismSectionConfigurations));
+ }
+
+ if (createPresentableFailureMechanismSectionConfigurationFunc == null)
+ {
+ throw new ArgumentNullException(nameof(createPresentableFailureMechanismSectionConfigurationFunc));
+ }
+
+ return CreatePresentableFailureMechanismSections(failureMechanismSectionConfigurations, configuration => configuration.Section.Length, createPresentableFailureMechanismSectionConfigurationFunc);
+ }
+
+ private static T[] CreatePresentableFailureMechanismSections(IEnumerable sections,
+ Func getSectionLengthFunc,
+ Func createPresentableFailureMechanismSectionFunc)
+ {
double start = 0;
var presentableFailureMechanismSections = new List();
- foreach (FailureMechanismSection failureMechanismSection in failureMechanismSections)
+ foreach (TSection section in sections)
{
- double end = start + failureMechanismSection.Length;
+ double end = start + getSectionLengthFunc(section);
- presentableFailureMechanismSections.Add(createPresentableFailureMechanismSectionFunc(failureMechanismSection, start, end));
+ presentableFailureMechanismSections.Add(createPresentableFailureMechanismSectionFunc(section, start, end));
start = end;
}
Index: Riskeer/Common/src/Riskeer.Common.Forms/Views/FailureMechanismSectionConfigurationsView.cs
===================================================================
diff -u -rc2773b1a9fbca12088ad0f7657ccf0b348d3a631 -r62d9d51394ec9ac00cb96558f1920a7af914d29b
--- Riskeer/Common/src/Riskeer.Common.Forms/Views/FailureMechanismSectionConfigurationsView.cs (.../FailureMechanismSectionConfigurationsView.cs) (revision c2773b1a9fbca12088ad0f7657ccf0b348d3a631)
+++ Riskeer/Common/src/Riskeer.Common.Forms/Views/FailureMechanismSectionConfigurationsView.cs (.../FailureMechanismSectionConfigurationsView.cs) (revision 62d9d51394ec9ac00cb96558f1920a7af914d29b)
@@ -24,6 +24,7 @@
using System.Linq;
using Core.Common.Base;
using Riskeer.Common.Data.FailureMechanism;
+using Riskeer.Common.Forms.Helpers;
using Riskeer.Common.Forms.Properties;
namespace Riskeer.Common.Forms.Views
@@ -78,7 +79,9 @@
protected override void SetDataGridViewControlData()
{
- failureMechanismSectionsDataGridViewControl.SetDataSource(CreateRows());
+ failureMechanismSectionsDataGridViewControl.SetDataSource(FailureMechanismSectionPresentationHelper.CreatePresentableFailureMechanismSectionConfigurations(
+ sectionConfigurations,
+ createRowFunc));
}
protected override void Dispose(bool disposing)
@@ -91,24 +94,5 @@
{
failureMechanismSectionsDataGridViewControl.Refresh();
}
-
- private IEnumerable CreateRows()
- {
- double start = 0;
-
- var presentableFailureMechanismSections = new List();
-
- foreach (TFailureMechanismSectionConfiguration sectionConfiguration in sectionConfigurations)
- {
- double end = start + sectionConfiguration.Section.Length;
-
- TFailureMechanismSectionConfigurationRow failureMechanismSectionConfigurationRow = createRowFunc(sectionConfiguration, start, end);
- presentableFailureMechanismSections.Add(failureMechanismSectionConfigurationRow);
-
- start = end;
- }
-
- return presentableFailureMechanismSections.ToArray();
- }
}
}
\ No newline at end of file
Index: Riskeer/Common/test/Riskeer.Common.Forms.Test/Helpers/FailureMechanismSectionPresentationHelperTest.cs
===================================================================
diff -u -r6e3bc0437167a40cf4a79f0f04e31dc61ef4407f -r62d9d51394ec9ac00cb96558f1920a7af914d29b
--- Riskeer/Common/test/Riskeer.Common.Forms.Test/Helpers/FailureMechanismSectionPresentationHelperTest.cs (.../FailureMechanismSectionPresentationHelperTest.cs) (revision 6e3bc0437167a40cf4a79f0f04e31dc61ef4407f)
+++ Riskeer/Common/test/Riskeer.Common.Forms.Test/Helpers/FailureMechanismSectionPresentationHelperTest.cs (.../FailureMechanismSectionPresentationHelperTest.cs) (revision 62d9d51394ec9ac00cb96558f1920a7af914d29b)
@@ -20,8 +20,10 @@
// All rights reserved.
using System;
+using System.Collections.Generic;
using System.Linq;
using Core.Common.Base.Geometry;
+using Core.Common.TestUtil;
using NUnit.Framework;
using Riskeer.Common.Data.FailureMechanism;
using Riskeer.Common.Data.TestUtil;
@@ -36,21 +38,21 @@
public void CreatePresentableFailureMechanismSections_FailureMechanismSectionsNull_ThrowsArgumentNullException()
{
// Call
- TestDelegate call = () => FailureMechanismSectionPresentationHelper.CreatePresentableFailureMechanismSections(null, (section, start, end) => new object());
+ void Call() => FailureMechanismSectionPresentationHelper.CreatePresentableFailureMechanismSections(null, (section, start, end) => new object());
// Assert
- var exception = Assert.Throws(call);
+ var exception = Assert.Throws(Call);
Assert.AreEqual("failureMechanismSections", exception.ParamName);
}
[Test]
public void CreatePresentableFailureMechanismSections_CreatePresentableFailureMechanismSectionFuncNull_ThrowsArgumentNullException()
{
// Call
- TestDelegate call = () => FailureMechanismSectionPresentationHelper.CreatePresentableFailureMechanismSections