Index: Ringtoets/Common/src/Ringtoets.Common.Data/Probability/ProbabilityAssessmentOutput.cs =================================================================== diff -u -rd16d146d545cf86ad58c5e2c73cb5bc1b784ce67 -r5a0faf50983c0b2b407604d01d34312f12282b19 --- Ringtoets/Common/src/Ringtoets.Common.Data/Probability/ProbabilityAssessmentOutput.cs (.../ProbabilityAssessmentOutput.cs) (revision d16d146d545cf86ad58c5e2c73cb5bc1b784ce67) +++ Ringtoets/Common/src/Ringtoets.Common.Data/Probability/ProbabilityAssessmentOutput.cs (.../ProbabilityAssessmentOutput.cs) (revision 5a0faf50983c0b2b407604d01d34312f12282b19) @@ -29,7 +29,7 @@ /// /// This class contains the results of a probabilistic assessment calculation. /// - public class ProbabilityAssessmentOutput : Observable, ICalculationOutput + public class ProbabilityAssessmentOutput : Observable, ICalculationOutput, ICloneable { private double requiredProbability; private double probability; @@ -74,7 +74,7 @@ /// /// Get the required (maximum allowed) reliability of the failure mechanism. /// - public RoundedDouble RequiredReliability { get; private set; } + public RoundedDouble RequiredReliability { get; } /// /// Gets the probability of failure. @@ -97,11 +97,16 @@ /// /// Gets the reliability of the failure mechanism. /// - public RoundedDouble Reliability { get; private set; } + public RoundedDouble Reliability { get; } /// /// Gets the factor of safety of the failure mechanism. /// - public RoundedDouble FactorOfSafety { get; private set; } + public RoundedDouble FactorOfSafety { get; } + + public object Clone() + { + return MemberwiseClone(); + } } } \ No newline at end of file Index: Ringtoets/Common/test/Ringtoets.Common.Data.Test/Probability/ProbabilityAssessmentOutputTest.cs =================================================================== diff -u -rb3b6c13cf736c134476b3db34281332d01ca86b1 -r5a0faf50983c0b2b407604d01d34312f12282b19 --- Ringtoets/Common/test/Ringtoets.Common.Data.Test/Probability/ProbabilityAssessmentOutputTest.cs (.../ProbabilityAssessmentOutputTest.cs) (revision b3b6c13cf736c134476b3db34281332d01ca86b1) +++ Ringtoets/Common/test/Ringtoets.Common.Data.Test/Probability/ProbabilityAssessmentOutputTest.cs (.../ProbabilityAssessmentOutputTest.cs) (revision 5a0faf50983c0b2b407604d01d34312f12282b19) @@ -21,11 +21,11 @@ using System; using Core.Common.Base; -using Core.Common.Base.Data; using Core.Common.TestUtil; using NUnit.Framework; using Ringtoets.Common.Data.Calculation; using Ringtoets.Common.Data.Probability; +using Ringtoets.Common.Data.TestUtil; namespace Ringtoets.Common.Data.Test.Probability { @@ -38,27 +38,26 @@ // Setup var random = new Random(5); double requiredProbability = random.NextDouble(); - var requiredReliability = new RoundedDouble(3, random.NextDouble()); + double requiredReliability = random.NextDouble(); double probability = random.NextDouble(); - var reliability = new RoundedDouble(3, random.NextDouble()); - var factorOfSafety = new RoundedDouble(3, random.NextDouble()); + double reliability = random.NextDouble(); + double factorOfSafety = random.NextDouble(); // Call - var output = new ProbabilityAssessmentOutput(requiredProbability, requiredReliability, probability, reliability, factorOfSafety); + var probabilityAssessmentOutput = new ProbabilityAssessmentOutput(requiredProbability, requiredReliability, probability, reliability, factorOfSafety); // Assert - Assert.IsInstanceOf(output); - Assert.IsInstanceOf(output); - - Assert.IsNotNull(output); - Assert.AreEqual(requiredProbability, output.RequiredProbability); - Assert.AreEqual(5, output.RequiredReliability.NumberOfDecimalPlaces); - Assert.AreEqual(requiredReliability, output.RequiredReliability); - Assert.AreEqual(probability, output.Probability); - Assert.AreEqual(5, output.Reliability.NumberOfDecimalPlaces); - Assert.AreEqual(reliability, output.Reliability); - Assert.AreEqual(3, output.FactorOfSafety.NumberOfDecimalPlaces); - Assert.AreEqual(factorOfSafety, output.FactorOfSafety); + Assert.IsInstanceOf(probabilityAssessmentOutput); + Assert.IsInstanceOf(probabilityAssessmentOutput); + Assert.IsInstanceOf(probabilityAssessmentOutput); + Assert.AreEqual(requiredProbability, probabilityAssessmentOutput.RequiredProbability); + Assert.AreEqual(5, probabilityAssessmentOutput.RequiredReliability.NumberOfDecimalPlaces); + Assert.AreEqual(requiredReliability, probabilityAssessmentOutput.RequiredReliability, probabilityAssessmentOutput.RequiredReliability.GetAccuracy()); + Assert.AreEqual(probability, probabilityAssessmentOutput.Probability); + Assert.AreEqual(5, probabilityAssessmentOutput.Reliability.NumberOfDecimalPlaces); + Assert.AreEqual(reliability, probabilityAssessmentOutput.Reliability, probabilityAssessmentOutput.Reliability.GetAccuracy()); + Assert.AreEqual(3, probabilityAssessmentOutput.FactorOfSafety.NumberOfDecimalPlaces); + Assert.AreEqual(factorOfSafety, probabilityAssessmentOutput.FactorOfSafety, probabilityAssessmentOutput.FactorOfSafety.GetAccuracy()); } [Test] @@ -168,5 +167,33 @@ const string expectedMessage = "Kans moet in het bereik [0,0, 1,0] liggen."; TestHelper.AssertThrowsArgumentExceptionAndTestMessage(call, expectedMessage); } + + [Test] + public void Clone_Always_ReturnNewInstanceWithCopiedValues() + { + // Setup + var random = new Random(5); + double requiredProbability = random.NextDouble(); + double requiredReliability = random.NextDouble(); + double probability = random.NextDouble(); + double reliability = random.NextDouble(); + double factorOfSafety = random.NextDouble(); + + var probabilityAssessmentOutput = new ProbabilityAssessmentOutput(requiredProbability, requiredReliability, probability, reliability, factorOfSafety); + + // Call + object clone = probabilityAssessmentOutput.Clone(); + + // Assert + Assert.AreNotSame(probabilityAssessmentOutput, clone); + Assert.IsInstanceOf(clone); + + var clonedProbabilityAssessmentOutput = (ProbabilityAssessmentOutput) clone; + Assert.AreEqual(requiredProbability, clonedProbabilityAssessmentOutput.RequiredProbability); + Assert.AreEqual(requiredReliability, clonedProbabilityAssessmentOutput.RequiredReliability, clonedProbabilityAssessmentOutput.RequiredReliability.GetAccuracy()); + Assert.AreEqual(probability, clonedProbabilityAssessmentOutput.Probability); + Assert.AreEqual(reliability, clonedProbabilityAssessmentOutput.Reliability, clonedProbabilityAssessmentOutput.Reliability.GetAccuracy()); + Assert.AreEqual(factorOfSafety, clonedProbabilityAssessmentOutput.FactorOfSafety, clonedProbabilityAssessmentOutput.FactorOfSafety.GetAccuracy()); + } } } \ No newline at end of file Index: Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Data.Test/GrassCoverErosionInwardsInputTest.cs =================================================================== diff -u -r68b52f02bf376697530c1273a75a7ee05ba92483 -r5a0faf50983c0b2b407604d01d34312f12282b19 --- Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Data.Test/GrassCoverErosionInwardsInputTest.cs (.../GrassCoverErosionInwardsInputTest.cs) (revision 68b52f02bf376697530c1273a75a7ee05ba92483) +++ Ringtoets/GrassCoverErosionInwards/test/Ringtoets.GrassCoverErosionInwards.Data.Test/GrassCoverErosionInwardsInputTest.cs (.../GrassCoverErosionInwardsInputTest.cs) (revision 5a0faf50983c0b2b407604d01d34312f12282b19) @@ -367,8 +367,8 @@ // Setup var random = new Random(21); var dikeProfile = new TestDikeProfile(); - var orientation = new RoundedDouble(2, random.NextDouble()); - var dikeHeight = new RoundedDouble(2, random.NextDouble()); + RoundedDouble orientation = random.NextRoundedDouble(); + RoundedDouble dikeHeight = random.NextRoundedDouble(); var criticalFlowRate = new LogNormalDistribution(4) { Mean = random.NextRoundedDouble(), @@ -414,8 +414,8 @@ var clonedGrassCoverErosionInwardsInput = (GrassCoverErosionInwardsInput) clone; Assert.AreSame(dikeProfile, clonedGrassCoverErosionInwardsInput.DikeProfile); - Assert.AreEqual(orientation, clonedGrassCoverErosionInwardsInput.Orientation); - Assert.AreEqual(dikeHeight, clonedGrassCoverErosionInwardsInput.DikeHeight); + Assert.AreEqual(orientation, clonedGrassCoverErosionInwardsInput.Orientation, clonedGrassCoverErosionInwardsInput.Orientation.GetAccuracy()); + Assert.AreEqual(dikeHeight, clonedGrassCoverErosionInwardsInput.DikeHeight, clonedGrassCoverErosionInwardsInput.DikeHeight.GetAccuracy()); Assert.AreNotSame(grassCoverErosionInwardsInput.CriticalFlowRate, clonedGrassCoverErosionInwardsInput.CriticalFlowRate); Assert.AreEqual(criticalFlowRate, clonedGrassCoverErosionInwardsInput.CriticalFlowRate); Assert.AreSame(hydraulicBoundaryLocation, clonedGrassCoverErosionInwardsInput.HydraulicBoundaryLocation);