Index: Ringtoets/Piping/src/Ringtoets.Piping.Primitives/PipingSoilLayer.cs =================================================================== diff -u -r09ab76fbe4f768414ad7dd356eb9b2ebd5b1781c -r9abc42907eebf67b669d4cfadff89800339ddabb --- Ringtoets/Piping/src/Ringtoets.Piping.Primitives/PipingSoilLayer.cs (.../PipingSoilLayer.cs) (revision 09ab76fbe4f768414ad7dd356eb9b2ebd5b1781c) +++ Ringtoets/Piping/src/Ringtoets.Piping.Primitives/PipingSoilLayer.cs (.../PipingSoilLayer.cs) (revision 9abc42907eebf67b669d4cfadff89800339ddabb) @@ -138,8 +138,11 @@ { return true; } - var other = obj as PipingSoilLayer; - return other != null && Equals(other); + if (GetType() != obj.GetType()) + { + return false; + } + return Equals((PipingSoilLayer) obj); } public override int GetHashCode() Index: Ringtoets/Piping/test/Ringtoets.Piping.Primitives.Test/PipingSoilLayerTest.cs =================================================================== diff -u -r677ec9937ae7eff73a09bf937804ad22e0dc5a4b -r9abc42907eebf67b669d4cfadff89800339ddabb --- Ringtoets/Piping/test/Ringtoets.Piping.Primitives.Test/PipingSoilLayerTest.cs (.../PipingSoilLayerTest.cs) (revision 677ec9937ae7eff73a09bf937804ad22e0dc5a4b) +++ Ringtoets/Piping/test/Ringtoets.Piping.Primitives.Test/PipingSoilLayerTest.cs (.../PipingSoilLayerTest.cs) (revision 9abc42907eebf67b669d4cfadff89800339ddabb) @@ -20,6 +20,7 @@ // All rights reserved. using System; +using System.Collections.Generic; using System.Drawing; using System.Linq; using Core.Common.TestUtil; @@ -88,101 +89,166 @@ Assert.AreEqual(materialName, layer.MaterialName); } - [Test] - public void Equals_DerivedClassWithEqualProperties_ReturnsTrue() + [TestFixture] + private class PipingSoilLayerEqualsGuideLines : EqualsGuidelinesTestFixture { - // Setup - PipingSoilLayer layer = CreateRandomLayer(2); - var derivedLayer = new TestLayer(layer); + private const int seed = 21; - // Call - bool areEqual = layer.Equals(derivedLayer); + protected override PipingSoilLayer CreateObject() + { + return CreateRandomLayer(seed); + } - // Assert - Assert.IsTrue(areEqual); - } + protected override TestLayer CreateDerivedObject() + { + PipingSoilLayer baseLayer = CreateRandomLayer(21); + return new TestLayer(baseLayer); + } - [Test] - public void Equals_DifferentType_ReturnsFalse() - { - // Setup - PipingSoilLayer layer = CreateRandomLayer(21); + private static IEnumerable GetUnequalTestCases() + { + PipingSoilLayer baseLayer = CreateRandomLayer(seed); - // Call - bool areEqual = layer.Equals(new object()); + yield return new TestCaseData(new PipingSoilLayer(double.NaN) + { + MaterialName = "Different Name", + Color = baseLayer.Color, + IsAquifer = baseLayer.IsAquifer, + BelowPhreaticLevelDeviation = baseLayer.BelowPhreaticLevelDeviation, + BelowPhreaticLevelMean = baseLayer.BelowPhreaticLevelMean, + BelowPhreaticLevelShift = baseLayer.BelowPhreaticLevelShift, + DiameterD70CoefficientOfVariation = baseLayer.DiameterD70CoefficientOfVariation, + DiameterD70Mean = baseLayer.DiameterD70Mean, + PermeabilityCoefficientOfVariation = baseLayer.PermeabilityCoefficientOfVariation, + PermeabilityMean = baseLayer.PermeabilityMean + }).SetName("Name"); - // Assert - Assert.IsFalse(areEqual); - } + yield return new TestCaseData(new PipingSoilLayer(double.NaN) + { + MaterialName = baseLayer.MaterialName, + Color = baseLayer.Color.ToArgb().Equals(Color.Aqua.ToArgb()) ? Color.Bisque : Color.Aqua, + IsAquifer = baseLayer.IsAquifer, + BelowPhreaticLevelDeviation = baseLayer.BelowPhreaticLevelDeviation, + BelowPhreaticLevelMean = baseLayer.BelowPhreaticLevelMean, + BelowPhreaticLevelShift = baseLayer.BelowPhreaticLevelShift, + DiameterD70CoefficientOfVariation = baseLayer.DiameterD70CoefficientOfVariation, + DiameterD70Mean = baseLayer.DiameterD70Mean, + PermeabilityCoefficientOfVariation = baseLayer.PermeabilityCoefficientOfVariation, + PermeabilityMean = baseLayer.PermeabilityMean + }).SetName("Color"); - [Test] - public void Equals_Null_ReturnsFalse() - { - // Setup - PipingSoilLayer layer = CreateRandomLayer(21); + yield return new TestCaseData(new PipingSoilLayer(double.NaN) + { + MaterialName = baseLayer.MaterialName, + Color = baseLayer.Color, + IsAquifer = !baseLayer.IsAquifer, + BelowPhreaticLevelDeviation = baseLayer.BelowPhreaticLevelDeviation, + BelowPhreaticLevelMean = baseLayer.BelowPhreaticLevelMean, + BelowPhreaticLevelShift = baseLayer.BelowPhreaticLevelShift, + DiameterD70CoefficientOfVariation = baseLayer.DiameterD70CoefficientOfVariation, + DiameterD70Mean = baseLayer.DiameterD70Mean, + PermeabilityCoefficientOfVariation = baseLayer.PermeabilityCoefficientOfVariation, + PermeabilityMean = baseLayer.PermeabilityMean + }).SetName("IsAquifer"); - // Call - bool areEqual = layer.Equals(null); + yield return new TestCaseData(new PipingSoilLayer(double.NaN) + { + MaterialName = baseLayer.MaterialName, + Color = baseLayer.Color, + IsAquifer = baseLayer.IsAquifer, + BelowPhreaticLevelDeviation = baseLayer.BelowPhreaticLevelDeviation + 10, + BelowPhreaticLevelMean = baseLayer.BelowPhreaticLevelMean, + BelowPhreaticLevelShift = baseLayer.BelowPhreaticLevelShift, + DiameterD70CoefficientOfVariation = baseLayer.DiameterD70CoefficientOfVariation, + DiameterD70Mean = baseLayer.DiameterD70Mean, + PermeabilityCoefficientOfVariation = baseLayer.PermeabilityCoefficientOfVariation, + PermeabilityMean = baseLayer.PermeabilityMean + }).SetName("BelowPhreaticLevelDeviation"); - // Assert - Assert.IsFalse(areEqual); - } + yield return new TestCaseData(new PipingSoilLayer(double.NaN) + { + MaterialName = baseLayer.MaterialName, + Color = baseLayer.Color, + IsAquifer = baseLayer.IsAquifer, + BelowPhreaticLevelDeviation = baseLayer.BelowPhreaticLevelDeviation, + BelowPhreaticLevelMean = baseLayer.BelowPhreaticLevelMean + 10, + BelowPhreaticLevelShift = baseLayer.BelowPhreaticLevelShift, + DiameterD70CoefficientOfVariation = baseLayer.DiameterD70CoefficientOfVariation, + DiameterD70Mean = baseLayer.DiameterD70Mean, + PermeabilityCoefficientOfVariation = baseLayer.PermeabilityCoefficientOfVariation, + PermeabilityMean = baseLayer.PermeabilityMean + }).SetName("BelowPhreaticLevelMean"); - [Test] - [TestCaseSource(nameof(LayerCombinations))] - public void Equals_DifferentScenarios_ReturnsExpectedResult(PipingSoilLayer layer, PipingSoilLayer otherLayer, bool expectedEqual) - { - // Call - bool areEqualOne = layer.Equals(otherLayer); - bool areEqualTwo = otherLayer.Equals(layer); + yield return new TestCaseData(new PipingSoilLayer(double.NaN) + { + MaterialName = baseLayer.MaterialName, + Color = baseLayer.Color, + IsAquifer = baseLayer.IsAquifer, + BelowPhreaticLevelDeviation = baseLayer.BelowPhreaticLevelDeviation, + BelowPhreaticLevelMean = baseLayer.BelowPhreaticLevelMean, + BelowPhreaticLevelShift = baseLayer.BelowPhreaticLevelShift + 10, + DiameterD70CoefficientOfVariation = baseLayer.DiameterD70CoefficientOfVariation, + DiameterD70Mean = baseLayer.DiameterD70Mean, + PermeabilityCoefficientOfVariation = baseLayer.PermeabilityCoefficientOfVariation, + PermeabilityMean = baseLayer.PermeabilityMean + }).SetName("BelowPhreaticLevelShift"); - // Assert - Assert.AreEqual(expectedEqual, areEqualOne); - Assert.AreEqual(expectedEqual, areEqualTwo); - } + yield return new TestCaseData(new PipingSoilLayer(double.NaN) + { + MaterialName = baseLayer.MaterialName, + Color = baseLayer.Color, + IsAquifer = baseLayer.IsAquifer, + BelowPhreaticLevelDeviation = baseLayer.BelowPhreaticLevelDeviation, + BelowPhreaticLevelMean = baseLayer.BelowPhreaticLevelMean, + BelowPhreaticLevelShift = baseLayer.BelowPhreaticLevelShift, + DiameterD70CoefficientOfVariation = baseLayer.DiameterD70CoefficientOfVariation + 70, + DiameterD70Mean = baseLayer.DiameterD70Mean, + PermeabilityCoefficientOfVariation = baseLayer.PermeabilityCoefficientOfVariation, + PermeabilityMean = baseLayer.PermeabilityMean + }).SetName("DiameterD70CoefficientOfVariation"); - private static TestCaseData[] LayerCombinations() - { - PipingSoilLayer layerA = CreateRandomLayer(21); - PipingSoilLayer layerB = CreateRandomLayer(21); - PipingSoilLayer layerC = CreateRandomLayer(73); + yield return new TestCaseData(new PipingSoilLayer(double.NaN) + { + MaterialName = baseLayer.MaterialName, + Color = baseLayer.Color, + IsAquifer = baseLayer.IsAquifer, + BelowPhreaticLevelDeviation = baseLayer.BelowPhreaticLevelDeviation, + BelowPhreaticLevelMean = baseLayer.BelowPhreaticLevelMean, + BelowPhreaticLevelShift = baseLayer.BelowPhreaticLevelShift, + DiameterD70CoefficientOfVariation = baseLayer.DiameterD70CoefficientOfVariation, + DiameterD70Mean = baseLayer.DiameterD70Mean + 70, + PermeabilityCoefficientOfVariation = baseLayer.PermeabilityCoefficientOfVariation, + PermeabilityMean = baseLayer.PermeabilityMean + }).SetName("DiameterD70Mean"); - PipingSoilLayer layerD = CreateNaNLayer("C", Color.Aqua, true); - PipingSoilLayer layerE = CreateNaNLayer("C", Color.Aqua, false); - PipingSoilLayer layerF = CreateNaNLayer("C", Color.AliceBlue, false); - PipingSoilLayer layerG = CreateNaNLayer("A", Color.Aqua, false); + yield return new TestCaseData(new PipingSoilLayer(double.NaN) + { + MaterialName = baseLayer.MaterialName, + Color = baseLayer.Color, + IsAquifer = baseLayer.IsAquifer, + BelowPhreaticLevelDeviation = baseLayer.BelowPhreaticLevelDeviation, + BelowPhreaticLevelMean = baseLayer.BelowPhreaticLevelMean, + BelowPhreaticLevelShift = baseLayer.BelowPhreaticLevelShift, + DiameterD70CoefficientOfVariation = baseLayer.DiameterD70CoefficientOfVariation, + DiameterD70Mean = baseLayer.DiameterD70Mean, + PermeabilityCoefficientOfVariation = baseLayer.PermeabilityCoefficientOfVariation + 10, + PermeabilityMean = baseLayer.PermeabilityMean + }).SetName("PermeabilityCoefficientOfVariation"); - return new[] - { - new TestCaseData(layerA, layerA, true) + yield return new TestCaseData(new PipingSoilLayer(double.NaN) { - 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" - } - }; + MaterialName = baseLayer.MaterialName, + Color = baseLayer.Color, + IsAquifer = baseLayer.IsAquifer, + BelowPhreaticLevelDeviation = baseLayer.BelowPhreaticLevelDeviation, + BelowPhreaticLevelMean = baseLayer.BelowPhreaticLevelMean, + BelowPhreaticLevelShift = baseLayer.BelowPhreaticLevelShift, + DiameterD70CoefficientOfVariation = baseLayer.DiameterD70CoefficientOfVariation, + DiameterD70Mean = baseLayer.DiameterD70Mean, + PermeabilityCoefficientOfVariation = baseLayer.PermeabilityCoefficientOfVariation, + PermeabilityMean = baseLayer.PermeabilityMean + 10 + }).SetName("PermeabilityMean"); + } } private static PipingSoilLayer CreateRandomLayer(int randomSeed)