Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Data/MacroStabilityInwardsOutput.cs
===================================================================
diff -u -rdecccf5efb0ae872940d8d51b6de9978d13ecb37 -rd44a51e1d18e1e0c4c8e322174687304fd15e8fb
--- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Data/MacroStabilityInwardsOutput.cs (.../MacroStabilityInwardsOutput.cs) (revision decccf5efb0ae872940d8d51b6de9978d13ecb37)
+++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Data/MacroStabilityInwardsOutput.cs (.../MacroStabilityInwardsOutput.cs) (revision d44a51e1d18e1e0c4c8e322174687304fd15e8fb)
@@ -28,7 +28,7 @@
///
/// Simple class containing the results of a macro stability inwards calculation.
///
- public class MacroStabilityInwardsOutput : Observable, ICalculationOutput
+ public class MacroStabilityInwardsOutput : CloneableObservable, ICalculationOutput
{
///
/// Creates a new instance of .
@@ -65,9 +65,12 @@
ForbiddenZonesXEntryMax = properties.ForbiddenZonesXEntryMax;
}
- public object Clone()
+ public override object Clone()
{
- throw new NotImplementedException();
+ var clone = (MacroStabilityInwardsOutput) base.Clone();
+ clone.SlidingCurve = (MacroStabilityInwardsSlidingCurve) SlidingCurve.Clone();
+ clone.SlipPlane = (MacroStabilityInwardsSlipPlaneUpliftVan) SlipPlane.Clone();
+ return clone;
}
///
@@ -112,12 +115,12 @@
///
/// Gets the sliding curve.
///
- public MacroStabilityInwardsSlidingCurve SlidingCurve { get; }
+ public MacroStabilityInwardsSlidingCurve SlidingCurve { get; private set; }
///
/// Gets the slip plane.
///
- public MacroStabilityInwardsSlipPlaneUpliftVan SlipPlane { get; }
+ public MacroStabilityInwardsSlipPlaneUpliftVan SlipPlane { get; private set; }
///
/// Gets the factor of stability of the Uplift Van calculation.
Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.Test/MacroStabilityInwardsOutputTest.cs
===================================================================
diff -u -r0f736d81afe800a482dff027fe93128a5e967114 -rd44a51e1d18e1e0c4c8e322174687304fd15e8fb
--- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.Test/MacroStabilityInwardsOutputTest.cs (.../MacroStabilityInwardsOutputTest.cs) (revision 0f736d81afe800a482dff027fe93128a5e967114)
+++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.Test/MacroStabilityInwardsOutputTest.cs (.../MacroStabilityInwardsOutputTest.cs) (revision d44a51e1d18e1e0c4c8e322174687304fd15e8fb)
@@ -21,6 +21,7 @@
using System;
using Core.Common.Base;
+using Core.Common.Data.TestUtil;
using NUnit.Framework;
using Ringtoets.Common.Data.Calculation;
using Ringtoets.MacroStabilityInwards.Data.TestUtil;
@@ -134,7 +135,7 @@
var output = new MacroStabilityInwardsOutput(slidingCurve, slipPlane, properties);
// Assert
- Assert.IsInstanceOf(output);
+ Assert.IsInstanceOf(output);
Assert.IsInstanceOf(output);
Assert.AreSame(slidingCurve, output.SlidingCurve);
@@ -145,5 +146,35 @@
Assert.AreEqual(xEntryMin, output.ForbiddenZonesXEntryMin);
Assert.AreEqual(xEntryMax, output.ForbiddenZonesXEntryMax);
}
+
+ [Test]
+ public void Clone_Always_ReturnNewInstanceWithCopiedValues()
+ {
+ // Setup
+ var slidingCurve = new MacroStabilityInwardsSlidingCurve(MacroStabilityInwardsSlidingCircleTestFactory.Create(),
+ MacroStabilityInwardsSlidingCircleTestFactory.Create(),
+ new MacroStabilityInwardsSlice[0], 0, 0);
+
+ var slipPlane = new MacroStabilityInwardsSlipPlaneUpliftVan(MacroStabilityInwardsGridTestFactory.Create(),
+ MacroStabilityInwardsGridTestFactory.Create(),
+ new double[0]);
+
+ var random = new Random(21);
+ var properties = new MacroStabilityInwardsOutput.ConstructionProperties
+ {
+ FactorOfStability = random.NextDouble(),
+ ZValue = random.NextDouble(),
+ ForbiddenZonesXEntryMin = random.NextDouble(),
+ ForbiddenZonesXEntryMax = random.NextDouble()
+ };
+
+ var original = new MacroStabilityInwardsOutput(slidingCurve, slipPlane, properties);
+
+ // Call
+ object clone = original.Clone();
+
+ // Assert
+ CoreCloneAssert.AreObjectClones(original, clone, MacroStabilityInwardsCloneAssert.AreClones);
+ }
}
}
\ No newline at end of file
Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.TestUtil/MacroStabilityInwardsCloneAssert.cs
===================================================================
diff -u -r4cbf31a1ae47d22c811e4a8d8f8e6d0f89ddc202 -rd44a51e1d18e1e0c4c8e322174687304fd15e8fb
--- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.TestUtil/MacroStabilityInwardsCloneAssert.cs (.../MacroStabilityInwardsCloneAssert.cs) (revision 4cbf31a1ae47d22c811e4a8d8f8e6d0f89ddc202)
+++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.TestUtil/MacroStabilityInwardsCloneAssert.cs (.../MacroStabilityInwardsCloneAssert.cs) (revision d44a51e1d18e1e0c4c8e322174687304fd15e8fb)
@@ -57,13 +57,34 @@
/// The cloned object.
/// Thrown when and
/// are not clones.
+ public static void AreClones(MacroStabilityInwardsOutput original,
+ MacroStabilityInwardsOutput clone)
+ {
+ CoreCloneAssert.AreObjectClones(original.SlidingCurve, clone.SlidingCurve, AreClones);
+ CoreCloneAssert.AreObjectClones(original.SlipPlane, clone.SlipPlane, AreClones);
+
+ Assert.AreEqual(original.FactorOfStability, clone.FactorOfStability);
+ Assert.AreEqual(original.ZValue, clone.ZValue);
+ Assert.AreEqual(original.ForbiddenZonesXEntryMin, clone.ForbiddenZonesXEntryMin);
+ Assert.AreEqual(original.ForbiddenZonesXEntryMax, clone.ForbiddenZonesXEntryMax);
+ }
+
+ ///
+ /// Method that asserts whether and
+ /// are clones.
+ ///
+ /// The original object.
+ /// The cloned object.
+ /// Thrown when and
+ /// are not clones.
public static void AreClones(MacroStabilityInwardsSlipPlaneUpliftVan original,
MacroStabilityInwardsSlipPlaneUpliftVan clone)
{
CoreCloneAssert.AreObjectClones(original.LeftGrid, clone.LeftGrid, AreClones);
CoreCloneAssert.AreObjectClones(original.RightGrid, clone.RightGrid, AreClones);
CoreCloneAssert.AreEnumerationClones(original.TangentLines, clone.TangentLines,
- (originalTangentLine, clonedTangentLine) => Assert.AreEqual(originalTangentLine, clonedTangentLine));
+ (originalTangentLine, clonedTangentLine) =>
+ Assert.AreEqual(originalTangentLine, clonedTangentLine));
}
///