Index: Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Primitives.Test/MacroStabilityInwardsWaternetTest.cs =================================================================== diff -u -r14c118039f313ea66787d8065daad0aa783b731a -rf02088bdf7599aa7b3c974976230c92b5a70c0ed --- Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Primitives.Test/MacroStabilityInwardsWaternetTest.cs (.../MacroStabilityInwardsWaternetTest.cs) (revision 14c118039f313ea66787d8065daad0aa783b731a) +++ Ringtoets/MacroStabilityInwards/test/Ringtoets.MacroStabilityInwards.Primitives.Test/MacroStabilityInwardsWaternetTest.cs (.../MacroStabilityInwardsWaternetTest.cs) (revision f02088bdf7599aa7b3c974976230c92b5a70c0ed) @@ -20,9 +20,11 @@ // All rights reserved. using System; +using System.Collections.Generic; using System.Linq; using Core.Common.Base.Geometry; using NUnit.Framework; +using Ringtoets.MacroStabilityInwards.Primitives.TestUtil; namespace Ringtoets.MacroStabilityInwards.Primitives.Test { @@ -70,5 +72,131 @@ Assert.AreSame(phreaticLine, waternet.PhreaticLines.Single()); Assert.AreSame(waternetLine, waternet.WaternetLines.Single()); } + + [Test] + [TestCase(null)] + [TestCase("string")] + public void Equals_ToDifferentTypeOrNull_ReturnsFalse(object other) + { + // Setup + MacroStabilityInwardsWaternet waternet = CreateWaternet(); + + // Call + bool isEqualToDifferentObject = waternet.Equals(other); + + // Assert + Assert.IsFalse(isEqualToDifferentObject); + } + + [Test] + public void Equals_AllPropertiesEqual_ReturnsTrue() + { + // Setup + MacroStabilityInwardsWaternet waternetX = CreateWaternet(); + MacroStabilityInwardsWaternet waternetY = CreateWaternet(); + + // Call + bool isXEqualToY = waternetX.Equals(waternetY); + bool isYEqualToZ = waternetY.Equals(waternetX); + + // Assert + Assert.IsTrue(isXEqualToY); + Assert.IsTrue(isYEqualToZ); + } + + [Test] + [TestCaseSource(nameof(GetWaternetCombinations))] + public void Equals_DifferentProperty_ReturnsFalse(MacroStabilityInwardsWaternet waternet, + MacroStabilityInwardsWaternet otherWaternet) + { + // Call + bool isWaternetEqualToOther = waternet.Equals(otherWaternet); + bool isOtherEqualToWaternet = otherWaternet.Equals(waternet); + + // Assert + Assert.IsFalse(isWaternetEqualToOther); + Assert.IsFalse(isOtherEqualToWaternet); + } + + [Test] + public void GetHashCode_EqualWaternet_ReturnsSameHashCode() + { + // Setup + MacroStabilityInwardsWaternet waternetLineX = CreateWaternet(); + MacroStabilityInwardsWaternet waternetLineY = CreateWaternet(); + + // Call + int hashCodeOne = waternetLineX.GetHashCode(); + int hashCodeTwo = waternetLineY.GetHashCode(); + + // Assert + Assert.AreEqual(hashCodeOne, hashCodeTwo); + } + + private static IEnumerable GetWaternetCombinations() + { + yield return new TestCaseData( + CreateWaternet(), + new MacroStabilityInwardsWaternet( + new[] + { + new MacroStabilityInwardsPhreaticLine("Test", new Point2D[0]) + }, + new MacroStabilityInwardsWaternetLine[] + { + new TestMacroStabilityInwardsWaternetLine() + })).SetName("Other phreatic line"); + + yield return new TestCaseData( + CreateWaternet(), + new MacroStabilityInwardsWaternet( + new[] + { + new TestMacroStabilityInwardsPhreaticLine(), + new TestMacroStabilityInwardsPhreaticLine() + }, + new MacroStabilityInwardsWaternetLine[] + { + new TestMacroStabilityInwardsWaternetLine() + })).SetName("Other phreatic line count"); + + yield return new TestCaseData( + CreateWaternet(), + new MacroStabilityInwardsWaternet( + new[] + { + new TestMacroStabilityInwardsPhreaticLine() + }, + new[] + { + new MacroStabilityInwardsWaternetLine("Test", new Point2D[0], new TestMacroStabilityInwardsPhreaticLine()) + })).SetName("Other waternet line"); + + yield return new TestCaseData( + CreateWaternet(), + new MacroStabilityInwardsWaternet( + new[] + { + new TestMacroStabilityInwardsPhreaticLine() + }, + new MacroStabilityInwardsWaternetLine[] + { + new TestMacroStabilityInwardsWaternetLine(), + new TestMacroStabilityInwardsWaternetLine() + })).SetName("Other waternet line count"); + } + + private static MacroStabilityInwardsWaternet CreateWaternet() + { + return new MacroStabilityInwardsWaternet( + new MacroStabilityInwardsPhreaticLine[] + { + new TestMacroStabilityInwardsPhreaticLine() + }, + new MacroStabilityInwardsWaternetLine[] + { + new TestMacroStabilityInwardsWaternetLine() + }); + } } } \ No newline at end of file