Index: Riskeer/Integration/src/Riskeer.Integration.Plugin/FileImporters/AdoptableWithProfileProbabilityFailureMechanismSectionResultUpdateStrategy.cs =================================================================== diff -u --- Riskeer/Integration/src/Riskeer.Integration.Plugin/FileImporters/AdoptableWithProfileProbabilityFailureMechanismSectionResultUpdateStrategy.cs (revision 0) +++ Riskeer/Integration/src/Riskeer.Integration.Plugin/FileImporters/AdoptableWithProfileProbabilityFailureMechanismSectionResultUpdateStrategy.cs (revision a61f42d44b452c6e032b029550d1c2b39efe12b1) @@ -0,0 +1,57 @@ +// 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 Riskeer.Common.Data.FailureMechanism; +using Riskeer.Common.IO.FileImporters; + +namespace Riskeer.Integration.Plugin.FileImporters +{ + /// + /// An update strategy that can be used to update a + /// instance with data from an old instance. + /// + public class AdoptableWithProfileProbabilityFailureMechanismSectionResultUpdateStrategy + : IFailureMechanismSectionResultUpdateStrategy + { + public void UpdateSectionResult(AdoptableWithProfileProbabilityFailureMechanismSectionResult origin, AdoptableWithProfileProbabilityFailureMechanismSectionResult target) + { + if (origin == null) + { + throw new ArgumentNullException(nameof(origin)); + } + + if (target == null) + { + throw new ArgumentNullException(nameof(target)); + } + + target.IsRelevant = origin.IsRelevant; + target.InitialFailureMechanismResultType = origin.InitialFailureMechanismResultType; + target.ManualInitialFailureMechanismResultSectionProbability = origin.ManualInitialFailureMechanismResultSectionProbability; + target.ManualInitialFailureMechanismResultProfileProbability = origin.ManualInitialFailureMechanismResultProfileProbability; + target.FurtherAnalysisNeeded = origin.FurtherAnalysisNeeded; + target.ProbabilityRefinementType = origin.ProbabilityRefinementType; + target.RefinedSectionProbability = origin.RefinedSectionProbability; + target.RefinedProfileProbability = origin.RefinedProfileProbability; + } + } +} \ No newline at end of file Index: Riskeer/Integration/test/Riskeer.Integration.Plugin.Test/FileImporters/AdoptableWithProfileProbabilityFailureMechanismSectionResultUpdateStrategyTest.cs =================================================================== diff -u --- Riskeer/Integration/test/Riskeer.Integration.Plugin.Test/FileImporters/AdoptableWithProfileProbabilityFailureMechanismSectionResultUpdateStrategyTest.cs (revision 0) +++ Riskeer/Integration/test/Riskeer.Integration.Plugin.Test/FileImporters/AdoptableWithProfileProbabilityFailureMechanismSectionResultUpdateStrategyTest.cs (revision a61f42d44b452c6e032b029550d1c2b39efe12b1) @@ -0,0 +1,69 @@ +// 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.Common.Plugin.TestUtil.FileImporters; +using Riskeer.Integration.Plugin.FileImporters; + +namespace Riskeer.Integration.Plugin.Test.FileImporters +{ + [TestFixture] + public class AdoptableWithProfileProbabilityFailureMechanismSectionResultUpdateStrategyTest : FailureMechanismSectionResultUpdateStrategyTestFixture< + AdoptableWithProfileProbabilityFailureMechanismSectionResultUpdateStrategy, AdoptableWithProfileProbabilityFailureMechanismSectionResult> + { + protected override AdoptableWithProfileProbabilityFailureMechanismSectionResult CreateEmptySectionResult() + { + return new AdoptableWithProfileProbabilityFailureMechanismSectionResult(FailureMechanismSectionTestFactory.CreateFailureMechanismSection()); + } + + protected override AdoptableWithProfileProbabilityFailureMechanismSectionResult CreateConfiguredSectionResult() + { + var random = new Random(39); + return new AdoptableWithProfileProbabilityFailureMechanismSectionResult(FailureMechanismSectionTestFactory.CreateFailureMechanismSection()) + { + IsRelevant = random.NextBoolean(), + InitialFailureMechanismResultType = random.NextEnumValue(), + ManualInitialFailureMechanismResultSectionProbability = random.NextDouble(), + ManualInitialFailureMechanismResultProfileProbability = random.NextDouble(), + FurtherAnalysisNeeded = random.NextBoolean(), + ProbabilityRefinementType = random.NextEnumValue(), + RefinedSectionProbability = random.NextDouble(), + RefinedProfileProbability = random.NextDouble() + }; + } + + protected override void AssertSectionResult(AdoptableWithProfileProbabilityFailureMechanismSectionResult originResult, AdoptableWithProfileProbabilityFailureMechanismSectionResult targetResult) + { + Assert.AreEqual(originResult.IsRelevant, targetResult.IsRelevant); + Assert.AreEqual(originResult.InitialFailureMechanismResultType, targetResult.InitialFailureMechanismResultType); + Assert.AreEqual(originResult.ManualInitialFailureMechanismResultSectionProbability, targetResult.ManualInitialFailureMechanismResultSectionProbability); + Assert.AreEqual(originResult.ManualInitialFailureMechanismResultProfileProbability, targetResult.ManualInitialFailureMechanismResultProfileProbability); + Assert.AreEqual(originResult.FurtherAnalysisNeeded, targetResult.FurtherAnalysisNeeded); + Assert.AreEqual(originResult.ProbabilityRefinementType, targetResult.ProbabilityRefinementType); + Assert.AreEqual(originResult.RefinedSectionProbability, targetResult.RefinedSectionProbability); + Assert.AreEqual(originResult.RefinedProfileProbability, targetResult.RefinedProfileProbability); + } + } +} \ No newline at end of file