ASF Bugzilla – Attachment 33237 Details for
Bug 58403
Require SpreadsheetVersion on CellRangeAddress.isFullColumnRange and isFullRowRange
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
CellRangeAddressBase.java patch plus unit tests
bug58403.patch (text/plain), 7.20 KB, created by
Javen O'Neal
on 2015-10-31 08:33:30 UTC
(
hide
)
Description:
CellRangeAddressBase.java patch plus unit tests
Filename:
MIME Type:
Creator:
Javen O'Neal
Created:
2015-10-31 08:33:30 UTC
Size:
7.20 KB
patch
obsolete
>Index: src/java/org/apache/poi/ss/util/CellRangeAddressBase.java >=================================================================== >--- src/java/org/apache/poi/ss/util/CellRangeAddressBase.java (revision 1711520) >+++ src/java/org/apache/poi/ss/util/CellRangeAddressBase.java (working copy) >@@ -17,6 +17,8 @@ > > package org.apache.poi.ss.util; > >+import java.util.Arrays; >+ > import org.apache.poi.ss.SpreadsheetVersion; > > >@@ -72,14 +74,40 @@ > } > > >- //TODO use the correct SpreadsheetVersion >+ /** >+ * @deprecated since September 2015. Use {@link #isFullColumnRange(SpreadsheetVersion)} >+ * @return >+ */ >+ @Deprecated > public final boolean isFullColumnRange() { >- return (_firstRow == 0 && _lastRow == SpreadsheetVersion.EXCEL97.getLastRowIndex()) >+ return isFullColumnRange(SpreadsheetVersion.EXCEL97); >+ } >+ /** >+ * Returns true if CellRangeAddress spans one or more entire columns >+ * >+ * @param version >+ * @return >+ */ >+ public final boolean isFullColumnRange(SpreadsheetVersion version) { >+ return (_firstRow == 0 && _lastRow == version.getLastRowIndex()) > || (_firstRow == -1 && _lastRow == -1); > } >- //TODO use the correct SpreadsheetVersion >+ /** >+ * @deprecated since September 2015. Use {@link #isFullRowRange(SpreadsheetVersion)} >+ * @return >+ */ >+ @Deprecated > public final boolean isFullRowRange() { >- return (_firstCol == 0 && _lastCol == SpreadsheetVersion.EXCEL97.getLastColumnIndex()) >+ return isFullRowRange(SpreadsheetVersion.EXCEL97); >+ } >+ /** >+ * Returns true if CellRangeAddress spans one or more entire rows >+ * >+ * @param version >+ * @return >+ */ >+ public final boolean isFullRowRange(SpreadsheetVersion version) { >+ return (_firstCol == 0 && _lastCol == version.getLastColumnIndex()) > || (_firstCol == -1 && _lastCol == -1); > } > >@@ -193,7 +221,12 @@ > > @Override > public int hashCode() { >- final int[] values = new int[]{getMinRow(), getMaxRow(), getMinColumn(), getMaxColumn()}; >- return values.hashCode(); >+ int hash = getMinRow(); >+ hash += getMaxRow(); >+ hash *= 17; >+ hash += getMinColumn(); >+ hash *= 17; >+ hash += getMaxColumn(); >+ return hash; > } > } >Index: src/testcases/org/apache/poi/hssf/record/cf/TestCellRange.java >=================================================================== >--- src/testcases/org/apache/poi/hssf/record/cf/TestCellRange.java (revision 1711520) >+++ src/testcases/org/apache/poi/hssf/record/cf/TestCellRange.java (working copy) >@@ -22,6 +22,7 @@ > import junit.framework.AssertionFailedError; > import junit.framework.TestCase; > >+import org.apache.poi.ss.SpreadsheetVersion; > import org.apache.poi.ss.util.CellRangeAddress; > > /** >@@ -181,8 +182,8 @@ > } > > private static void confirmRange(CellRangeAddress cr, boolean isFullRow, boolean isFullColumn) { >- assertEquals("isFullRowRange", isFullRow, cr.isFullRowRange()); >- assertEquals("isFullColumnRange", isFullColumn, cr.isFullColumnRange()); >+ assertEquals("isFullRowRange", isFullRow, cr.isFullRowRange(SpreadsheetVersion.EXCEL97)); >+ assertEquals("isFullColumnRange", isFullColumn, cr.isFullColumnRange(SpreadsheetVersion.EXCEL97)); > } > > public void testNumberOfCells() { >Index: src/testcases/org/apache/poi/ss/util/TestCellRangeAddress.java >=================================================================== >--- src/testcases/org/apache/poi/ss/util/TestCellRangeAddress.java (revision 1711520) >+++ src/testcases/org/apache/poi/ss/util/TestCellRangeAddress.java (working copy) >@@ -25,6 +25,7 @@ > import static org.junit.Assert.assertNotEquals; //junit4 > > import org.apache.poi.hssf.record.TestcaseRecordInputStream; >+import org.apache.poi.ss.SpreadsheetVersion; > import org.apache.poi.util.LittleEndianOutputStream; > > public final class TestCellRangeAddress extends TestCase { >@@ -233,4 +234,78 @@ > assertEquals(4, ref.getMinColumn()); > assertEquals(10, ref.getMaxColumn()); > } >+ >+ public static void testIsFullRowRange() { >+ CellRangeAddress ref = new CellRangeAddress(0, 0, 0, 0); >+ assertFalse("single cell range", >+ ref.isFullRowRange(SpreadsheetVersion.EXCEL97)); >+ >+ // 1 before last column (for Excel 97 >+ ref = new CellRangeAddress(0, 0, 0, 254); >+ assertFalse("1 before last column for EXCEL97", >+ ref.isFullRowRange(SpreadsheetVersion.EXCEL97)); >+ >+ // last column (for Excel97) >+ ref = new CellRangeAddress(0, 0, 0, 255); >+ assertTrue("last column for Excel 97", >+ ref.isFullRowRange(SpreadsheetVersion.EXCEL97)); >+ assertFalse("many before last column for Excel 2007", >+ ref.isFullRowRange(SpreadsheetVersion.EXCEL2007)); >+ >+ // 1 before last column >+ ref = new CellRangeAddress(0, 0, 0, 16382); >+ assertFalse("many after last column for Excel 97", >+ ref.isFullRowRange(SpreadsheetVersion.EXCEL97)); >+ assertFalse("1 before last column for Excel 2007", >+ ref.isFullRowRange(SpreadsheetVersion.EXCEL2007)); >+ >+ //last column >+ ref = new CellRangeAddress(0, 0, 0, 16383); >+ assertTrue("last column for Excel 2007", >+ ref.isFullRowRange(SpreadsheetVersion.EXCEL2007)); >+ >+ //1 after last column >+ ref = new CellRangeAddress(0, 0, 0, 16384); >+ assertFalse("1 after last column for Excel 2007", >+ ref.isFullRowRange(SpreadsheetVersion.EXCEL2007)); >+ >+ // Does -1, -1 mean this is an invalid/deleted reference? Is this a useful test? >+ ref = new CellRangeAddress(0, 0, -1, -1); >+ assertTrue(ref.isFullRowRange(SpreadsheetVersion.EXCEL97)); >+ assertTrue(ref.isFullRowRange(SpreadsheetVersion.EXCEL2007)); >+ } >+ >+ public static void testIsFullColumnRange() { >+ CellRangeAddress ref = new CellRangeAddress(0, 0, 0, 0); >+ assertFalse(ref.isFullColumnRange(SpreadsheetVersion.EXCEL97)); >+ >+ ref = new CellRangeAddress(0, 65534, 0, 0); >+ assertFalse(ref.isFullColumnRange(SpreadsheetVersion.EXCEL97)); >+ >+ ref = new CellRangeAddress(0, 65535, 0, 0); >+ assertTrue(ref.isFullColumnRange(SpreadsheetVersion.EXCEL97)); >+ assertFalse(ref.isFullColumnRange(SpreadsheetVersion.EXCEL2007)); >+ >+ ref = new CellRangeAddress(0, 1048574, 0, 0); >+ assertFalse(ref.isFullColumnRange(SpreadsheetVersion.EXCEL97)); >+ assertFalse(ref.isFullColumnRange(SpreadsheetVersion.EXCEL2007)); >+ >+ ref = new CellRangeAddress(0, 1048575, 0, 0); >+ assertTrue(ref.isFullColumnRange(SpreadsheetVersion.EXCEL2007)); >+ >+ ref = new CellRangeAddress(0, 1048576, 0, 0); >+ assertFalse(ref.isFullColumnRange(SpreadsheetVersion.EXCEL2007)); >+ >+ // Does -1, -1 mean this is an invalid/deleted reference? Is this a relevant test? >+ ref = new CellRangeAddress(-1, -1, 0, 0); >+ assertTrue(ref.isFullColumnRange(SpreadsheetVersion.EXCEL97)); >+ assertTrue(ref.isFullColumnRange(SpreadsheetVersion.EXCEL2007)); >+ } >+ >+ public static void testHashCode() { >+ final CellRangeAddress a = new CellRangeAddress(0, 0, 0, 0); >+ final CellRangeAddress b = new CellRangeAddress(0, 0, 0, 0); >+ assertNotSame(a, b); >+ assertEquals(a.hashCode(), b.hashCode()); >+ } > }
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 58403
:
33100
|
33237
|
33238