Skip to content

Commit

Permalink
Merge pull request #47 from diegofrata/null-reference
Browse files Browse the repository at this point in the history
Fixes null reference exception coming from System.HashCode in .NET 4.7
  • Loading branch information
diegofrata committed Jan 5, 2023
2 parents c5e8fd8 + 9cd3c9c commit 5a73651
Show file tree
Hide file tree
Showing 6 changed files with 40 additions and 9 deletions.
2 changes: 1 addition & 1 deletion Generator.Equals.Runtime/DefaultEqualityComparer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ class ObjectEqualityComparer : IEqualityComparer<T>
{
public bool Equals(T x, T y) => object.Equals(x, y);

public int GetHashCode(T obj) => obj!.GetHashCode();
public int GetHashCode(T obj) => obj?.GetHashCode() ?? 0;
}
}
}
31 changes: 31 additions & 0 deletions Generator.Equals.Tests/Runtime/DefaultEqualityComparerTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
using FluentAssertions;
using Xunit;

namespace Generator.Equals.Tests.Runtime;

public partial class DefaultEqualityComparerTests
{
[Equatable]
sealed partial class SealedClass
{
}

[Equatable]
partial class NonSealedClass
{
}


[Fact]
public void GetHashCode_SealedClass_NullValueShouldReturnZero()
{
DefaultEqualityComparer<SealedClass>.Default.GetHashCode(null).Should().Be(0);
}


[Fact]
public void GetHashCode_NonSealedClass_NullValueShouldReturnZero()
{
DefaultEqualityComparer<NonSealedClass>.Default.GetHashCode(null).Should().Be(0);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@

namespace Generator.Equals.Tests.Runtime;

public class DictionaryEqualityComparer
public class DictionaryEqualityComparerTests
{
readonly DictionaryEqualityComparer<string, int> _sut;

public DictionaryEqualityComparer()
public DictionaryEqualityComparerTests()
{
_sut = new DictionaryEqualityComparer<string, int>(
new ReverseEqualityComparer(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@

namespace Generator.Equals.Tests.Runtime;

public class OrderedEqualityComparer
public class OrderedEqualityComparerTests
{
readonly OrderedEqualityComparer<int> _sut;
readonly int[] _a;
readonly int[] _b;

public OrderedEqualityComparer()
public OrderedEqualityComparerTests()
{
_sut = new OrderedEqualityComparer<int>(
new NegativeEqualityComparer()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@

namespace Generator.Equals.Tests.Runtime;

public class SetEqualityComparer
public class SetEqualityComparerTests
{
readonly SetEqualityComparer<int> _sut;

public SetEqualityComparer()
public SetEqualityComparerTests()
{
_sut = new SetEqualityComparer<int>(
new NegativeEqualityComparer()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@

namespace Generator.Equals.Tests.Runtime;

public class UnorderedEqualityComparer
public class UnorderedEqualityComparerTests
{
readonly UnorderedEqualityComparer<int> _sut;
readonly int[] _a;
readonly int[] _b;

public UnorderedEqualityComparer()
public UnorderedEqualityComparerTests()
{
_sut = new UnorderedEqualityComparer<int>(
new NegativeEqualityComparer()
Expand Down

0 comments on commit 5a73651

Please sign in to comment.