]> source.dussan.org Git - poi.git/commitdiff
Unit test to try to reproduce bug #62108 (currenly works though...)
authorNick Burch <nick@apache.org>
Fri, 16 Feb 2018 11:47:24 +0000 (11:47 +0000)
committerNick Burch <nick@apache.org>
Fri, 16 Feb 2018 11:47:24 +0000 (11:47 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1824451 13f79535-47bb-0310-9956-ffa450edef68

src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java

index 131b441d64a298ab84e2082b5c6a9cf30e313a48..fe8cafcaac3007b107aabc06611621a50f0e255e 100644 (file)
@@ -3252,4 +3252,45 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues {
 
         wb.close();
     }
+    
+    /**
+     * Auto column sizing failed when there were loads of fonts with
+     *  errors like ArrayIndexOutOfBoundsException: -32765
+     * TODO Get this to actually reproduce the bug...
+     */
+    @Test
+    public void test62108() throws IOException {
+        XSSFWorkbook wb = new XSSFWorkbook();
+        XSSFSheet sheet = wb.createSheet();
+        XSSFRow row = sheet.createRow(0);
+        
+        // Create lots of fonts
+        XSSFDataFormat formats = wb.createDataFormat();
+        XSSFFont[] fonts = new XSSFFont[50000];
+        for (int i=0; i<fonts.length; i++) {
+            XSSFFont font = wb.createFont();
+            font.setFontHeight(i);
+        }
+        
+        // Create a moderate number of columns, which use
+        //  fonts from the start and end of the font list
+        final int numCols = 125;
+        for (int i=0; i<numCols; i++) {
+            XSSFCellStyle cs = wb.createCellStyle();
+            cs.setDataFormat(formats.getFormat("'Test "+i+"' #,###"));
+            
+            XSSFFont font = fonts[i];
+            if (i%2==1) { font = fonts[fonts.length-i]; }
+            cs.setFont(font);
+            
+            XSSFCell c = row.createCell(i);
+            c.setCellValue(i);
+            c.setCellStyle(cs);
+        }
+        
+        // Do the auto-size
+        for (int i=0; i<numCols; i++) {
+            sheet.autoSizeColumn(i);
+        }
+    }
 }