Index: Ringtoets/Common/test/Ringtoets.Common.IO.Test/SoilProfile/SoilLayer2DLoopTest.cs =================================================================== diff -u -r7585d2fd78627d94d55ffa16423af90a91e4efd4 -r0ae39cf7e804cdb6d5932d8d5aeced1e54febb60 --- Ringtoets/Common/test/Ringtoets.Common.IO.Test/SoilProfile/SoilLayer2DLoopTest.cs (.../SoilLayer2DLoopTest.cs) (revision 7585d2fd78627d94d55ffa16423af90a91e4efd4) +++ Ringtoets/Common/test/Ringtoets.Common.IO.Test/SoilProfile/SoilLayer2DLoopTest.cs (.../SoilLayer2DLoopTest.cs) (revision 0ae39cf7e804cdb6d5932d8d5aeced1e54febb60) @@ -30,6 +30,17 @@ public class SoilLayer2DLoopTest { [Test] + public void Constructor_SegmentsNull_ThrowsArgumentNullException() + { + // Call + TestDelegate test = () => new SoilLayer2DLoop(null); + + // Assert + string paramName = Assert.Throws(test).ParamName; + Assert.AreEqual("segments", paramName); + } + + [Test] public void Constructor_ConnectedSegments_SetsSegments() { // Setup @@ -95,5 +106,61 @@ var exception = Assert.Throws(test); Assert.AreEqual("De segmenten van de geometrie van de laag vormen geen lus.", exception.Message); } + + [Test] + public void GetHashCode_EqualLoops_AreEqual() + { + // Setup + SoilLayer2DLoop loopA = CreateValidLoop(); + SoilLayer2DLoop loopB = CreateValidLoop(); + + // Precondition + Assert.AreEqual(loopA, loopB); + Assert.AreEqual(loopB, loopA); + + // Call & Assert + Assert.AreEqual(loopA.GetHashCode(), loopB.GetHashCode()); + Assert.AreEqual(loopB.GetHashCode(), loopA.GetHashCode()); + } + + [Test] + public void Equals_DifferentType_ReturnsFalse() + { + // Setup + SoilLayer2DLoop loop = CreateValidLoop(); + + // Call + bool areEqual = loop.Equals(new object()); + + // Assert + Assert.IsFalse(areEqual); + } + + [Test] + public void Equals_Null_ReturnsFalse() + { + // Setup + SoilLayer2DLoop loop = CreateValidLoop(); + + // Call + bool areEqual = loop.Equals(null); + + // Assert + Assert.IsFalse(areEqual); + } + + private static SoilLayer2DLoop CreateValidLoop() + { + var pointA = new Point2D(0.0, 0.0); + var pointB = new Point2D(1.0, 0.0); + + var segments = new[] + { + new Segment2D(pointA, pointB), + new Segment2D(pointB, pointA) + }; + + return new SoilLayer2DLoop(segments); + } } } \ No newline at end of file