Browse Source

github-55: document that CellReference#isRowWithinRange(String rowNum, SpreadsheetVersion ss) expects rowNum to be parseable as an integer

pull/1552/head
Antony Liu 3 months ago
parent
commit
c193c8fafd
  1. 17
      main/SS/Util/CellReference.cs
  2. 19
      testcases/main/SS/Util/TestCellReference.cs

17
main/SS/Util/CellReference.cs

@ -544,6 +544,12 @@ namespace NPOI.SS.Util
return IsRowWithinRange(rowStr, ssVersion);
}
/// <summary>
/// Determines whether <c>rowStr</c> is a valid row number for a given SpreadsheetVersion.
/// </summary>
/// <param name="rowStr">the numeric portion of an A1-style cell reference (1-based index)</param>
/// <param name="ssVersion">the spreadsheet version</param>
/// <returns></returns>
public static bool IsRowWithinRange(String rowStr, SpreadsheetVersion ssVersion)
=> IsRowWithinRange(rowStr.AsSpan(), ssVersion);
@ -551,6 +557,17 @@ namespace NPOI.SS.Util
{
CellReferenceParser.TryParsePositiveInt32Fast(rowStr, out var rowNum);
rowNum -= 1;
return IsRowWithinRange(rowNum, ssVersion);
}
/// <summary>
/// Determines whether <c>row</c> is a valid row number for a given SpreadsheetVersion.
/// </summary>
/// <param name="rowNum">the row number (0-based index)</param>
/// <param name="ssVersion">the spreadsheet version</param>
/// <returns></returns>
public static bool IsRowWithinRange(int rowNum, SpreadsheetVersion ssVersion)
{
return 0 <= rowNum && rowNum <= ssVersion.LastRowIndex;
}

19
testcases/main/SS/Util/TestCellReference.cs

@ -339,8 +339,27 @@ namespace TestCases.SS.Util
ClassicAssert.IsTrue(CellReference.IsRowWithinRange("1", ss), "first row");
ClassicAssert.IsTrue(CellReference.IsRowWithinRange("1048576", ss), "last row");
ClassicAssert.IsFalse(CellReference.IsRowWithinRange("1048577", ss), "1 beyond last row");
ClassicAssert.IsFalse(CellReference.IsRowWithinRange(-1, ss), "1 before first row");
ClassicAssert.IsTrue(CellReference.IsRowWithinRange(0, ss), "first row");
ClassicAssert.IsTrue(CellReference.IsRowWithinRange(1048575, ss), "last row");
ClassicAssert.IsFalse(CellReference.IsRowWithinRange(1048576, ss), "1 beyond last row");
}
[Test] //(expected= NumberFormatException.class)
public void IsRowWithinRangeNonInteger_BigNumber()
{
String rowNum = "4000000000";
CellReference.IsRowWithinRange(rowNum, SpreadsheetVersion.EXCEL2007);
}
[Test] //(expected= NumberFormatException.class)
public void IsRowWithinRangeNonInteger_Alpha()
{
String rowNum = "NotANumber";
CellReference.IsRowWithinRange(rowNum, SpreadsheetVersion.EXCEL2007);
}
[Test]
public void IsColWithinRange()
{

Loading…
Cancel
Save