diff --git a/src/GoogleSheetsWrapper.Tests/SheetRangeTests.cs b/src/GoogleSheetsWrapper.Tests/SheetRangeTests.cs
index 53de095..1e4540e 100644
--- a/src/GoogleSheetsWrapper.Tests/SheetRangeTests.cs
+++ b/src/GoogleSheetsWrapper.Tests/SheetRangeTests.cs
@@ -180,6 +180,35 @@ public void SheetRangeNoTabNameSingleCellR1C1FormattedCorrectly()
Assert.That(newRange, Is.EqualTo(range));
}
+ [Test]
+ public void SheetRangeEqualsHandlesNullAndDifferentObjectType()
+ {
+ var range = new SheetRange("Tab", 1, 1, 2, 2);
+
+ Assert.That(range.Equals((SheetRange)null), Is.False);
+ Assert.That(range.Equals((object)null), Is.False);
+ Assert.That(range.Equals("not-a-range"), Is.False);
+ }
+
+ [Test]
+ public void SheetRangeEqualsUsesRangeCoordinatesAndTabName()
+ {
+ var rangeA = new SheetRange("Tab", 1, 1, 2, 2);
+ var rangeB = new SheetRange("Tab", 1, 1, 2, 2);
+ var rangeC = new SheetRange("Tab", 1, 1, 3, 2);
+
+ Assert.That(rangeA.Equals(rangeB), Is.True);
+ Assert.That(rangeA.GetHashCode(), Is.EqualTo(rangeB.GetHashCode()));
+ Assert.That(rangeA.Equals(rangeC), Is.False);
+
+ // Derived notation/flags should not participate in equality
+ var mutated = new SheetRange("Tab", 1, 1, 2, 2);
+ mutated.EndColumn = null;
+ var constructed = new SheetRange("Tab", 1, 1, null, 2);
+
+ Assert.That(mutated.Equals(constructed), Is.True);
+ }
+
private static void AssertLettersFromColumnID(int columnID, string expectedLetters)
{
var result = SheetRange.GetLettersFromColumnID(columnID);
diff --git a/src/GoogleSheetsWrapper/GoogleSheetsWrapper.csproj b/src/GoogleSheetsWrapper/GoogleSheetsWrapper.csproj
index 43e758f..5bd4b22 100644
--- a/src/GoogleSheetsWrapper/GoogleSheetsWrapper.csproj
+++ b/src/GoogleSheetsWrapper/GoogleSheetsWrapper.csproj
@@ -8,7 +8,7 @@
https://github.com/SteveWinward/GoogleSheetsWrapper
LICENSE
https://github.com/SteveWinward/GoogleSheetsWrapper
- 2.0.27
+ 2.0.28
Google Sheets
README.md
A simple wrapper library that makes it easier to perform CRUD operations against Google Sheets spreadsheets.
diff --git a/src/GoogleSheetsWrapper/SheetRange.cs b/src/GoogleSheetsWrapper/SheetRange.cs
index fdd14ad..5da2523 100644
--- a/src/GoogleSheetsWrapper/SheetRange.cs
+++ b/src/GoogleSheetsWrapper/SheetRange.cs
@@ -266,6 +266,16 @@ public static int GetHashCode(SheetRange obj)
/// when the ranges are equal; otherwise, .
public bool Equals(SheetRange other)
{
+ if (other is null)
+ {
+ return false;
+ }
+
+ if (ReferenceEquals(this, other))
+ {
+ return true;
+ }
+
return
A1Notation == other.A1Notation &&
CanSupportA1Notation == other.CanSupportA1Notation &&
@@ -285,7 +295,7 @@ public bool Equals(SheetRange other)
/// when the object is an equal range; otherwise, .
public override bool Equals(object obj)
{
- return Equals((SheetRange)obj);
+ return obj is SheetRange other && Equals(other);
}
///
@@ -299,4 +309,4 @@ public override int GetHashCode()
#endregion
}
-}
\ No newline at end of file
+}