Index: Riskeer/Storage/src/Riskeer.Storage.Core/Create/StabilityStoneCover/StabilityStoneCoverFailureMechanismCreateExtensions.cs =================================================================== diff -u -r3f50a70f98a40d8fce8b44527aa218a2bdad6d78 -ra2cb9d8334da2d83cf403720d9af9473fd8a5961 --- Riskeer/Storage/src/Riskeer.Storage.Core/Create/StabilityStoneCover/StabilityStoneCoverFailureMechanismCreateExtensions.cs (.../StabilityStoneCoverFailureMechanismCreateExtensions.cs) (revision 3f50a70f98a40d8fce8b44527aa218a2bdad6d78) +++ Riskeer/Storage/src/Riskeer.Storage.Core/Create/StabilityStoneCover/StabilityStoneCoverFailureMechanismCreateExtensions.cs (.../StabilityStoneCoverFailureMechanismCreateExtensions.cs) (revision a2cb9d8334da2d83cf403720d9af9473fd8a5961) @@ -23,7 +23,9 @@ using System.Collections.Generic; using Core.Common.Util.Extensions; using Riskeer.Common.Data.DikeProfiles; +using Riskeer.Common.Data.FailureMechanism; using Riskeer.StabilityStoneCover.Data; +using Riskeer.Storage.Core.Create.FailureMechanismSectionResults; using Riskeer.Storage.Core.DbContext; namespace Riskeer.Storage.Core.Create.StabilityStoneCover @@ -43,7 +45,7 @@ internal static FailureMechanismEntity Create(this StabilityStoneCoverFailureMechanism mechanism, PersistenceRegistry registry) { FailureMechanismEntity entity = mechanism.Create(FailureMechanismType.StabilityStoneRevetment, registry); - AddEntitiesForSectionResults(mechanism.SectionResultsOld, registry); + AddEntitiesForSectionResults(mechanism.SectionResults, registry); AddEntitiesForFailureMechanismMeta(mechanism, entity); AddEntitiesForForeshoreProfiles(mechanism.ForeshoreProfiles, entity, registry); @@ -53,12 +55,12 @@ } private static void AddEntitiesForSectionResults( - IEnumerable sectionResults, + IEnumerable sectionResults, PersistenceRegistry registry) { - foreach (StabilityStoneCoverFailureMechanismSectionResultOld failureMechanismSectionResult in sectionResults) + foreach (NonAdoptableWithProfileProbabilityFailureMechanismSectionResult failureMechanismSectionResult in sectionResults) { - StabilityStoneCoverSectionResultEntity sectionResultEntity = failureMechanismSectionResult.Create(); + var sectionResultEntity = failureMechanismSectionResult.Create(); FailureMechanismSectionEntity section = registry.Get(failureMechanismSectionResult.Section); section.StabilityStoneCoverSectionResultEntities.Add(sectionResultEntity); } Fisheye: Tag a2cb9d8334da2d83cf403720d9af9473fd8a5961 refers to a dead (removed) revision in file `Riskeer/Storage/src/Riskeer.Storage.Core/Create/StabilityStoneCover/StabilityStoneCoverFailureMechanismSectionResultCreateExtensions.cs'. Fisheye: No comparison available. Pass `N' to diff? Index: Riskeer/Storage/src/Riskeer.Storage.Core/DbContext/Partials/PartialStabilityStoneCoverSectionResultEntity.cs =================================================================== diff -u --- Riskeer/Storage/src/Riskeer.Storage.Core/DbContext/Partials/PartialStabilityStoneCoverSectionResultEntity.cs (revision 0) +++ Riskeer/Storage/src/Riskeer.Storage.Core/DbContext/Partials/PartialStabilityStoneCoverSectionResultEntity.cs (revision a2cb9d8334da2d83cf403720d9af9473fd8a5961) @@ -0,0 +1,29 @@ +// 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. + +namespace Riskeer.Storage.Core.DbContext +{ + /// + /// Partial implementation of that implements + /// . + /// + public partial class StabilityStoneCoverSectionResultEntity : INonAdoptableWithProfileProbabilityFailureMechanismSectionResultEntity {} +} \ No newline at end of file Index: Riskeer/Storage/src/Riskeer.Storage.Core/DbContext/StabilityStoneCoverSectionResultEntity.cs =================================================================== diff -u -r0e17e1577dc9d86826dc72fd1f27cecad0d53d7c -ra2cb9d8334da2d83cf403720d9af9473fd8a5961 --- Riskeer/Storage/src/Riskeer.Storage.Core/DbContext/StabilityStoneCoverSectionResultEntity.cs (.../StabilityStoneCoverSectionResultEntity.cs) (revision 0e17e1577dc9d86826dc72fd1f27cecad0d53d7c) +++ Riskeer/Storage/src/Riskeer.Storage.Core/DbContext/StabilityStoneCoverSectionResultEntity.cs (.../StabilityStoneCoverSectionResultEntity.cs) (revision a2cb9d8334da2d83cf403720d9af9473fd8a5961) @@ -30,7 +30,7 @@ namespace Riskeer.Storage.Core.DbContext { - public class StabilityStoneCoverSectionResultEntity + public partial class StabilityStoneCoverSectionResultEntity { public long StabilityStoneCoverSectionResultEntityId { get; set; } public long FailureMechanismSectionEntityId { get; set; } Index: Riskeer/Storage/src/Riskeer.Storage.Core/Read/FailureMechanismEntityReadExtensions.cs =================================================================== diff -u -r83ffc93b059276cb14b8888ea7d6404093524597 -ra2cb9d8334da2d83cf403720d9af9473fd8a5961 --- Riskeer/Storage/src/Riskeer.Storage.Core/Read/FailureMechanismEntityReadExtensions.cs (.../FailureMechanismEntityReadExtensions.cs) (revision 83ffc93b059276cb14b8888ea7d6404093524597) +++ Riskeer/Storage/src/Riskeer.Storage.Core/Read/FailureMechanismEntityReadExtensions.cs (.../FailureMechanismEntityReadExtensions.cs) (revision a2cb9d8334da2d83cf403720d9af9473fd8a5961) @@ -1011,7 +1011,7 @@ foreach (StabilityStoneCoverSectionResultEntity sectionResultEntity in entity.FailureMechanismSectionEntities.SelectMany(fms => fms.StabilityStoneCoverSectionResultEntities)) { FailureMechanismSection failureMechanismSection = collector.Get(sectionResultEntity.FailureMechanismSectionEntity); - StabilityStoneCoverFailureMechanismSectionResultOld result = failureMechanism.SectionResultsOld.Single(sr => ReferenceEquals(sr.Section, failureMechanismSection)); + NonAdoptableWithProfileProbabilityFailureMechanismSectionResult result = failureMechanism.SectionResults.Single(sr => ReferenceEquals(sr.Section, failureMechanismSection)); sectionResultEntity.Read(result); } Fisheye: Tag a2cb9d8334da2d83cf403720d9af9473fd8a5961 refers to a dead (removed) revision in file `Riskeer/Storage/src/Riskeer.Storage.Core/Read/StabilityStoneCover/StabilityStoneCoverSectionResultEntityReadExtensions.cs'. Fisheye: No comparison available. Pass `N' to diff? Index: Riskeer/Storage/test/Riskeer.Storage.Core.Test/Create/FailureMechanismSectionResults/NonAdoptableWithProfileProbabilityFailureMechanismSectionResultCreateExtensionsTest.cs =================================================================== diff -u --- Riskeer/Storage/test/Riskeer.Storage.Core.Test/Create/FailureMechanismSectionResults/NonAdoptableWithProfileProbabilityFailureMechanismSectionResultCreateExtensionsTest.cs (revision 0) +++ Riskeer/Storage/test/Riskeer.Storage.Core.Test/Create/FailureMechanismSectionResults/NonAdoptableWithProfileProbabilityFailureMechanismSectionResultCreateExtensionsTest.cs (revision a2cb9d8334da2d83cf403720d9af9473fd8a5961) @@ -0,0 +1,105 @@ +// 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 Riskeer.Common.Data.FailureMechanism; +using Riskeer.Common.Data.TestUtil; +using Riskeer.Storage.Core.Create.FailureMechanismSectionResults; +using Riskeer.Storage.Core.TestUtil.FailureMechanismResults; + +namespace Riskeer.Storage.Core.Test.Create.FailureMechanismSectionResults +{ + [TestFixture] + public class NonAdoptableWithProfileProbabilityFailureMechanismSectionResultCreateExtensionsTest + { + [Test] + public void Create_FailureMechanismSectionResultNull_ThrowsArgumentNullException() + { + // Call + void Call() => ((NonAdoptableWithProfileProbabilityFailureMechanismSectionResult) null).Create(); + + // Assert + var exception = Assert.Throws(Call); + Assert.AreEqual("result", exception.ParamName); + } + + [Test] + public void Create_WithDifferentResults_ReturnsEntityWithExpectedResults() + { + // Setup + var random = new Random(21); + bool isRelevant = random.NextBoolean(); + var initialFailureMechanismResultType = random.NextEnumValue(); + double manualProfileProbability = random.NextDouble(); + double manualSectionProbability = random.NextDouble(); + bool furtherAnalysisNeeded = random.NextBoolean(); + double refinedProfileProbability = random.NextDouble(); + double refinedSectionProbability = random.NextDouble(); + + var sectionResult = new NonAdoptableWithProfileProbabilityFailureMechanismSectionResult(FailureMechanismSectionTestFactory.CreateFailureMechanismSection()) + { + IsRelevant = isRelevant, + InitialFailureMechanismResult = initialFailureMechanismResultType, + ManualInitialFailureMechanismResultProfileProbability = manualProfileProbability, + ManualInitialFailureMechanismResultSectionProbability = manualSectionProbability, + FurtherAnalysisNeeded = furtherAnalysisNeeded, + RefinedProfileProbability = refinedProfileProbability, + RefinedSectionProbability = refinedSectionProbability + }; + + // Call + var entity = sectionResult.Create(); + + // Assert + Assert.AreEqual(Convert.ToByte(isRelevant), entity.IsRelevant); + Assert.AreEqual(Convert.ToByte(initialFailureMechanismResultType), entity.InitialFailureMechanismResultType); + Assert.AreEqual(manualProfileProbability, entity.ManualInitialFailureMechanismResultProfileProbability); + Assert.AreEqual(manualSectionProbability, entity.ManualInitialFailureMechanismResultSectionProbability); + Assert.AreEqual(Convert.ToByte(furtherAnalysisNeeded), entity.FurtherAnalysisNeeded); + Assert.AreEqual(refinedProfileProbability, entity.RefinedProfileProbability); + Assert.AreEqual(refinedSectionProbability, entity.RefinedSectionProbability); + } + + [Test] + public void Create_SectionResultWithNaNValues_ReturnsEntityWithExpectedResults() + { + // Setup + var sectionResult = new NonAdoptableWithProfileProbabilityFailureMechanismSectionResult(FailureMechanismSectionTestFactory.CreateFailureMechanismSection()) + { + ManualInitialFailureMechanismResultProfileProbability = double.NaN, + ManualInitialFailureMechanismResultSectionProbability = double.NaN, + RefinedProfileProbability = double.NaN, + RefinedSectionProbability = double.NaN + }; + + // Call + var entity = sectionResult.Create(); + + // Assert + Assert.IsNull(entity.ManualInitialFailureMechanismResultProfileProbability); + Assert.IsNull(entity.ManualInitialFailureMechanismResultSectionProbability); + Assert.IsNull(entity.RefinedProfileProbability); + Assert.IsNull(entity.RefinedSectionProbability); + } + } +} \ No newline at end of file Fisheye: Tag a2cb9d8334da2d83cf403720d9af9473fd8a5961 refers to a dead (removed) revision in file `Riskeer/Storage/test/Riskeer.Storage.Core.Test/Create/StabilityStoneCover/StabilityStoneCoverFailureMechanismSectionResultCreateExtensionsTest.cs'. Fisheye: No comparison available. Pass `N' to diff? Index: Riskeer/Storage/test/Riskeer.Storage.Core.Test/Read/FailureMechanismSectionResults/NonAdoptableWithProfileProbabilityFailureMechanismSectionResultEntityReadExtensionsTest.cs =================================================================== diff -u --- Riskeer/Storage/test/Riskeer.Storage.Core.Test/Read/FailureMechanismSectionResults/NonAdoptableWithProfileProbabilityFailureMechanismSectionResultEntityReadExtensionsTest.cs (revision 0) +++ Riskeer/Storage/test/Riskeer.Storage.Core.Test/Read/FailureMechanismSectionResults/NonAdoptableWithProfileProbabilityFailureMechanismSectionResultEntityReadExtensionsTest.cs (revision a2cb9d8334da2d83cf403720d9af9473fd8a5961) @@ -0,0 +1,117 @@ +// 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 Riskeer.Common.Data.FailureMechanism; +using Riskeer.Common.Data.TestUtil; +using Riskeer.Storage.Core.DbContext; +using Riskeer.Storage.Core.Read.FailureMechanismSectionResults; + +namespace Riskeer.Storage.Core.Test.Read.FailureMechanismSectionResults +{ + [TestFixture] + public class NonAdoptableWithProfileProbabilityFailureMechanismSectionResultEntityReadExtensionsTest + { + [Test] + public void Read_EntityNull_ThrowsArgumentNullException() + { + // Call + void Call() => ((StabilityStoneCoverSectionResultEntity) null).Read( + new NonAdoptableWithProfileProbabilityFailureMechanismSectionResult(FailureMechanismSectionTestFactory.CreateFailureMechanismSection())); + + // Assert + var exception = Assert.Throws(Call); + Assert.AreEqual("entity", exception.ParamName); + } + + [Test] + public void Read_SectionResultNull_ThrowsArgumentNullException() + { + // Setup + var entity = new StabilityStoneCoverSectionResultEntity(); + + // Call + void Call() => entity.Read(null); + + // Assert + string paramName = Assert.Throws(Call).ParamName; + Assert.AreEqual("sectionResult", paramName); + } + + [Test] + public void Read_ParameterValues_SectionResultWithParameterValues() + { + // Setup + var random = new Random(21); + bool isRelevant = random.NextBoolean(); + var initialFailureMechanismResultType = random.NextEnumValue(); + double manualProfileProbability = random.NextDouble(); + double manualSectionProbability = random.NextDouble(); + bool furtherAnalysisNeeded = random.NextBoolean(); + double refinedProfileProbability = random.NextDouble(); + double refinedSectionProbability = random.NextDouble(); + + var entity = new StabilityStoneCoverSectionResultEntity + { + IsRelevant = Convert.ToByte(isRelevant), + InitialFailureMechanismResultType = Convert.ToByte(initialFailureMechanismResultType), + ManualInitialFailureMechanismResultProfileProbability = manualProfileProbability, + ManualInitialFailureMechanismResultSectionProbability = manualSectionProbability, + FurtherAnalysisNeeded = Convert.ToByte(furtherAnalysisNeeded), + RefinedProfileProbability = refinedProfileProbability, + RefinedSectionProbability = refinedSectionProbability + }; + + var sectionResult = new NonAdoptableWithProfileProbabilityFailureMechanismSectionResult(FailureMechanismSectionTestFactory.CreateFailureMechanismSection()); + + // Call + entity.Read(sectionResult); + + // Assert + Assert.AreEqual(isRelevant, sectionResult.IsRelevant); + Assert.AreEqual(initialFailureMechanismResultType, sectionResult.InitialFailureMechanismResult); + Assert.AreEqual(manualProfileProbability, sectionResult.ManualInitialFailureMechanismResultProfileProbability); + Assert.AreEqual(manualSectionProbability, sectionResult.ManualInitialFailureMechanismResultSectionProbability); + Assert.AreEqual(furtherAnalysisNeeded, sectionResult.FurtherAnalysisNeeded); + Assert.AreEqual(refinedProfileProbability, sectionResult.RefinedProfileProbability); + Assert.AreEqual(refinedSectionProbability, sectionResult.RefinedSectionProbability); + } + + [Test] + public void Read_EntityWithNullValues_SectionResultWithNaNValues() + { + // Setup + var entity = new StabilityStoneCoverSectionResultEntity(); + var sectionResult = new NonAdoptableWithProfileProbabilityFailureMechanismSectionResult(FailureMechanismSectionTestFactory.CreateFailureMechanismSection()); + + // Call + entity.Read(sectionResult); + + // Assert + Assert.IsNaN(sectionResult.ManualInitialFailureMechanismResultProfileProbability); + Assert.IsNaN(sectionResult.ManualInitialFailureMechanismResultSectionProbability); + Assert.IsNaN(sectionResult.RefinedProfileProbability); + Assert.IsNaN(sectionResult.RefinedSectionProbability); + } + } +} \ No newline at end of file Fisheye: Tag a2cb9d8334da2d83cf403720d9af9473fd8a5961 refers to a dead (removed) revision in file `Riskeer/Storage/test/Riskeer.Storage.Core.Test/Read/StabilityStoneCover/StabilityStoneCoverSectionResultEntityReadExtensionsTest.cs'. Fisheye: No comparison available. Pass `N' to diff? Index: Riskeer/Storage/test/Riskeer.Storage.Core.TestUtil/FailureMechanismResults/TestNonAdoptableWithProfileProbabilityFailureMechanismSectionResultEntity.cs =================================================================== diff -u --- Riskeer/Storage/test/Riskeer.Storage.Core.TestUtil/FailureMechanismResults/TestNonAdoptableWithProfileProbabilityFailureMechanismSectionResultEntity.cs (revision 0) +++ Riskeer/Storage/test/Riskeer.Storage.Core.TestUtil/FailureMechanismResults/TestNonAdoptableWithProfileProbabilityFailureMechanismSectionResultEntity.cs (revision a2cb9d8334da2d83cf403720d9af9473fd8a5961) @@ -0,0 +1,18 @@ +using Riskeer.Storage.Core.DbContext; + +namespace Riskeer.Storage.Core.TestUtil.FailureMechanismResults +{ + /// + /// Simple implementation of that can be used in tests. + /// + public class TestNonAdoptableWithProfileProbabilityFailureMechanismSectionResultEntity : INonAdoptableWithProfileProbabilityFailureMechanismSectionResultEntity + { + public byte IsRelevant { get; set; } + public byte InitialFailureMechanismResultType { get; set; } + public double? ManualInitialFailureMechanismResultSectionProbability { get; set; } + public byte FurtherAnalysisNeeded { get; set; } + public double? RefinedSectionProbability { get; set; } + public double? ManualInitialFailureMechanismResultProfileProbability { get; set; } + public double? RefinedProfileProbability { get; set; } + } +} \ No newline at end of file