Author: nick
Date: Wed Aug  4 14:40:54 2010
New Revision: 982269

URL: http://svn.apache.org/viewvc?rev=982269&view=rev
Log:
Fix bug #49702 - Correct XSSFWorkbook.getNumCellStyles to check the right 
styles list

Modified:
    poi/trunk/src/documentation/content/xdocs/status.xml
    poi/trunk/src/ooxml/java/org/apache/poi/xssf/model/StylesTable.java
    
poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java

Modified: poi/trunk/src/documentation/content/xdocs/status.xml
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/documentation/content/xdocs/status.xml?rev=982269&r1=982268&r2=982269&view=diff
==============================================================================
--- poi/trunk/src/documentation/content/xdocs/status.xml (original)
+++ poi/trunk/src/documentation/content/xdocs/status.xml Wed Aug  4 14:40:54 
2010
@@ -34,6 +34,7 @@
 
     <changes>
         <release version="3.7-beta2" date="2010-??-??">
+           <action dev="POI-DEVELOPERS" type="fix">49702 - Correct 
XSSFWorkbook.getNumCellStyles to check the right styles list</action>
            <action dev="POI-DEVELOPERS" type="add">49690 - Add WorkbookUtil, 
which provies a way of generating valid sheet names</action>
            <action dev="POI-DEVELOPERS" type="fix">49694 - Use DataFormatter 
when autosizing columns, to better match the real display width of formatted 
cells</action>
            <action dev="POI-DEVELOPERS" type="add">49441 - Allow overriding 
and guessing of HSMF non-unicode string encodings</action>

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/model/StylesTable.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/model/StylesTable.java?rev=982269&r1=982268&r2=982269&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/model/StylesTable.java 
(original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/model/StylesTable.java Wed Aug 
 4 14:40:54 2010
@@ -280,7 +280,9 @@ public class StylesTable extends POIXMLD
         * get the size of cell styles
         */
        public int getNumCellStyles(){
-               return styleXfs.size();
+        // Each cell style has a unique xfs entry
+        // Several might share the same styleXfs entry
+        return xfs.size();
        }
 
        /**

Modified: 
poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java
URL: 
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java?rev=982269&r1=982268&r2=982269&view=diff
==============================================================================
--- 
poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java
 (original)
+++ 
poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java
 Wed Aug  4 14:40:54 2010
@@ -271,7 +271,7 @@ public final class TestXSSFWorkbook exte
         * Verify that the attached test data was not modified. If this test 
method
         * fails, the test data is not working properly.
         */
-       public void test47668() throws Exception {
+       public void testBug47668() throws Exception {
                XSSFWorkbook workbook = 
XSSFTestDataSamples.openSampleWorkbook("47668.xlsx");
                List<XSSFPictureData> allPictures = workbook.getAllPictures();
                assertEquals(2, allPictures.size());
@@ -354,4 +354,55 @@ public final class TestXSSFWorkbook exte
                assertEquals("Numbers", wb.getSheetName(0));
                assertEquals("Chart", wb.getSheetName(1));
        }
+       
+       /**
+        * Problems with the count of the number of styles
+        *  coming out wrong
+        */
+       public void testBug49702() throws Exception {
+           // First try with a new file
+           XSSFWorkbook wb = new XSSFWorkbook();
+
+           // Should have one style
+           assertEquals(1, wb.getNumCellStyles());
+           wb.getCellStyleAt((short)0);
+           try {
+               wb.getCellStyleAt((short)1);
+               fail("Shouldn't be able to get style at 1 that doesn't exist");
+           } catch(IndexOutOfBoundsException e) {}
+
+           // Add another one
+           CellStyle cs = wb.createCellStyle();
+           cs.setDataFormat((short)11);
+
+           // Re-check
+           assertEquals(2, wb.getNumCellStyles());
+           wb.getCellStyleAt((short)0);
+           wb.getCellStyleAt((short)1);
+           try {
+               wb.getCellStyleAt((short)2);
+               fail("Shouldn't be able to get style at 2 that doesn't exist");
+           } catch(IndexOutOfBoundsException e) {}
+
+           // Save and reload
+           XSSFWorkbook nwb = XSSFTestDataSamples.writeOutAndReadBack(wb);
+           assertEquals(2, nwb.getNumCellStyles());
+           nwb.getCellStyleAt((short)0);
+           nwb.getCellStyleAt((short)1);
+           try {
+               nwb.getCellStyleAt((short)2);
+               fail("Shouldn't be able to get style at 2 that doesn't exist");
+           } catch(IndexOutOfBoundsException e) {}
+
+           // Now with an existing file
+           wb = XSSFTestDataSamples.openSampleWorkbook("sample.xlsx");
+           assertEquals(3, wb.getNumCellStyles());
+           wb.getCellStyleAt((short)0);
+           wb.getCellStyleAt((short)1);
+           wb.getCellStyleAt((short)2);
+           try {
+               wb.getCellStyleAt((short)3);
+               fail("Shouldn't be able to get style at 3 that doesn't exist");
+           } catch(IndexOutOfBoundsException e) {}
+       }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to