Index: Riskeer/Storage/src/Riskeer.Storage.Core/Create/GrassCoverSlipOffInwards/GrassCoverSlipOffInwardsFailureMechanismCreateExtensions.cs =================================================================== diff -u -r86ffd1424dc9eb520f5530655e218526ac74da91 -r521d10695326519942a95db0d8746da32c586668 --- Riskeer/Storage/src/Riskeer.Storage.Core/Create/GrassCoverSlipOffInwards/GrassCoverSlipOffInwardsFailureMechanismCreateExtensions.cs (.../GrassCoverSlipOffInwardsFailureMechanismCreateExtensions.cs) (revision 86ffd1424dc9eb520f5530655e218526ac74da91) +++ Riskeer/Storage/src/Riskeer.Storage.Core/Create/GrassCoverSlipOffInwards/GrassCoverSlipOffInwardsFailureMechanismCreateExtensions.cs (.../GrassCoverSlipOffInwardsFailureMechanismCreateExtensions.cs) (revision 521d10695326519942a95db0d8746da32c586668) @@ -62,10 +62,7 @@ private static void AddEntitiesForFailureMechanismMeta(GrassCoverSlipOffInwardsFailureMechanism mechanism, FailureMechanismEntity entity) { - entity.GrassCoverSlipOffInwardsFailureMechanismMetaEntities.Add(new GrassCoverSlipOffInwardsFailureMechanismMetaEntity - { - N = mechanism.GeneralInput.N - }); + entity.GrassCoverSlipOffInwardsFailureMechanismMetaEntities.Add(mechanism.Create()); } } } \ No newline at end of file Index: Riskeer/Storage/src/Riskeer.Storage.Core/Create/GrassCoverSlipOffOutwards/GrassCoverSlipOffOutwardsFailureMechanismCreateExtensions.cs =================================================================== diff -u -r86ffd1424dc9eb520f5530655e218526ac74da91 -r521d10695326519942a95db0d8746da32c586668 --- Riskeer/Storage/src/Riskeer.Storage.Core/Create/GrassCoverSlipOffOutwards/GrassCoverSlipOffOutwardsFailureMechanismCreateExtensions.cs (.../GrassCoverSlipOffOutwardsFailureMechanismCreateExtensions.cs) (revision 86ffd1424dc9eb520f5530655e218526ac74da91) +++ Riskeer/Storage/src/Riskeer.Storage.Core/Create/GrassCoverSlipOffOutwards/GrassCoverSlipOffOutwardsFailureMechanismCreateExtensions.cs (.../GrassCoverSlipOffOutwardsFailureMechanismCreateExtensions.cs) (revision 521d10695326519942a95db0d8746da32c586668) @@ -62,10 +62,7 @@ private static void AddEntitiesForFailureMechanismMeta(GrassCoverSlipOffOutwardsFailureMechanism mechanism, FailureMechanismEntity entity) { - entity.GrassCoverSlipOffOutwardsFailureMechanismMetaEntities.Add(new GrassCoverSlipOffOutwardsFailureMechanismMetaEntity - { - N = mechanism.GeneralInput.N - }); + entity.GrassCoverSlipOffOutwardsFailureMechanismMetaEntities.Add(mechanism.Create()); } } } \ No newline at end of file Index: Riskeer/Storage/src/Riskeer.Storage.Core/Create/IHasGeneralInputCreateExtensions.cs =================================================================== diff -u --- Riskeer/Storage/src/Riskeer.Storage.Core/Create/IHasGeneralInputCreateExtensions.cs (revision 0) +++ Riskeer/Storage/src/Riskeer.Storage.Core/Create/IHasGeneralInputCreateExtensions.cs (revision 521d10695326519942a95db0d8746da32c586668) @@ -0,0 +1,42 @@ +// 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 Riskeer.Common.Data.FailureMechanism; +using Riskeer.Storage.Core.DbContext; + +namespace Riskeer.Storage.Core.Create +{ + /// + /// Extension methods for related + /// to creating an implementation of . + /// + internal static class IHasGeneralInputCreateExtensions + { + internal static TFailureMechanismMetaEntity Create(this IHasGeneralInput mechanism) + where TFailureMechanismMetaEntity : IStandAloneFailureMechanismMetaEntity, new() + { + return new TFailureMechanismMetaEntity + { + N = mechanism.GeneralInput.N + }; + } + } +} \ No newline at end of file Index: Riskeer/Storage/src/Riskeer.Storage.Core/Create/Microstability/MicrostabilityFailureMechanismCreateExtensions.cs =================================================================== diff -u -re2ee4730fc52b3e724cf7d2881aa9c641e767fca -r521d10695326519942a95db0d8746da32c586668 --- Riskeer/Storage/src/Riskeer.Storage.Core/Create/Microstability/MicrostabilityFailureMechanismCreateExtensions.cs (.../MicrostabilityFailureMechanismCreateExtensions.cs) (revision e2ee4730fc52b3e724cf7d2881aa9c641e767fca) +++ Riskeer/Storage/src/Riskeer.Storage.Core/Create/Microstability/MicrostabilityFailureMechanismCreateExtensions.cs (.../MicrostabilityFailureMechanismCreateExtensions.cs) (revision 521d10695326519942a95db0d8746da32c586668) @@ -59,13 +59,10 @@ section.MicrostabilitySectionResultEntities.Add(sectionResultEntity); } } - + private static void AddEntitiesForFailureMechanismMeta(MicrostabilityFailureMechanism mechanism, FailureMechanismEntity entity) { - entity.MicrostabilityFailureMechanismMetaEntities.Add(new MicrostabilityFailureMechanismMetaEntity - { - N = mechanism.GeneralInput.N - }); + entity.MicrostabilityFailureMechanismMetaEntities.Add(mechanism.Create()); } } } \ No newline at end of file Index: Riskeer/Storage/src/Riskeer.Storage.Core/Create/StrengthStabilityLengthwise/StrengthStabilityLengthwiseConstructionFailureMechanismCreateExtensions.cs =================================================================== diff -u -r86ffd1424dc9eb520f5530655e218526ac74da91 -r521d10695326519942a95db0d8746da32c586668 --- Riskeer/Storage/src/Riskeer.Storage.Core/Create/StrengthStabilityLengthwise/StrengthStabilityLengthwiseConstructionFailureMechanismCreateExtensions.cs (.../StrengthStabilityLengthwiseConstructionFailureMechanismCreateExtensions.cs) (revision 86ffd1424dc9eb520f5530655e218526ac74da91) +++ Riskeer/Storage/src/Riskeer.Storage.Core/Create/StrengthStabilityLengthwise/StrengthStabilityLengthwiseConstructionFailureMechanismCreateExtensions.cs (.../StrengthStabilityLengthwiseConstructionFailureMechanismCreateExtensions.cs) (revision 521d10695326519942a95db0d8746da32c586668) @@ -62,10 +62,8 @@ private static void AddEntitiesForFailureMechanismMeta(StrengthStabilityLengthwiseConstructionFailureMechanism mechanism, FailureMechanismEntity entity) { - entity.StrengthStabilityLengthwiseConstructionFailureMechanismMetaEntities.Add(new StrengthStabilityLengthwiseConstructionFailureMechanismMetaEntity - { - N = mechanism.GeneralInput.N - }); + entity.StrengthStabilityLengthwiseConstructionFailureMechanismMetaEntities.Add( + mechanism.Create()); } } } \ No newline at end of file Index: Riskeer/Storage/src/Riskeer.Storage.Core/Create/TechnicalInnovation/TechnicalInnovationFailureMechanismCreateExtensions.cs =================================================================== diff -u -r86ffd1424dc9eb520f5530655e218526ac74da91 -r521d10695326519942a95db0d8746da32c586668 --- Riskeer/Storage/src/Riskeer.Storage.Core/Create/TechnicalInnovation/TechnicalInnovationFailureMechanismCreateExtensions.cs (.../TechnicalInnovationFailureMechanismCreateExtensions.cs) (revision 86ffd1424dc9eb520f5530655e218526ac74da91) +++ Riskeer/Storage/src/Riskeer.Storage.Core/Create/TechnicalInnovation/TechnicalInnovationFailureMechanismCreateExtensions.cs (.../TechnicalInnovationFailureMechanismCreateExtensions.cs) (revision 521d10695326519942a95db0d8746da32c586668) @@ -62,10 +62,7 @@ private static void AddEntitiesForFailureMechanismMeta(TechnicalInnovationFailureMechanism mechanism, FailureMechanismEntity entity) { - entity.TechnicalInnovationFailureMechanismMetaEntities.Add(new TechnicalInnovationFailureMechanismMetaEntity - { - N = mechanism.GeneralInput.N - }); + entity.TechnicalInnovationFailureMechanismMetaEntities.Add(mechanism.Create()); } } } \ No newline at end of file Index: Riskeer/Storage/src/Riskeer.Storage.Core/Create/WaterPressureAsphaltCover/WaterPressureAsphaltCoverFailureMechanismCreateExtensions.cs =================================================================== diff -u -r86ffd1424dc9eb520f5530655e218526ac74da91 -r521d10695326519942a95db0d8746da32c586668 --- Riskeer/Storage/src/Riskeer.Storage.Core/Create/WaterPressureAsphaltCover/WaterPressureAsphaltCoverFailureMechanismCreateExtensions.cs (.../WaterPressureAsphaltCoverFailureMechanismCreateExtensions.cs) (revision 86ffd1424dc9eb520f5530655e218526ac74da91) +++ Riskeer/Storage/src/Riskeer.Storage.Core/Create/WaterPressureAsphaltCover/WaterPressureAsphaltCoverFailureMechanismCreateExtensions.cs (.../WaterPressureAsphaltCoverFailureMechanismCreateExtensions.cs) (revision 521d10695326519942a95db0d8746da32c586668) @@ -62,10 +62,7 @@ private static void AddEntitiesForFailureMechanismMeta(WaterPressureAsphaltCoverFailureMechanism mechanism, FailureMechanismEntity entity) { - entity.WaterPressureAsphaltCoverFailureMechanismMetaEntities.Add(new WaterPressureAsphaltCoverFailureMechanismMetaEntity - { - N = mechanism.GeneralInput.N - }); + entity.WaterPressureAsphaltCoverFailureMechanismMetaEntities.Add(mechanism.Create()); } } } \ No newline at end of file Index: Riskeer/Storage/test/Riskeer.Storage.Core.Test/Create/IHasGeneralInputCreateExtensionsTest.cs =================================================================== diff -u --- Riskeer/Storage/test/Riskeer.Storage.Core.Test/Create/IHasGeneralInputCreateExtensionsTest.cs (revision 0) +++ Riskeer/Storage/test/Riskeer.Storage.Core.Test/Create/IHasGeneralInputCreateExtensionsTest.cs (revision 521d10695326519942a95db0d8746da32c586668) @@ -0,0 +1,56 @@ +// 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 Core.Common.TestUtil; +using NUnit.Framework; +using Rhino.Mocks; +using Riskeer.Common.Data.FailureMechanism; +using Riskeer.Storage.Core.Create; +using Riskeer.Storage.Core.DbContext; + +namespace Riskeer.Storage.Core.Test.Create +{ + [TestFixture] + public class IHasGeneralInputCreateExtensionsTest + { + [Test] + public void Create_Always_ReturnsExpectedMetaEntity() + { + // Setup + var mocks = new MockRepository(); + var failureMechanism = mocks.Stub(); + failureMechanism.GeneralInput.N = new Random().NextRoundedDouble(1, 20); + + // Call + var metaEntity = failureMechanism.Create(); + + // Assert + Assert.IsInstanceOf(metaEntity); + Assert.AreEqual(failureMechanism.GeneralInput.N, metaEntity.N); + } + + private class TestFailureMechanismMetaEntity : IStandAloneFailureMechanismMetaEntity + { + public double N { get; set; } + } + } +} \ No newline at end of file