Index: Riskeer/Storage/src/Riskeer.Storage.Core/Read/AssessmentSectionEntityReadExtensions.cs
===================================================================
diff -u -r1da7c54acabe2073a9ab5611828527b91b5f0df7 -re63d76cffd22655ce3e821d57f05e66464eec2cb
--- Riskeer/Storage/src/Riskeer.Storage.Core/Read/AssessmentSectionEntityReadExtensions.cs (.../AssessmentSectionEntityReadExtensions.cs) (revision 1da7c54acabe2073a9ab5611828527b91b5f0df7)
+++ Riskeer/Storage/src/Riskeer.Storage.Core/Read/AssessmentSectionEntityReadExtensions.cs (.../AssessmentSectionEntityReadExtensions.cs) (revision e63d76cffd22655ce3e821d57f05e66464eec2cb)
@@ -265,7 +265,7 @@
entity.SpecificFailureMechanismEntities
.OrderBy(e => e.Order);
- assessmentSection.SpecificFailureMechanisms.AddRange(specificFailureMechanismEntities.Select(e => e.ReadSpecificFailurePath(collector)).ToArray());
+ assessmentSection.SpecificFailureMechanisms.AddRange(specificFailureMechanismEntities.Select(e => e.Read(collector)).ToArray());
}
}
}
\ No newline at end of file
Fisheye: Tag e63d76cffd22655ce3e821d57f05e66464eec2cb refers to a dead (removed) revision in file `Riskeer/Storage/src/Riskeer.Storage.Core/Read/FailurePathEntityReadExtensions.cs'.
Fisheye: No comparison available. Pass `N' to diff?
Index: Riskeer/Storage/src/Riskeer.Storage.Core/Read/SpecificFailureMechanismEntityReadExtensions.cs
===================================================================
diff -u
--- Riskeer/Storage/src/Riskeer.Storage.Core/Read/SpecificFailureMechanismEntityReadExtensions.cs (revision 0)
+++ Riskeer/Storage/src/Riskeer.Storage.Core/Read/SpecificFailureMechanismEntityReadExtensions.cs (revision e63d76cffd22655ce3e821d57f05e66464eec2cb)
@@ -0,0 +1,84 @@
+// Copyright (C) Stichting Deltares 2021. All rights reserved.
+//
+// This file is part of Riskeer.
+//
+// Riskeer is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see .
+//
+// All names, logos, and references to "Deltares" are registered trademarks of
+// Stichting Deltares and remain full property of Stichting Deltares at all times.
+// All rights reserved.
+
+using System;
+using System.Linq;
+using Core.Common.Base.Data;
+using Riskeer.Common.Data.FailureMechanism;
+using Riskeer.Storage.Core.DbContext;
+using Riskeer.Storage.Core.Read.FailureMechanismSectionResults;
+
+namespace Riskeer.Storage.Core.Read
+{
+ ///
+ /// This class defines extension methods for read operations for a based on the
+ ///
+ ///
+ internal static class SpecificFailureMechanismEntityReadExtensions
+ {
+ ///
+ /// Reads the and uses the information to create a .
+ ///
+ /// The to create a with.
+ /// The object keeping track of read operations.
+ /// Thrown when any argument is null.
+ internal static SpecificFailureMechanism Read(this SpecificFailureMechanismEntity entity, ReadConversionCollector collector)
+ {
+ if (entity == null)
+ {
+ throw new ArgumentNullException(nameof(entity));
+ }
+
+ if (collector == null)
+ {
+ throw new ArgumentNullException(nameof(collector));
+ }
+
+ var failureMechanism = new SpecificFailureMechanism
+ {
+ Name = entity.Name,
+ Code = entity.Code,
+ GeneralInput =
+ {
+ N = (RoundedDouble) entity.N,
+ ApplyLengthEffectInSection = Convert.ToBoolean(entity.ApplyLengthEffectInSection)
+ }
+ };
+ entity.ReadCommonFailureMechanismProperties(failureMechanism, collector);
+ ReadFailureMechanismSectionResults(entity, failureMechanism, collector);
+ return failureMechanism;
+ }
+
+ private static void ReadFailureMechanismSectionResults(this IFailureMechanismEntity entity,
+ SpecificFailureMechanism specificFailureMechanism,
+ ReadConversionCollector collector)
+ {
+ foreach (NonAdoptableWithProfileProbabilityFailureMechanismSectionResultEntity sectionResultEntity in
+ entity.FailureMechanismSectionEntities.SelectMany(fms => fms.NonAdoptableWithProfileProbabilityFailureMechanismSectionResultEntities))
+ {
+ FailureMechanismSection failureMechanismSection = collector.Get(sectionResultEntity.FailureMechanismSectionEntity);
+ NonAdoptableWithProfileProbabilityFailureMechanismSectionResult sectionResult = specificFailureMechanism.SectionResults.Single(sr => ReferenceEquals(sr.Section, failureMechanismSection));
+
+ sectionResultEntity.Read(sectionResult);
+ }
+ }
+ }
+}
\ No newline at end of file
Fisheye: Tag e63d76cffd22655ce3e821d57f05e66464eec2cb refers to a dead (removed) revision in file `Riskeer/Storage/test/Riskeer.Storage.Core.Test/Read/FailurePathEntityReadExtensionsTest.cs'.
Fisheye: No comparison available. Pass `N' to diff?
Index: Riskeer/Storage/test/Riskeer.Storage.Core.Test/Read/SpecificFailureMechanismEntityReadExtensionsTest.cs
===================================================================
diff -u
--- Riskeer/Storage/test/Riskeer.Storage.Core.Test/Read/SpecificFailureMechanismEntityReadExtensionsTest.cs (revision 0)
+++ Riskeer/Storage/test/Riskeer.Storage.Core.Test/Read/SpecificFailureMechanismEntityReadExtensionsTest.cs (revision e63d76cffd22655ce3e821d57f05e66464eec2cb)
@@ -0,0 +1,205 @@
+// Copyright (C) Stichting Deltares 2021. All rights reserved.
+//
+// This file is part of Riskeer.
+//
+// Riskeer is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see .
+//
+// All names, logos, and references to "Deltares" are registered trademarks of
+// Stichting Deltares and remain full property of Stichting Deltares at all times.
+// 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;
+using Riskeer.Storage.Core.DbContext;
+using Riskeer.Storage.Core.Read;
+using Riskeer.Storage.Core.Serializers;
+using Riskeer.Storage.Core.TestUtil;
+
+namespace Riskeer.Storage.Core.Test.Read
+{
+ [TestFixture]
+ public class SpecificFailureMechanismEntityReadExtensionsTest
+ {
+ [Test]
+ public void Read_EntityNull_ThrowArgumentNullException()
+ {
+ // Call
+ void Call() => ((SpecificFailureMechanismEntity) null).Read(new ReadConversionCollector());
+
+ // Assert
+ string paramName = Assert.Throws(Call).ParamName;
+ Assert.AreEqual("entity", paramName);
+ }
+
+ [Test]
+ public void Read_CollectorNull_ThrowArgumentNullException()
+ {
+ // Setup
+ var entity = new SpecificFailureMechanismEntity();
+
+ // Call
+ void Call() => entity.Read(null);
+
+ // Assert
+ string paramName = Assert.Throws(Call).ParamName;
+ Assert.AreEqual("collector", paramName);
+ }
+
+ [Test]
+ public void Read_ValidEntity_ReturnSpecificFailureMechanism()
+ {
+ // Setup
+ var random = new Random(21);
+ bool inAssembly = random.NextBoolean();
+ var probabilityResultType = random.NextEnumValue();
+
+ const string filePath = "failureMechanismSections/File/Path";
+ var entity = new SpecificFailureMechanismEntity
+ {
+ Name = "Specific failure mechanism name",
+ Code = "FAALMECHANISME",
+ N = random.NextDouble(1.0, 20.0),
+ ApplyLengthEffectInSection = Convert.ToByte(random.NextBoolean()),
+ InAssembly = Convert.ToByte(inAssembly),
+ InAssemblyInputComments = "Some input text",
+ InAssemblyOutputComments = "Some output text",
+ NotInAssemblyComments = "Some not in assembly text",
+ FailureMechanismSectionCollectionSourcePath = filePath,
+ FailureMechanismAssemblyResultProbabilityResultType = Convert.ToByte(probabilityResultType),
+ FailureMechanismAssemblyResultManualFailureMechanismAssemblyProbability = random.NextDouble(),
+ FailureMechanismSectionEntities =
+ {
+ CreateSimpleFailureMechanismSectionEntity()
+ }
+ };
+
+ var collector = new ReadConversionCollector();
+
+ // Call
+ SpecificFailureMechanism specificFailureMechanism = entity.Read(collector);
+
+ // Assert
+ FailureMechanismEntityTestHelper.AssertIFailureMechanismEntityProperties(entity, specificFailureMechanism);
+
+ Assert.AreEqual(entity.Name, specificFailureMechanism.Name);
+ Assert.AreEqual(entity.Code, specificFailureMechanism.Code);
+ Assert.AreEqual(entity.FailureMechanismSectionEntities.Count, specificFailureMechanism.Sections.Count());
+ Assert.AreEqual(filePath, specificFailureMechanism.FailureMechanismSectionSourcePath);
+
+ Assert.AreEqual(entity.N, specificFailureMechanism.GeneralInput.N, specificFailureMechanism.GeneralInput.N.GetAccuracy());
+ Assert.AreEqual(Convert.ToBoolean(entity.ApplyLengthEffectInSection), specificFailureMechanism.GeneralInput.ApplyLengthEffectInSection);
+ }
+
+ [Test]
+ public void Read_EntityWithNullValues_ReturnSpecificFailureMechanism()
+ {
+ // Setup
+ var entity = new SpecificFailureMechanismEntity
+ {
+ N = 1.1
+ };
+ var collector = new ReadConversionCollector();
+
+ // Call
+ SpecificFailureMechanism specificFailureMechanism = entity.Read(collector);
+
+ // Assert
+ FailureMechanismAssemblyResult assemblyResult = specificFailureMechanism.AssemblyResult;
+ Assert.IsNaN(assemblyResult.ManualFailureMechanismAssemblyProbability);
+ }
+
+ [Test]
+ public void Read_ValidEntityWithoutSections_ReturnSpecificFailureMechanism()
+ {
+ // Setup
+ var entity = new SpecificFailureMechanismEntity
+ {
+ N = 1.1
+ };
+
+ var collector = new ReadConversionCollector();
+
+ // Call
+ SpecificFailureMechanism specificFailureMechanism = entity.Read(collector);
+
+ // Assert
+ Assert.AreEqual(entity.FailureMechanismSectionEntities.Count, specificFailureMechanism.Sections.Count());
+ Assert.IsNull(specificFailureMechanism.FailureMechanismSectionSourcePath);
+ }
+
+ [Test]
+ public void Read_ValidEntityWithSections_ReturnSpecificFailureMechanism()
+ {
+ // Setup
+ const string filePath = "sections/File/Path";
+ FailureMechanismSectionEntity failureMechanismSectionEntity = CreateSimpleFailureMechanismSectionEntity();
+
+ var sectionResultEntity = new NonAdoptableWithProfileProbabilityFailureMechanismSectionResultEntity
+ {
+ FailureMechanismSectionEntity = failureMechanismSectionEntity
+ };
+ SectionResultTestHelper.SetSectionResult(sectionResultEntity);
+
+ failureMechanismSectionEntity.NonAdoptableWithProfileProbabilityFailureMechanismSectionResultEntities = new List
+ {
+ sectionResultEntity
+ };
+
+ var entity = new SpecificFailureMechanismEntity
+ {
+ N = 1.1,
+ FailureMechanismSectionEntities = new List
+ {
+ failureMechanismSectionEntity
+ },
+ FailureMechanismSectionCollectionSourcePath = filePath
+ };
+
+ var collector = new ReadConversionCollector();
+
+ // Call
+ SpecificFailureMechanism specificFailureMechanism = entity.Read(collector);
+
+ // Assert
+ Assert.AreEqual(filePath, specificFailureMechanism.FailureMechanismSectionSourcePath);
+ Assert.AreEqual(entity.FailureMechanismSectionEntities.Count, specificFailureMechanism.Sections.Count());
+
+ SectionResultTestHelper.AssertSectionResult(entity.FailureMechanismSectionEntities
+ .SelectMany(fms => fms.NonAdoptableWithProfileProbabilityFailureMechanismSectionResultEntities)
+ .Single(),
+ specificFailureMechanism.SectionResults.Single());
+ }
+
+ private static FailureMechanismSectionEntity CreateSimpleFailureMechanismSectionEntity()
+ {
+ var dummyPoints = new[]
+ {
+ new Point2D(0, 0)
+ };
+ string dummyPointXml = new Point2DCollectionXmlSerializer().ToXml(dummyPoints);
+ var failureMechanismSectionEntity = new FailureMechanismSectionEntity
+ {
+ Name = "section",
+ FailureMechanismSectionPointXml = dummyPointXml
+ };
+ return failureMechanismSectionEntity;
+ }
+ }
+}
\ No newline at end of file