Index: Ringtoets/Common/src/Ringtoets.Common.IO/SoilProfile/SoilLayer2DLoop.cs
===================================================================
diff -u -r7585d2fd78627d94d55ffa16423af90a91e4efd4 -r0ae39cf7e804cdb6d5932d8d5aeced1e54febb60
--- Ringtoets/Common/src/Ringtoets.Common.IO/SoilProfile/SoilLayer2DLoop.cs (.../SoilLayer2DLoop.cs) (revision 7585d2fd78627d94d55ffa16423af90a91e4efd4)
+++ Ringtoets/Common/src/Ringtoets.Common.IO/SoilProfile/SoilLayer2DLoop.cs (.../SoilLayer2DLoop.cs) (revision 0ae39cf7e804cdb6d5932d8d5aeced1e54febb60)
@@ -20,6 +20,7 @@
// All rights reserved.
using System;
+using System.Linq;
using Core.Common.Base.Geometry;
using Ringtoets.Common.IO.Properties;
@@ -33,9 +34,15 @@
///
/// Creates a new instance of .
///
+ /// Thrown when is null.
/// Thrown when do not form a loop.
public SoilLayer2DLoop(Segment2D[] segments)
{
+ if (segments == null)
+ {
+ throw new ArgumentNullException(nameof(segments));
+ }
+
CheckValidLoop(segments);
Segments = segments;
@@ -82,5 +89,34 @@
return true;
}
+
+ private bool Equals(SoilLayer2DLoop other)
+ {
+ return Segments.SequenceEqual(other.Segments);
+ }
+
+ public override bool Equals(object obj)
+ {
+ if (ReferenceEquals(null, obj)) return false;
+ if (ReferenceEquals(this, obj)) return true;
+ if (obj.GetType() != GetType()) return false;
+
+ return Equals((SoilLayer2DLoop) obj);
+ }
+
+ public override int GetHashCode()
+ {
+ unchecked
+ {
+ var hashCode = 0;
+
+ foreach (Segment2D segment in Segments)
+ {
+ hashCode = (hashCode * 397) ^ segment.GetHashCode();
+ }
+
+ return hashCode;
+ }
+ }
}
}
\ No newline at end of file