Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions src/GoogleSheetsWrapper.Tests/SheetRangeTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Comment thread
Copilot marked this conversation as resolved.

private static void AssertLettersFromColumnID(int columnID, string expectedLetters)
{
var result = SheetRange.GetLettersFromColumnID(columnID);
Expand Down
2 changes: 1 addition & 1 deletion src/GoogleSheetsWrapper/GoogleSheetsWrapper.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<PackageProjectUrl>https://github.com/SteveWinward/GoogleSheetsWrapper</PackageProjectUrl>
<PackageLicenseFile>LICENSE</PackageLicenseFile>
<RepositoryUrl>https://github.com/SteveWinward/GoogleSheetsWrapper</RepositoryUrl>
<Version>2.0.27</Version>
<Version>2.0.28</Version>
<PackageTags>Google Sheets</PackageTags>
<PackageReadmeFile>README.md</PackageReadmeFile>
<Description>A simple wrapper library that makes it easier to perform CRUD operations against Google Sheets spreadsheets.</Description>
Expand Down
14 changes: 12 additions & 2 deletions src/GoogleSheetsWrapper/SheetRange.cs
Original file line number Diff line number Diff line change
Expand Up @@ -266,6 +266,16 @@ public static int GetHashCode(SheetRange obj)
/// <returns><see langword="true"/> when the ranges are equal; otherwise, <see langword="false"/>.</returns>
public bool Equals(SheetRange other)
{
if (other is null)
{
return false;
}

Comment on lines +269 to +273
if (ReferenceEquals(this, other))
{
return true;
}

return
A1Notation == other.A1Notation &&
CanSupportA1Notation == other.CanSupportA1Notation &&
Expand All @@ -285,7 +295,7 @@ public bool Equals(SheetRange other)
/// <returns><see langword="true"/> when the object is an equal range; otherwise, <see langword="false"/>.</returns>
public override bool Equals(object obj)
{
return Equals((SheetRange)obj);
return obj is SheetRange other && Equals(other);
}

/// <summary>
Expand All @@ -299,4 +309,4 @@ public override int GetHashCode()

#endregion
}
}
}
Loading