From a93124b25b30fcb6856efad04fb8cf16e4787a66 Mon Sep 17 00:00:00 2001 From: "Tiago C. Resende" Date: Mon, 13 May 2024 12:19:01 -0300 Subject: [PATCH 1/2] :bug: Fix proxy comparison --- .../TheNoobs.ValueObjects.Abstractions.csproj | 2 +- .../ValueObject.cs | 4 ++-- .../Stubs/AgeStubProxy.cs | 12 ++++++++++++ ...bs.ValueObjects.Abstractions.UnitTests.csproj | 16 ++++++++-------- .../ValueObjectTest.cs | 9 +++++++++ 5 files changed, 32 insertions(+), 11 deletions(-) create mode 100644 tests/TheNoobs.ValueObjects.Abstractions.UnitTests/Stubs/AgeStubProxy.cs diff --git a/src/TheNoobs.ValueObjects.Abstractions/TheNoobs.ValueObjects.Abstractions.csproj b/src/TheNoobs.ValueObjects.Abstractions/TheNoobs.ValueObjects.Abstractions.csproj index 3c32d60..15e3e65 100644 --- a/src/TheNoobs.ValueObjects.Abstractions/TheNoobs.ValueObjects.Abstractions.csproj +++ b/src/TheNoobs.ValueObjects.Abstractions/TheNoobs.ValueObjects.Abstractions.csproj @@ -1,7 +1,7 @@ - netstandard2.0 + net6.0;net7.0;net8.0 enable enable latest diff --git a/src/TheNoobs.ValueObjects.Abstractions/ValueObject.cs b/src/TheNoobs.ValueObjects.Abstractions/ValueObject.cs index 29fb2a0..71df387 100644 --- a/src/TheNoobs.ValueObjects.Abstractions/ValueObject.cs +++ b/src/TheNoobs.ValueObjects.Abstractions/ValueObject.cs @@ -27,8 +27,8 @@ public virtual bool Equals(ValueObject? other) } return ReferenceEquals(this, other) || - other.GetType() == GetType() && - GetAtomicValues().SequenceEqual(other.GetAtomicValues()); + GetType().IsInstanceOfType(other) && + GetAtomicValues().SequenceEqual(other.GetAtomicValues()); } /// diff --git a/tests/TheNoobs.ValueObjects.Abstractions.UnitTests/Stubs/AgeStubProxy.cs b/tests/TheNoobs.ValueObjects.Abstractions.UnitTests/Stubs/AgeStubProxy.cs new file mode 100644 index 0000000..81e7ca0 --- /dev/null +++ b/tests/TheNoobs.ValueObjects.Abstractions.UnitTests/Stubs/AgeStubProxy.cs @@ -0,0 +1,12 @@ +using System.Diagnostics.CodeAnalysis; + +namespace TheNoobs.ValueObjects.Abstractions.UnitTests.Stubs; + +[ExcludeFromCodeCoverage] +public class AgeStubProxy : AgeStub +{ + public AgeStubProxy(int age) + : base(age) + { + } +} diff --git a/tests/TheNoobs.ValueObjects.Abstractions.UnitTests/TheNoobs.ValueObjects.Abstractions.UnitTests.csproj b/tests/TheNoobs.ValueObjects.Abstractions.UnitTests/TheNoobs.ValueObjects.Abstractions.UnitTests.csproj index f9172b8..48f5b5e 100644 --- a/tests/TheNoobs.ValueObjects.Abstractions.UnitTests/TheNoobs.ValueObjects.Abstractions.UnitTests.csproj +++ b/tests/TheNoobs.ValueObjects.Abstractions.UnitTests/TheNoobs.ValueObjects.Abstractions.UnitTests.csproj @@ -1,7 +1,7 @@ - netcoreapp3.1;net6.0 + net6.0;net7.0;net8.0 enable latest false @@ -15,20 +15,20 @@ TheNoobs.ValueObjects.Abstractions.UnitTests - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive - + - - - + + + runtime; build; native; contentfiles; analyzers; buildtransitive all - + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/tests/TheNoobs.ValueObjects.Abstractions.UnitTests/ValueObjectTest.cs b/tests/TheNoobs.ValueObjects.Abstractions.UnitTests/ValueObjectTest.cs index 3957f89..86b2d05 100644 --- a/tests/TheNoobs.ValueObjects.Abstractions.UnitTests/ValueObjectTest.cs +++ b/tests/TheNoobs.ValueObjects.Abstractions.UnitTests/ValueObjectTest.cs @@ -149,4 +149,13 @@ public void Given_TwoNullValueObject_WhenCompares_Then_TheResultShouldBeTrue() ZipCodeStub? zipCode2 = null; (zipCode1! == zipCode2!).Should().BeTrue(); } + + [Fact] + public void Given_AValueObject_WhenComparesToAProxiedItself_Then_TheResultShouldBeTrue() + { + AgeStub age1 = new AgeStub(1); + AgeStubProxy age2 = new AgeStubProxy(1); + + (age1 == age2).Should().BeTrue(); + } } From ae9f8b465d27346c22b4c04657413cacccec5fee Mon Sep 17 00:00:00 2001 From: "Tiago C. Resende" Date: Mon, 13 May 2024 13:28:26 -0300 Subject: [PATCH 2/2] :bug: Fix proxy comparison --- src/TheNoobs.ValueObjects.Abstractions/ValueObject.cs | 2 +- .../ValueObjectTest.cs | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/TheNoobs.ValueObjects.Abstractions/ValueObject.cs b/src/TheNoobs.ValueObjects.Abstractions/ValueObject.cs index 71df387..34dc770 100644 --- a/src/TheNoobs.ValueObjects.Abstractions/ValueObject.cs +++ b/src/TheNoobs.ValueObjects.Abstractions/ValueObject.cs @@ -27,7 +27,7 @@ public virtual bool Equals(ValueObject? other) } return ReferenceEquals(this, other) || - GetType().IsInstanceOfType(other) && + (GetType().IsInstanceOfType(other) || GetType().IsAssignableTo(other.GetType())) && GetAtomicValues().SequenceEqual(other.GetAtomicValues()); } diff --git a/tests/TheNoobs.ValueObjects.Abstractions.UnitTests/ValueObjectTest.cs b/tests/TheNoobs.ValueObjects.Abstractions.UnitTests/ValueObjectTest.cs index 86b2d05..8f52810 100644 --- a/tests/TheNoobs.ValueObjects.Abstractions.UnitTests/ValueObjectTest.cs +++ b/tests/TheNoobs.ValueObjects.Abstractions.UnitTests/ValueObjectTest.cs @@ -157,5 +157,6 @@ public void Given_AValueObject_WhenComparesToAProxiedItself_Then_TheResultShould AgeStubProxy age2 = new AgeStubProxy(1); (age1 == age2).Should().BeTrue(); + (age2 == age1).Should().BeTrue(); } }