Index: Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Forms/PresentationObjects/GrassCoverErosionOutwardsWaveConditionsCalculationContext.cs =================================================================== diff -u -r8b60c9e846480f3ffeeb263bfea5d3367bf6bee3 -r41f61f39ae4e78d9aa78cd5b57b716e2ff5a9fa9 --- Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Forms/PresentationObjects/GrassCoverErosionOutwardsWaveConditionsCalculationContext.cs (.../GrassCoverErosionOutwardsWaveConditionsCalculationContext.cs) (revision 8b60c9e846480f3ffeeb263bfea5d3367bf6bee3) +++ Ringtoets/GrassCoverErosionOutwards/src/Ringtoets.GrassCoverErosionOutwards.Forms/PresentationObjects/GrassCoverErosionOutwardsWaveConditionsCalculationContext.cs (.../GrassCoverErosionOutwardsWaveConditionsCalculationContext.cs) (revision 41f61f39ae4e78d9aa78cd5b57b716e2ff5a9fa9) @@ -20,6 +20,7 @@ // All rights reserved. using System; +using Core.Common.Controls.PresentationObjects; using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.Calculation; using Ringtoets.Common.Forms.PresentationObjects; @@ -56,5 +57,22 @@ } public CalculationGroup Parent { get; } + + public override bool Equals(WrappedObjectContextBase other) + { + return base.Equals(other) + && other is GrassCoverErosionOutwardsWaveConditionsCalculationContext + && ReferenceEquals(Parent, ((GrassCoverErosionOutwardsWaveConditionsCalculationContext) other).Parent); + } + + public override bool Equals(object obj) + { + return Equals(obj as GrassCoverErosionOutwardsWaveConditionsCalculationContext); + } + + public override int GetHashCode() + { + return base.GetHashCode() ^ Parent.GetHashCode(); + } } } \ No newline at end of file Index: Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Forms.Test/PresentationObjects/GrassCoverErosionOutwardsWaveConditionsCalculationContextTest.cs =================================================================== diff -u -r66a3c8b86b4ada9239a31cfc47e6c1979c11e000 -r41f61f39ae4e78d9aa78cd5b57b716e2ff5a9fa9 --- Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Forms.Test/PresentationObjects/GrassCoverErosionOutwardsWaveConditionsCalculationContextTest.cs (.../GrassCoverErosionOutwardsWaveConditionsCalculationContextTest.cs) (revision 66a3c8b86b4ada9239a31cfc47e6c1979c11e000) +++ Ringtoets/GrassCoverErosionOutwards/test/Ringtoets.GrassCoverErosionOutwards.Forms.Test/PresentationObjects/GrassCoverErosionOutwardsWaveConditionsCalculationContextTest.cs (.../GrassCoverErosionOutwardsWaveConditionsCalculationContextTest.cs) (revision 41f61f39ae4e78d9aa78cd5b57b716e2ff5a9fa9) @@ -77,5 +77,184 @@ Assert.AreEqual("parent", exception.ParamName); mockRepository.VerifyAll(); } + + [Test] + public void Equals_ToNull_ReturnFalse() + { + // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + var calculation = new GrassCoverErosionOutwardsWaveConditionsCalculation(); + var failureMechanism = new GrassCoverErosionOutwardsFailureMechanism(); + var parent = new CalculationGroup(); + var context = new GrassCoverErosionOutwardsWaveConditionsCalculationContext(calculation, parent, failureMechanism, assessmentSection); + + // Call + bool isEqual = context.Equals(null); + + // Assert + Assert.IsFalse(isEqual); + + mocks.VerifyAll(); + } + + [Test] + public void Equals_ToItself_ReturnTrue() + { + // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + var calculation = new GrassCoverErosionOutwardsWaveConditionsCalculation(); + var failureMechanism = new GrassCoverErosionOutwardsFailureMechanism(); + var parent = new CalculationGroup(); + var context = new GrassCoverErosionOutwardsWaveConditionsCalculationContext(calculation, parent, failureMechanism, assessmentSection); + + // Call + bool isEqual = context.Equals(context); + + // Assert + Assert.IsTrue(isEqual); + + mocks.VerifyAll(); + } + + [Test] + public void Equals_ToOtherWithDifferentType_ReturnFalse() + { + // Setup + // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + var calculation = new GrassCoverErosionOutwardsWaveConditionsCalculation(); + var failureMechanism = new GrassCoverErosionOutwardsFailureMechanism(); + var parent = new CalculationGroup(); + var context = new GrassCoverErosionOutwardsWaveConditionsCalculationContext(calculation, parent, failureMechanism, assessmentSection); + + // Call + bool isEqual = context.Equals(new object()); + + // Assert + Assert.IsFalse(isEqual); + + mocks.VerifyAll(); + } + + [Test] + public void Equals_ToOtherWithDifferentWrappedData_ReturnFalse() + { + // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + var calculation1 = new GrassCoverErosionOutwardsWaveConditionsCalculation(); + var calculation2 = new GrassCoverErosionOutwardsWaveConditionsCalculation(); + + var failureMechanism = new GrassCoverErosionOutwardsFailureMechanism(); + var parent = new CalculationGroup(); + var context1 = new GrassCoverErosionOutwardsWaveConditionsCalculationContext(calculation1, parent, failureMechanism, assessmentSection); + var context2 = new GrassCoverErosionOutwardsWaveConditionsCalculationContext(calculation2, parent, failureMechanism, assessmentSection); + + // Precondition + Assert.IsFalse(context1.Equals(context2)); + + // Call + bool isEqual1 = context1.Equals(context2); + bool isEqual2 = context2.Equals(context1); + + // Assert + Assert.IsFalse(isEqual1); + Assert.IsFalse(isEqual2); + + mocks.VerifyAll(); + } + + [Test] + public void Equals_ToOtherWithDifferentParent_ReturnFalse() + { + // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + var calculation1 = new GrassCoverErosionOutwardsWaveConditionsCalculation(); + var calculation2 = new GrassCoverErosionOutwardsWaveConditionsCalculation(); + + var failureMechanism = new GrassCoverErosionOutwardsFailureMechanism(); + var parent1 = new CalculationGroup(); + var parent2 = new CalculationGroup(); + var context1 = new GrassCoverErosionOutwardsWaveConditionsCalculationContext(calculation1, parent1, failureMechanism, assessmentSection); + var context2 = new GrassCoverErosionOutwardsWaveConditionsCalculationContext(calculation2, parent2, failureMechanism, assessmentSection); + + // Precondition + Assert.IsFalse(parent1.Equals(parent2)); + + // Call + bool isEqual1 = context1.Equals(context2); + bool isEqual2 = context2.Equals(context1); + + // Assert + Assert.IsFalse(isEqual1); + Assert.IsFalse(isEqual2); + + mocks.VerifyAll(); + } + + [Test] + public void Equals_ToOtherWithSameWrappedDataAndParent_ReturnTrue() + { + // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + var calculation = new GrassCoverErosionOutwardsWaveConditionsCalculation(); + var failureMechanism = new GrassCoverErosionOutwardsFailureMechanism(); + var parent = new CalculationGroup(); + var context1 = new GrassCoverErosionOutwardsWaveConditionsCalculationContext(calculation, parent, failureMechanism, assessmentSection); + var context2 = new GrassCoverErosionOutwardsWaveConditionsCalculationContext(calculation, parent, failureMechanism, assessmentSection); + + // Call + bool isEqual1 = context1.Equals(context2); + bool isEqual2 = context2.Equals(context1); + + // Assert + Assert.IsTrue(isEqual1); + Assert.IsTrue(isEqual2); + + mocks.VerifyAll(); + } + + [Test] + public void GetHashCode_EqualObjects_ReturnSameHashCode() + { + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + var calculation = new GrassCoverErosionOutwardsWaveConditionsCalculation(); + var failureMechanism = new GrassCoverErosionOutwardsFailureMechanism(); + var parent = new CalculationGroup(); + var context1 = new GrassCoverErosionOutwardsWaveConditionsCalculationContext(calculation, parent, failureMechanism, assessmentSection); + var context2 = new GrassCoverErosionOutwardsWaveConditionsCalculationContext(calculation, parent, failureMechanism, assessmentSection); + + // Precondition + Assert.AreEqual(context1, context2); + + // Call + int hashCode1 = context1.GetHashCode(); + int hashCode2 = context2.GetHashCode(); + + // Assert + Assert.AreEqual(hashCode1, hashCode2); + + mocks.VerifyAll(); + } } } \ No newline at end of file Index: Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Forms/PresentationObjects/WaveImpactAsphaltCoverCalculationContext.cs =================================================================== diff -u -r8b60c9e846480f3ffeeb263bfea5d3367bf6bee3 -r41f61f39ae4e78d9aa78cd5b57b716e2ff5a9fa9 --- Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Forms/PresentationObjects/WaveImpactAsphaltCoverCalculationContext.cs (.../WaveImpactAsphaltCoverCalculationContext.cs) (revision 8b60c9e846480f3ffeeb263bfea5d3367bf6bee3) +++ Ringtoets/WaveImpactAsphaltCover/src/Ringtoets.WaveImpactAsphaltCover.Forms/PresentationObjects/WaveImpactAsphaltCoverCalculationContext.cs (.../WaveImpactAsphaltCoverCalculationContext.cs) (revision 41f61f39ae4e78d9aa78cd5b57b716e2ff5a9fa9) @@ -20,6 +20,7 @@ // All rights reserved. using System; +using Core.Common.Controls.PresentationObjects; using Ringtoets.Common.Data.AssessmentSection; using Ringtoets.Common.Data.Calculation; using Ringtoets.Common.Forms.PresentationObjects; @@ -57,5 +58,22 @@ } public CalculationGroup Parent { get; } + + public override bool Equals(WrappedObjectContextBase other) + { + return base.Equals(other) + && other is WaveImpactAsphaltCoverWaveConditionsCalculationContext + && ReferenceEquals(Parent, ((WaveImpactAsphaltCoverWaveConditionsCalculationContext) other).Parent); + } + + public override bool Equals(object obj) + { + return Equals(obj as WaveImpactAsphaltCoverWaveConditionsCalculationContext); + } + + public override int GetHashCode() + { + return base.GetHashCode() ^ Parent.GetHashCode(); + } } } \ No newline at end of file Index: Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Forms.Test/PresentationObjects/WaveImpactAsphaltCoverCalculationContextTest.cs =================================================================== diff -u -r66a3c8b86b4ada9239a31cfc47e6c1979c11e000 -r41f61f39ae4e78d9aa78cd5b57b716e2ff5a9fa9 --- Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Forms.Test/PresentationObjects/WaveImpactAsphaltCoverCalculationContextTest.cs (.../WaveImpactAsphaltCoverCalculationContextTest.cs) (revision 66a3c8b86b4ada9239a31cfc47e6c1979c11e000) +++ Ringtoets/WaveImpactAsphaltCover/test/Ringtoets.WaveImpactAsphaltCover.Forms.Test/PresentationObjects/WaveImpactAsphaltCoverCalculationContextTest.cs (.../WaveImpactAsphaltCoverCalculationContextTest.cs) (revision 41f61f39ae4e78d9aa78cd5b57b716e2ff5a9fa9) @@ -77,5 +77,184 @@ Assert.AreEqual("parent", exception.ParamName); mockRepository.VerifyAll(); } + + [Test] + public void Equals_ToNull_ReturnFalse() + { + // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + var calculation = new WaveImpactAsphaltCoverWaveConditionsCalculation(); + var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism(); + var parent = new CalculationGroup(); + var context = new WaveImpactAsphaltCoverWaveConditionsCalculationContext(calculation, parent, failureMechanism, assessmentSection); + + // Call + bool isEqual = context.Equals(null); + + // Assert + Assert.IsFalse(isEqual); + + mocks.VerifyAll(); + } + + [Test] + public void Equals_ToItself_ReturnTrue() + { + // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + var calculation = new WaveImpactAsphaltCoverWaveConditionsCalculation(); + var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism(); + var parent = new CalculationGroup(); + var context = new WaveImpactAsphaltCoverWaveConditionsCalculationContext(calculation, parent, failureMechanism, assessmentSection); + + // Call + bool isEqual = context.Equals(context); + + // Assert + Assert.IsTrue(isEqual); + + mocks.VerifyAll(); + } + + [Test] + public void Equals_ToOtherWithDifferentType_ReturnFalse() + { + // Setup + // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + var calculation = new WaveImpactAsphaltCoverWaveConditionsCalculation(); + var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism(); + var parent = new CalculationGroup(); + var context = new WaveImpactAsphaltCoverWaveConditionsCalculationContext(calculation, parent, failureMechanism, assessmentSection); + + // Call + bool isEqual = context.Equals(new object()); + + // Assert + Assert.IsFalse(isEqual); + + mocks.VerifyAll(); + } + + [Test] + public void Equals_ToOtherWithDifferentWrappedData_ReturnFalse() + { + // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + var calculation1 = new WaveImpactAsphaltCoverWaveConditionsCalculation(); + var calculation2 = new WaveImpactAsphaltCoverWaveConditionsCalculation(); + + var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism(); + var parent = new CalculationGroup(); + var context1 = new WaveImpactAsphaltCoverWaveConditionsCalculationContext(calculation1, parent, failureMechanism, assessmentSection); + var context2 = new WaveImpactAsphaltCoverWaveConditionsCalculationContext(calculation2, parent, failureMechanism, assessmentSection); + + // Precondition + Assert.IsFalse(context1.Equals(context2)); + + // Call + bool isEqual1 = context1.Equals(context2); + bool isEqual2 = context2.Equals(context1); + + // Assert + Assert.IsFalse(isEqual1); + Assert.IsFalse(isEqual2); + + mocks.VerifyAll(); + } + + [Test] + public void Equals_ToOtherWithDifferentParent_ReturnFalse() + { + // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + var calculation1 = new WaveImpactAsphaltCoverWaveConditionsCalculation(); + var calculation2 = new WaveImpactAsphaltCoverWaveConditionsCalculation(); + + var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism(); + var parent1 = new CalculationGroup(); + var parent2 = new CalculationGroup(); + var context1 = new WaveImpactAsphaltCoverWaveConditionsCalculationContext(calculation1, parent1, failureMechanism, assessmentSection); + var context2 = new WaveImpactAsphaltCoverWaveConditionsCalculationContext(calculation2, parent2, failureMechanism, assessmentSection); + + // Precondition + Assert.IsFalse(parent1.Equals(parent2)); + + // Call + bool isEqual1 = context1.Equals(context2); + bool isEqual2 = context2.Equals(context1); + + // Assert + Assert.IsFalse(isEqual1); + Assert.IsFalse(isEqual2); + + mocks.VerifyAll(); + } + + [Test] + public void Equals_ToOtherWithSameWrappedDataAndParent_ReturnTrue() + { + // Setup + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + var calculation = new WaveImpactAsphaltCoverWaveConditionsCalculation(); + var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism(); + var parent = new CalculationGroup(); + var context1 = new WaveImpactAsphaltCoverWaveConditionsCalculationContext(calculation, parent, failureMechanism, assessmentSection); + var context2 = new WaveImpactAsphaltCoverWaveConditionsCalculationContext(calculation, parent, failureMechanism, assessmentSection); + + // Call + bool isEqual1 = context1.Equals(context2); + bool isEqual2 = context2.Equals(context1); + + // Assert + Assert.IsTrue(isEqual1); + Assert.IsTrue(isEqual2); + + mocks.VerifyAll(); + } + + [Test] + public void GetHashCode_EqualObjects_ReturnSameHashCode() + { + var mocks = new MockRepository(); + var assessmentSection = mocks.Stub(); + mocks.ReplayAll(); + + var calculation = new WaveImpactAsphaltCoverWaveConditionsCalculation(); + var failureMechanism = new WaveImpactAsphaltCoverFailureMechanism(); + var parent = new CalculationGroup(); + var context1 = new WaveImpactAsphaltCoverWaveConditionsCalculationContext(calculation, parent, failureMechanism, assessmentSection); + var context2 = new WaveImpactAsphaltCoverWaveConditionsCalculationContext(calculation, parent, failureMechanism, assessmentSection); + + // Precondition + Assert.AreEqual(context1, context2); + + // Call + int hashCode1 = context1.GetHashCode(); + int hashCode2 = context2.GetHashCode(); + + // Assert + Assert.AreEqual(hashCode1, hashCode2); + + mocks.VerifyAll(); + } } } \ No newline at end of file