Author: centic
Date: Mon Jun 17 09:06:39 2013
New Revision: 1493686

URL: http://svn.apache.org/r1493686
Log:
Bug 54607: Add unit test and fix NPE for getTopRow() and getLeftCol()

Added:
    poi/trunk/test-data/spreadsheet/54607.xlsx
Modified:
    poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
    
poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java?rev=1493686&r1=1493685&r2=1493686&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java 
(original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java Mon 
Jun 17 09:06:39 2013
@@ -866,6 +866,9 @@ public class XSSFSheet extends POIXMLDoc
 
     public short getLeftCol() {
         String cellRef = 
worksheet.getSheetViews().getSheetViewArray(0).getTopLeftCell();
+        if(cellRef == null) {
+               return 0;
+        }
         CellReference cellReference = new CellReference(cellRef);
         return cellReference.getCol();
     }
@@ -1178,6 +1181,9 @@ public class XSSFSheet extends POIXMLDoc
      */
     public short getTopRow() {
         String cellRef = getSheetTypeSheetView().getTopLeftCell();
+        if(cellRef == null) {
+               return 0;
+        }
         CellReference cellReference = new CellReference(cellRef);
         return (short) cellReference.getRow();
     }

Modified: 
poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java?rev=1493686&r1=1493685&r2=1493686&view=diff
==============================================================================
--- 
poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java 
(original)
+++ 
poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java 
Mon Jun 17 09:06:39 2013
@@ -17,18 +17,29 @@
 
 package org.apache.poi.xssf.usermodel;
 
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
 import java.util.List;
 
-import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.hssf.HSSFTestDataSamples;
+import org.apache.poi.hssf.record.PasswordRecord;
+import org.apache.poi.ss.usermodel.BaseTestSheet;
+import org.apache.poi.ss.usermodel.Cell;
+import org.apache.poi.ss.usermodel.CreationHelper;
+import org.apache.poi.ss.usermodel.RichTextString;
+import org.apache.poi.ss.usermodel.Sheet;
+import org.apache.poi.ss.usermodel.Workbook;
 import org.apache.poi.ss.util.CellRangeAddress;
+import org.apache.poi.util.HexDump;
 import org.apache.poi.xssf.XSSFITestDataProvider;
 import org.apache.poi.xssf.XSSFTestDataSamples;
+import org.apache.poi.xssf.model.CalculationChain;
 import org.apache.poi.xssf.model.CommentsTable;
 import org.apache.poi.xssf.model.StylesTable;
-import org.apache.poi.xssf.model.CalculationChain;
+import org.apache.poi.xssf.streaming.SXSSFWorkbook;
 import org.apache.poi.xssf.usermodel.helpers.ColumnHelper;
-import org.apache.poi.util.HexDump;
-import org.apache.poi.hssf.record.PasswordRecord;
 import org.openxmlformats.schemas.spreadsheetml.x2006.main.*;
 
 
@@ -1091,4 +1102,66 @@ public final class TestXSSFSheet extends
          sheet = workbook.getSheet("Sheet 1");
          assertEquals(false, sheet.getForceFormulaRecalculation());
        }
+
+    public void test54607() {
+       // run with the file provided in the Bug-Report
+       runGetTopRow("54607.xlsx", true, 1, 0, 0);      
+       runGetLeftCol("54607.xlsx", true, 0, 0, 0);     
+       
+       // run with some other flie to see 
+       runGetTopRow("54436.xlsx", true, 0);
+       runGetLeftCol("54436.xlsx", true, 0);
+       runGetTopRow("TwoSheetsNoneHidden.xlsx", true, 0, 0);
+       runGetLeftCol("TwoSheetsNoneHidden.xlsx", true, 0, 0);
+       runGetTopRow("TwoSheetsNoneHidden.xls", false, 0, 0);
+       runGetLeftCol("TwoSheetsNoneHidden.xls", false, 0, 0);
+    }
+
+       private void runGetTopRow(String file, boolean isXSSF, int... topRows) {
+               final Workbook wb;
+               if(isXSSF) {
+                       wb = XSSFTestDataSamples.openSampleWorkbook(file);
+               } else {
+                       wb = HSSFTestDataSamples.openSampleWorkbook(file);
+               }
+       for (int si = 0; si < wb.getNumberOfSheets(); si++) {
+               Sheet sh = wb.getSheetAt(si);
+               assertNotNull(sh.getSheetName());
+               assertEquals("Did not match for sheet " + si, topRows[si], 
sh.getTopRow());
+       }
+
+       // for XSSF also test with SXSSF
+       if(isXSSF) {
+                       Workbook swb = new SXSSFWorkbook((XSSFWorkbook) wb);
+               for (int si = 0; si < swb.getNumberOfSheets(); si++) {
+                       Sheet sh = swb.getSheetAt(si);
+                       assertNotNull(sh.getSheetName());
+                       assertEquals("Did not match for sheet " + si, 
topRows[si], sh.getTopRow());
+               }
+       }
+       }
+
+       private void runGetLeftCol(String file, boolean isXSSF, int... topRows) 
{
+               final Workbook wb;
+               if(isXSSF) {
+                       wb = XSSFTestDataSamples.openSampleWorkbook(file);
+               } else {
+                       wb = HSSFTestDataSamples.openSampleWorkbook(file);
+               }
+       for (int si = 0; si < wb.getNumberOfSheets(); si++) {
+               Sheet sh = wb.getSheetAt(si);
+               assertNotNull(sh.getSheetName());
+               assertEquals("Did not match for sheet " + si, topRows[si], 
sh.getLeftCol());
+       }
+
+       // for XSSF also test with SXSSF
+       if(isXSSF) {
+                       Workbook swb = new SXSSFWorkbook((XSSFWorkbook) wb);
+               for (int si = 0; si < swb.getNumberOfSheets(); si++) {
+                       Sheet sh = swb.getSheetAt(si);
+                       assertNotNull(sh.getSheetName());
+                       assertEquals("Did not match for sheet " + si, 
topRows[si], sh.getLeftCol());
+               }
+       }
+       }
 }

Added: poi/trunk/test-data/spreadsheet/54607.xlsx
URL: 
http://svn.apache.org/viewvc/poi/trunk/test-data/spreadsheet/54607.xlsx?rev=1493686&view=auto
==============================================================================
Files poi/trunk/test-data/spreadsheet/54607.xlsx (added) and 
poi/trunk/test-data/spreadsheet/54607.xlsx Mon Jun 17 09:06:39 2013 differ



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@poi.apache.org
For additional commands, e-mail: commits-h...@poi.apache.org

Reply via email to