Index: Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Data/MacroStabilityInwardsSlidingCurve.cs
===================================================================
diff -u -r0f736d81afe800a482dff027fe93128a5e967114 -r2dad5be3afa753e3665b8bbf03c348e3946d251f
--- Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Data/MacroStabilityInwardsSlidingCurve.cs (.../MacroStabilityInwardsSlidingCurve.cs) (revision 0f736d81afe800a482dff027fe93128a5e967114)
+++ Ringtoets/MacroStabilityInwards/src/Ringtoets.MacroStabilityInwards.Data/MacroStabilityInwardsSlidingCurve.cs (.../MacroStabilityInwardsSlidingCurve.cs) (revision 2dad5be3afa753e3665b8bbf03c348e3946d251f)
@@ -21,13 +21,14 @@
using System;
using System.Collections.Generic;
+using System.Linq;
namespace Ringtoets.MacroStabilityInwards.Data
{
///
/// The macro stability inwards sliding curve.
///
- public class MacroStabilityInwardsSlidingCurve
+ public class MacroStabilityInwardsSlidingCurve : ICloneable
{
///
/// Creates a new instance of .
@@ -67,17 +68,17 @@
///
/// Gets the left circle.
///
- public MacroStabilityInwardsSlidingCircle LeftCircle { get; }
+ public MacroStabilityInwardsSlidingCircle LeftCircle { get; private set; }
///
/// Gets the right circle.
///
- public MacroStabilityInwardsSlidingCircle RightCircle { get; }
+ public MacroStabilityInwardsSlidingCircle RightCircle { get; private set; }
///
/// Gets the slices.
///
- public IEnumerable Slices { get; }
+ public IEnumerable Slices { get; private set; }
///
/// Gets the non iterated horizontal force.
@@ -88,5 +89,15 @@
/// Gets the iterated horizontal force.
///
public double IteratedHorizontalForce { get; }
+
+ public object Clone()
+ {
+ var clone = (MacroStabilityInwardsSlidingCurve) MemberwiseClone();
+ clone.LeftCircle = (MacroStabilityInwardsSlidingCircle) LeftCircle.Clone();
+ clone.RightCircle = (MacroStabilityInwardsSlidingCircle) RightCircle.Clone();
+ clone.Slices = Slices.Select(s => (MacroStabilityInwardsSlice) s.Clone()).ToArray();
+
+ return clone;
+ }
}
}
\ No newline at end of file
Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.Test/MacroStabilityInwardsSlidingCurveTest.cs
===================================================================
diff -u -r0f736d81afe800a482dff027fe93128a5e967114 -r2dad5be3afa753e3665b8bbf03c348e3946d251f
--- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.Test/MacroStabilityInwardsSlidingCurveTest.cs (.../MacroStabilityInwardsSlidingCurveTest.cs) (revision 0f736d81afe800a482dff027fe93128a5e967114)
+++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.Test/MacroStabilityInwardsSlidingCurveTest.cs (.../MacroStabilityInwardsSlidingCurveTest.cs) (revision 2dad5be3afa753e3665b8bbf03c348e3946d251f)
@@ -21,7 +21,7 @@
using System;
using System.Linq;
-using Core.Common.Base.Geometry;
+using Core.Common.Data.TestUtil;
using NUnit.Framework;
using Ringtoets.MacroStabilityInwards.Data.TestUtil;
@@ -81,8 +81,7 @@
MacroStabilityInwardsSlidingCircle leftCircle = MacroStabilityInwardsSlidingCircleTestFactory.Create();
var slices = new[]
{
- new MacroStabilityInwardsSlice(new Point2D(0, 0), new Point2D(0, 0), new Point2D(0, 0), new Point2D(0, 0),
- new MacroStabilityInwardsSlice.ConstructionProperties())
+ MacroStabilityInwardsSliceTestFactory.CreateSlice()
};
double nonIteratedHorizontalForce = random.NextDouble();
@@ -92,11 +91,33 @@
var curve = new MacroStabilityInwardsSlidingCurve(leftCircle, rightCircle, slices, nonIteratedHorizontalForce, iteratedHorizontalForce);
// Assert
+ Assert.IsInstanceOf(curve);
+
Assert.AreSame(leftCircle, curve.LeftCircle);
Assert.AreSame(rightCircle, curve.RightCircle);
Assert.AreEqual(nonIteratedHorizontalForce, curve.NonIteratedHorizontalForce);
Assert.AreEqual(iteratedHorizontalForce, curve.IteratedHorizontalForce);
Assert.AreSame(slices, curve.Slices);
}
+
+ [Test]
+ public void Clone_Always_ReturnNewInstanceWithCopiedValues()
+ {
+ // Setup
+ var random = new Random(21);
+ MacroStabilityInwardsSlidingCircle rightCircle = MacroStabilityInwardsSlidingCircleTestFactory.Create();
+ MacroStabilityInwardsSlidingCircle leftCircle = MacroStabilityInwardsSlidingCircleTestFactory.Create();
+ var slices = new[]
+ {
+ MacroStabilityInwardsSliceTestFactory.CreateSlice()
+ };
+ var original = new MacroStabilityInwardsSlidingCurve(leftCircle, rightCircle, slices, random.NextDouble(), random.NextDouble());
+
+ // 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 -r68647f42dd790c7900bdbe376e97322435b4a957 -r2dad5be3afa753e3665b8bbf03c348e3946d251f
--- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.TestUtil/MacroStabilityInwardsCloneAssert.cs (.../MacroStabilityInwardsCloneAssert.cs) (revision 68647f42dd790c7900bdbe376e97322435b4a957)
+++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Data.TestUtil/MacroStabilityInwardsCloneAssert.cs (.../MacroStabilityInwardsCloneAssert.cs) (revision 2dad5be3afa753e3665b8bbf03c348e3946d251f)
@@ -38,6 +38,25 @@
/// The cloned object.
/// Thrown when and
/// are not clones.
+ public static void AreClones(MacroStabilityInwardsSlidingCurve original,
+ MacroStabilityInwardsSlidingCurve clone)
+ {
+ CoreCloneAssert.AreObjectClones(original.LeftCircle, clone.LeftCircle, AreClones);
+ CoreCloneAssert.AreObjectClones(original.RightCircle, clone.RightCircle, AreClones);
+ CoreCloneAssert.AreEnumerationClones(original.Slices, clone.Slices, AreClones);
+
+ Assert.AreEqual(original.NonIteratedHorizontalForce, clone.NonIteratedHorizontalForce);
+ Assert.AreEqual(original.IteratedHorizontalForce, clone.IteratedHorizontalForce);
+ }
+
+ ///
+ /// Method that asserts whether and
+ /// are clones.
+ ///
+ /// The original object.
+ /// The cloned object.
+ /// Thrown when and
+ /// are not clones.
public static void AreClones(MacroStabilityInwardsSlice original,
MacroStabilityInwardsSlice clone)
{