Index: Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingSoilLayerTest.cs =================================================================== diff -u -re42bdf3dd379c46bab9212eb7b30f4754c9bc91c -r1b6b6e221ac583d9d24ec033972acf73ffe30c56 --- Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingSoilLayerTest.cs (.../PipingSoilLayerTest.cs) (revision e42bdf3dd379c46bab9212eb7b30f4754c9bc91c) +++ Ringtoets/Piping/test/Ringtoets.Piping.Data.Test/PipingSoilLayerTest.cs (.../PipingSoilLayerTest.cs) (revision 1b6b6e221ac583d9d24ec033972acf73ffe30c56) @@ -21,6 +21,8 @@ using System; using System.Drawing; +using System.Linq; +using Core.Common.TestUtil; using NUnit.Framework; using Ringtoets.Piping.Primitives; @@ -86,5 +88,74 @@ // Assert Assert.AreEqual(materialName, layer.MaterialName); } + + [Test] + [TestCaseSource(nameof(LayerCombinations))] + public void Equals_DifferentScenarios_ReturnsExpectedResult(PipingSoilLayer layer, PipingSoilLayer otherLayer, bool expectedEqual) + { + // Call + var areEqual = layer.Equals(otherLayer); + + // Assert + Assert.AreEqual(expectedEqual, areEqual); + } + + private static TestCaseData[] LayerCombinations() + { + var layerA = CreateRandomLayer(21); + var layerB = CreateRandomLayer(21); + var layerC = CreateRandomLayer(73); + + var layerD = CreateNaNLayer("C", Color.Aqua, true); + var layerE = CreateNaNLayer("C", Color.Aqua, false); + var layerF = CreateNaNLayer("C", Color.AliceBlue, false); + var layerG = CreateNaNLayer("A", Color.Aqua, false); + + return new[] + { + new TestCaseData(layerA, layerA, true) { TestName = "Equals_LayerALayerA_True"}, + new TestCaseData(layerA, layerB, true) { TestName = "Equals_LayerALayerB_True"}, + new TestCaseData(layerB, layerC, false) { TestName = "Equals_LayerBLayerC_False"}, + new TestCaseData(layerC, layerC, true) { TestName = "Equals_LayerCLayerC_True"}, + new TestCaseData(layerD, layerE, false) { TestName = "Equals_LayerDLayerE_False"}, + new TestCaseData(layerD, layerF, false) { TestName = "Equals_LayerDLayerF_False"}, + new TestCaseData(layerD, layerG, false) { TestName = "Equals_LayerDLayerG_False"}, + }; + } + + private static PipingSoilLayer CreateRandomLayer(int randomSeed) + { + var random = new Random(randomSeed); + return new PipingSoilLayer(random.NextDouble()) + { + MaterialName = string.Join("", Enumerable.Repeat('x', random.Next(0, 40))), + Color = Color.FromKnownColor(random.NextEnumValue()), + IsAquifer = random.NextBoolean(), + BelowPhreaticLevelDeviation = random.NextDouble(), + BelowPhreaticLevelMean = random.NextDouble(), + BelowPhreaticLevelShift = random.NextDouble(), + DiameterD70Deviation = random.NextDouble(), + DiameterD70Mean = random.NextDouble(), + PermeabilityDeviation = random.NextDouble(), + PermeabilityMean = random.NextDouble() + }; + } + + private static PipingSoilLayer CreateNaNLayer(string name, Color color, bool isAquifer) + { + return new PipingSoilLayer(double.NaN) + { + MaterialName = name, + Color = color, + IsAquifer = isAquifer, + BelowPhreaticLevelDeviation = double.NaN, + BelowPhreaticLevelMean = double.NaN, + BelowPhreaticLevelShift = double.NaN, + DiameterD70Deviation = double.NaN, + DiameterD70Mean = double.NaN, + PermeabilityDeviation = double.NaN, + PermeabilityMean = double.NaN + }; + } } } \ No newline at end of file