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..34dc770 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) || GetType().IsAssignableTo(other.GetType())) && + 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..8f52810 100644 --- a/tests/TheNoobs.ValueObjects.Abstractions.UnitTests/ValueObjectTest.cs +++ b/tests/TheNoobs.ValueObjects.Abstractions.UnitTests/ValueObjectTest.cs @@ -149,4 +149,14 @@ 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(); + (age2 == age1).Should().BeTrue(); + } }