]> source.dussan.org Git - poi.git/commitdiff
Bug 63073: Adjust returned index of merged regions and verify all calls in tests
authorDominik Stadler <centic@apache.org>
Tue, 23 Apr 2019 20:27:39 +0000 (20:27 +0000)
committerDominik Stadler <centic@apache.org>
Tue, 23 Apr 2019 20:27:39 +0000 (20:27 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1858021 13f79535-47bb-0310-9956-ffa450edef68

16 files changed:
src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java
src/ooxml/testcases/org/apache/poi/xssf/streaming/TestAutoSizeColumnTracker.java
src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFSheetAutoSizeColumn.java
src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestUnfixedBugs.java
src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java
src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java
src/testcases/org/apache/poi/hssf/usermodel/TestWorkbook.java
src/testcases/org/apache/poi/ss/usermodel/BaseTestBugzillaIssues.java
src/testcases/org/apache/poi/ss/usermodel/BaseTestCloneSheet.java
src/testcases/org/apache/poi/ss/usermodel/BaseTestSheet.java
src/testcases/org/apache/poi/ss/usermodel/BaseTestSheetAutosizeColumn.java
src/testcases/org/apache/poi/ss/usermodel/BaseTestSheetShiftColumns.java
src/testcases/org/apache/poi/ss/usermodel/BaseTestSheetShiftRows.java
src/testcases/org/apache/poi/ss/usermodel/BaseTestSheetUpdateArrayFormulas.java
src/testcases/org/apache/poi/ss/usermodel/BaseTestWorkbook.java
src/testcases/org/apache/poi/ss/util/TestSheetUtil.java

index 8f3e411644ea7e468228ae7eb54317047b2bf739..955fcdec7c04d0f79b11f7b590110251c9ce5fec 100644 (file)
@@ -392,7 +392,7 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet  {
      *
      * @param region to merge
      * @param validate whether to validate merged region
-     * @return index of this region
+     * @return 0-based index of this region
      * @throws IllegalArgumentException if region contains fewer than 2 cells (this check is inexpensive and is performed regardless of <tt>validate</tt>)
      * @throws IllegalStateException if region intersects with a multi-cell array formula
      * @throws IllegalStateException if region intersects with an existing region on this sheet
@@ -409,14 +409,14 @@ public class XSSFSheet extends POIXMLDocumentPart implements Sheet  {
             validateArrayFormulas(region);
 
             // Throw IllegalStateException if the argument CellRangeAddress intersects with
-            // a merged region already in this sheet 
+            // a merged region already in this sheet
             validateMergedRegions(region);
         }
 
         CTMergeCells ctMergeCells = worksheet.isSetMergeCells() ? worksheet.getMergeCells() : worksheet.addNewMergeCells();
         CTMergeCell ctMergeCell = ctMergeCells.addNewMergeCell();
         ctMergeCell.setRef(region.formatAsString());
-        return ctMergeCells.sizeOfMergeCellArray();
+        return ctMergeCells.sizeOfMergeCellArray()-1;
     }
 
     /**
index f3ba5196517053ba789a7d29a855cc9863eac085..ebc03af9de743f8d21aae20fd435444d266904eb 100644 (file)
@@ -46,7 +46,7 @@ import org.junit.Test;
  * Tests the auto-sizing behaviour of {@link SXSSFSheet} when not all
  * rows fit into the memory window size etc.
  * 
- * @see Bug #57450 which reported the original mis-behaviour
+ * see Bug #57450 which reported the original misbehaviour
  */
 public class TestAutoSizeColumnTracker {
     
@@ -169,12 +169,12 @@ public class TestAutoSizeColumnTracker {
         }
         tracker.updateColumnWidths(row1);
         tracker.updateColumnWidths(row2);
-        sheet.addMergedRegion(CellRangeAddress.valueOf("D1:E1"));
+        assertEquals(0, sheet.addMergedRegion(CellRangeAddress.valueOf("D1:E1")));
         
         assumeRequiredFontsAreInstalled(workbook, row1.getCell(columns.iterator().next()));
         
         // Excel 2013 and LibreOffice 4.2.8.2 both treat columns with merged regions as blank
-        /**    A     B    C      D   E
+        /*     A     B    C      D   E
          * 1 LONG  LONG        LONGMERGE
          * 2       SHORT SHORT     SHORT
          */
index 58d2f3772e0df05abd0309fd7b142f65dcff6011..903c0bc885671606258e543f045867c2730e8583 100644 (file)
@@ -50,7 +50,7 @@ import org.junit.runners.Parameterized.Parameters;
  * Tests the auto-sizing behaviour of {@link SXSSFSheet} when not all
  * rows fit into the memory window size etc.
  * 
- * @see Bug #57450 which reported the original mis-behaviour
+ * see Bug #57450 which reported the original misbehaviour
  */
 @RunWith(Parameterized.class)
 public class TestSXSSFSheetAutoSizeColumn {
@@ -79,7 +79,7 @@ public class TestSXSSFSheetAutoSizeColumn {
     private SXSSFSheet sheet;
     private SXSSFWorkbook workbook;
     
-    @Parameter(0)
+    @Parameter
     public boolean useMergedCells;
     
     @Parameters(name="{index}: useMergedCells={0}")
@@ -189,11 +189,11 @@ public class TestSXSSFSheetAutoSizeColumn {
         Cell a1 = createRowWithCellValues(sheet, 0, LONG_CELL_VALUE);
 
         assumeRequiredFontsAreInstalled(workbook, a1);
-        sheet.addMergedRegion(CellRangeAddress.valueOf("A1:B1"));
+        assertEquals(0, sheet.addMergedRegion(CellRangeAddress.valueOf("A1:B1")));
         
         createRowWithCellValues(sheet, 1, SHORT_CELL_VALUE, SHORT_CELL_VALUE);
         
-        /**
+        /*
          *    A      B
          * 1 LONGMERGED
          * 2 SHORT SHORT
index cf8fa3a3fc3965af6c224111bc273a0e5b2333ae..a103d4f422cf0104d0e5e8ad524912f48217a4d0 100644 (file)
@@ -164,6 +164,8 @@ public final class TestUnfixedBugs {
         wbBack.close();
     }
 
+    // This test will run green, but the resulting file is formatted incorrectly,
+    // see the bug at https://bz.apache.org/bugzilla/show_bug.cgi?id=55752
     @Test
     public void testBug55752() throws IOException {
         try (Workbook wb = new XSSFWorkbook()) {
@@ -189,16 +191,16 @@ public final class TestUnfixedBugs {
 
             // merge cells
             CellRangeAddress range1 = new CellRangeAddress(0, 0, 0, 1);
-            sheet.addMergedRegion(range1);
+            assertEquals(0, sheet.addMergedRegion(range1));
             CellRangeAddress range2 = new CellRangeAddress(1, 1, 0, 1);
-            sheet.addMergedRegion(range2);
+            assertEquals(1, sheet.addMergedRegion(range2));
             CellRangeAddress range3 = new CellRangeAddress(2, 2, 0, 1);
-            sheet.addMergedRegion(range3);
+            assertEquals(2, sheet.addMergedRegion(range3));
             assertEquals(0, range3.getFirstColumn());
             assertEquals(1, range3.getLastColumn());
             assertEquals(2, range3.getLastRow());
             CellRangeAddress range4 = new CellRangeAddress(3, 3, 0, 1);
-            sheet.addMergedRegion(range4);
+            assertEquals(3, sheet.addMergedRegion(range4));
 
             // set border
             RegionUtil.setBorderBottom(BorderStyle.THIN, range1, sheet);
index 6e54db73ca155bfd0f1e504d2fc7a1267dfcfd9c..faad31f46f54918925f7dd0f7fc81eb7e1b19f13 100644 (file)
@@ -275,9 +275,9 @@ public final class TestXSSFSheet extends BaseTestXSheet {
         CellRangeAddress region_2 = CellRangeAddress.valueOf("C3:D4");
         CellRangeAddress region_3 = CellRangeAddress.valueOf("E5:F6");
         CellRangeAddress region_4 = CellRangeAddress.valueOf("G7:H8");
-        sheet.addMergedRegion(region_1);
-        sheet.addMergedRegion(region_2);
-        sheet.addMergedRegion(region_3);
+        assertEquals(0, sheet.addMergedRegion(region_1));
+        assertEquals(1, sheet.addMergedRegion(region_2));
+        assertEquals(2, sheet.addMergedRegion(region_3));
         assertEquals("C3:D4", ctWorksheet.getMergeCells().getMergeCellArray(1).getRef());
         assertEquals(3, sheet.getNumMergedRegions());
         sheet.removeMergedRegion(1);
@@ -288,10 +288,10 @@ public final class TestXSSFSheet extends BaseTestXSheet {
         assertEquals(0, sheet.getNumMergedRegions());
         assertNull(" CTMergeCells should be deleted after removing the last merged " +
                 "region on the sheet.", sheet.getCTWorksheet().getMergeCells());
-        sheet.addMergedRegion(region_1);
-        sheet.addMergedRegion(region_2);
-        sheet.addMergedRegion(region_3);
-        sheet.addMergedRegion(region_4);
+        assertEquals(0, sheet.addMergedRegion(region_1));
+        assertEquals(1, sheet.addMergedRegion(region_2));
+        assertEquals(2, sheet.addMergedRegion(region_3));
+        assertEquals(3, sheet.addMergedRegion(region_4));
         // test invalid indexes OOBE
         Set<Integer> rmIdx = new HashSet<>(Arrays.asList(5, 6));
         sheet.removeMergedRegions(rmIdx);
index 6bd3d7328122bf309ddbe2ab000e797e1a1465d6..6bcbcfa332c36aa5c1746714031f358fca3e31fa 100644 (file)
@@ -524,7 +524,7 @@ public final class TestHSSFSheet extends BaseTestSheet {
 
         int sclLoc = sheet.getSheet().findFirstRecordLocBySid(SCLRecord.sid);
         int window2Loc = sheet.getSheet().findFirstRecordLocBySid(WindowTwoRecord.sid);
-        assertTrue(sclLoc == window2Loc + 1);
+        assertEquals(sclLoc, window2Loc + 1);
         
         // verify limits
         try {
@@ -667,7 +667,7 @@ public final class TestHSSFSheet extends BaseTestSheet {
         assertTrue("Column autosized with only one row: wrong width", sheet.getColumnWidth(0) <= maxWithRow1And2);
 
         //create a region over the 2nd row and auto size the first column
-        sheet.addMergedRegion(new CellRangeAddress(1,1,0,1));
+        assertEquals(1, sheet.addMergedRegion(new CellRangeAddress(1,1,0,1)));
         assertNotNull(sheet.getMergedRegion(0));
         sheet.autoSizeColumn((short)0);
         HSSFWorkbook wb2 = HSSFTestDataSamples.writeOutAndReadBack(wb1);
index 70bb3b8877d7f016d571241e082388c88a1df19c..04d85130fd021608f5a76cc228300e2e844d87d8 100644 (file)
@@ -386,8 +386,8 @@ public final class TestWorkbook {
 
         populateSheet(s);
 
-        s.addMergedRegion(new CellRangeAddress(0, 10, 0, 10));
-        s.addMergedRegion(new CellRangeAddress(30, 40, 5, 15));
+        assertEquals(0, s.addMergedRegion(new CellRangeAddress(0, 10, 0, 10)));
+        assertEquals(1, s.addMergedRegion(new CellRangeAddress(30, 40, 5, 15)));
         sanityChecker.checkHSSFWorkbook(wb1);
         HSSFWorkbook wb2 = HSSFTestDataSamples.writeOutAndReadBack(wb1);
 
index fcc6eb9425e22088fbe9b572ea2d2ee901f43479..5aca6a63fd58893d8c77b78210cf80bb3c8d6ee8 100644 (file)
@@ -154,30 +154,30 @@ public abstract class BaseTestBugzillaIssues {
      */
     @Test
     public void bug22720() throws IOException {
-       Workbook wb = _testDataProvider.createWorkbook();
-       wb.createSheet("TEST");
-       Sheet template = wb.getSheetAt(0);
+        Workbook wb = _testDataProvider.createWorkbook();
+        wb.createSheet("TEST");
+        Sheet template = wb.getSheetAt(0);
 
-       template.addMergedRegion(new CellRangeAddress(0, 1, 0, 2));
-       template.addMergedRegion(new CellRangeAddress(2, 3, 0, 2));
+        assertEquals(0, template.addMergedRegion(new CellRangeAddress(0, 1, 0, 2)));
+        assertEquals(1, template.addMergedRegion(new CellRangeAddress(2, 3, 0, 2)));
 
-       Sheet clone = wb.cloneSheet(0);
-       int originalMerged = template.getNumMergedRegions();
-       assertEquals("2 merged regions", 2, originalMerged);
+        Sheet clone = wb.cloneSheet(0);
+        int originalMerged = template.getNumMergedRegions();
+        assertEquals("2 merged regions", 2, originalMerged);
 
-       //remove merged regions from clone
-       for (int i=template.getNumMergedRegions()-1; i>=0; i--) {
-           clone.removeMergedRegion(i);
-       }
+        //remove merged regions from clone
+        for (int i=template.getNumMergedRegions()-1; i>=0; i--) {
+            clone.removeMergedRegion(i);
+        }
 
-       assertEquals("Original Sheet's Merged Regions were removed", originalMerged, template.getNumMergedRegions());
-       //check if template's merged regions are OK
-       if (template.getNumMergedRegions()>0) {
+        assertEquals("Original Sheet's Merged Regions were removed", originalMerged, template.getNumMergedRegions());
+        //check if template's merged regions are OK
+        if (template.getNumMergedRegions()>0) {
             // fetch the first merged region...EXCEPTION OCCURS HERE
             template.getMergedRegion(0);
-       }
+        }
 
-       wb.close();
+        wb.close();
     }
 
     @Test
index f6c47af84dfb46a0a659855e4ac623b83389caed..f3970ff46c1350d34b6fc4d088d5dfc9c6b613ab 100644 (file)
@@ -41,7 +41,7 @@ public abstract class BaseTestCloneSheet {
     public void testCloneSheetBasic() throws IOException{
         Workbook b = _testDataProvider.createWorkbook();
         Sheet s = b.createSheet("Test");
-        s.addMergedRegion(new CellRangeAddress(0, 1, 0, 1));
+        assertEquals(0, s.addMergedRegion(new CellRangeAddress(0, 1, 0, 1)));
         Sheet clonedSheet = b.cloneSheet(0);
 
         assertEquals("One merged area", 1, clonedSheet.getNumMergedRegions());
@@ -51,7 +51,6 @@ public abstract class BaseTestCloneSheet {
 
     /**
      * Ensures that pagebreak cloning works properly
-     * @throws IOException
      */
     @Test
     public void testPageBreakClones() throws IOException {
index 08414cd5c8b0f9a2cd9de3884f6102d70a8f06bb..657442026fefbba169d9d5b4eac62c2cf972dac4 100644 (file)
@@ -277,7 +277,7 @@ public abstract class BaseTestSheet {
         final Sheet sheet = wb.createSheet();
         
         final CellRangeAddress baseRegion = new CellRangeAddress(0, 1, 0, 1); //A1:B2
-        sheet.addMergedRegion(baseRegion);
+        assertEquals(0, sheet.addMergedRegion(baseRegion));
         
         try {
             final CellRangeAddress duplicateRegion = new CellRangeAddress(0, 1, 0, 1); //A1:B2
@@ -316,7 +316,7 @@ public abstract class BaseTestSheet {
         }
         
         final CellRangeAddress disjointRegion = new CellRangeAddress(10, 11, 10, 11);
-        sheet.addMergedRegion(disjointRegion);
+        assertEquals(1, sheet.addMergedRegion(disjointRegion));
         
         wb.close();
     }
@@ -352,7 +352,7 @@ public abstract class BaseTestSheet {
         SpreadsheetVersion ssVersion = _testDataProvider.getSpreadsheetVersion();
 
         CellRangeAddress region = new CellRangeAddress(0, 1, 0, 1);
-        sheet.addMergedRegion(region);
+        assertEquals(0, sheet.addMergedRegion(region));
         assertEquals(1, sheet.getNumMergedRegions());
 
         try {
@@ -390,9 +390,9 @@ public abstract class BaseTestSheet {
         Workbook wb = _testDataProvider.createWorkbook();
         Sheet sheet = wb.createSheet();
         CellRangeAddress region = new CellRangeAddress(0, 1, 0, 1);
-        sheet.addMergedRegion(region);
+        assertEquals(0, sheet.addMergedRegion(region));
         region = new CellRangeAddress(2, 3, 0, 1);
-        sheet.addMergedRegion(region);
+        assertEquals(1, sheet.addMergedRegion(region));
 
         sheet.removeMergedRegion(0);
 
@@ -404,14 +404,14 @@ public abstract class BaseTestSheet {
         assertEquals("there should be no merged regions left!", 0, sheet.getNumMergedRegions());
 
         //an, add, remove, get(0) would null pointer
-        sheet.addMergedRegion(region);
+        assertEquals(0, sheet.addMergedRegion(region));
         assertEquals("there should now be one merged region!", 1, sheet.getNumMergedRegions());
         sheet.removeMergedRegion(0);
         assertEquals("there should now be zero merged regions!", 0, sheet.getNumMergedRegions());
         //add it again!
         region.setLastRow(4);
 
-        sheet.addMergedRegion(region);
+        assertEquals(0, sheet.addMergedRegion(region));
         assertEquals("there should now be one merged region!", 1, sheet.getNumMergedRegions());
 
         //should exist now!
@@ -434,7 +434,7 @@ public abstract class BaseTestSheet {
         for (int r=0; r<10; r++) {
             CellRangeAddress region = new CellRangeAddress(r, r, 0, 1);
             mergedRegions.put(r, region);
-            sheet.addMergedRegion(region);
+            assertEquals(r, sheet.addMergedRegion(region));
         }
         assertCollectionEquals(mergedRegions.values(), sheet.getMergedRegions());
         
@@ -466,7 +466,7 @@ public abstract class BaseTestSheet {
         cell.setCellValue(factory.createRichTextString("second row, second cell"));
 
         CellRangeAddress region = CellRangeAddress.valueOf("A2:B2");
-        sheet.addMergedRegion(region);
+        assertEquals(0, sheet.addMergedRegion(region));
 
         sheet.shiftRows(1, 1, 1);
 
@@ -495,13 +495,13 @@ public abstract class BaseTestSheet {
         assumeTrue(region1.intersects(region2));
         assumeTrue(region2.intersects(region3));
 
-        sh.addMergedRegionUnsafe(region1);
+        assertEquals(0, sh.addMergedRegionUnsafe(region1));
         assertTrue(sh.getMergedRegions().contains(region1));
 
         // adding a duplicate or overlapping merged region should not
         // raise an exception with the unsafe version of addMergedRegion.
 
-        sh.addMergedRegionUnsafe(region2);
+        assertEquals(1, sh.addMergedRegionUnsafe(region2));
 
         // the safe version of addMergedRegion should throw when trying to add a merged region that overlaps an existing region
         assertTrue(sh.getMergedRegions().contains(region2));
@@ -513,7 +513,7 @@ public abstract class BaseTestSheet {
             assertFalse(sh.getMergedRegions().contains(region3));
         }
         // addMergedRegion should not re-validate previously-added merged regions
-        sh.addMergedRegion(region4);
+        assertEquals(2, sh.addMergedRegion(region4));
 
         // validation methods should detect a problem with previously added merged regions (runs in O(n^2) time)
         try {
@@ -534,10 +534,10 @@ public abstract class BaseTestSheet {
         Workbook wb1 = _testDataProvider.createWorkbook();
         Sheet sheet = wb1.createSheet();
 
-        assertEquals(sheet.isDisplayGridlines(), true);
-        assertEquals(sheet.isDisplayRowColHeadings(), true);
-        assertEquals(sheet.isDisplayFormulas(), false);
-        assertEquals(sheet.isDisplayZeros(), true);
+        assertTrue(sheet.isDisplayGridlines());
+        assertTrue(sheet.isDisplayRowColHeadings());
+        assertFalse(sheet.isDisplayFormulas());
+        assertTrue(sheet.isDisplayZeros());
 
         sheet.setDisplayGridlines(false);
         sheet.setDisplayRowColHeadings(false);
@@ -548,10 +548,10 @@ public abstract class BaseTestSheet {
         wb1.close();
         sheet = wb2.getSheetAt(0);
 
-        assertEquals(sheet.isDisplayGridlines(), false);
-        assertEquals(sheet.isDisplayRowColHeadings(), false);
-        assertEquals(sheet.isDisplayFormulas(), true);
-        assertEquals(sheet.isDisplayZeros(), false);
+        assertFalse(sheet.isDisplayGridlines());
+        assertFalse(sheet.isDisplayRowColHeadings());
+        assertTrue(sheet.isDisplayFormulas());
+        assertFalse(sheet.isDisplayZeros());
         
         wb2.close();
     }
@@ -1151,15 +1151,14 @@ public abstract class BaseTestSheet {
         
         workbook.close();
     }
-    
-    
+
     @Test
     public void getCellComments() throws IOException {
         Workbook workbook = _testDataProvider.createWorkbook();
         Sheet sheet = workbook.createSheet("TEST");
 
         // a sheet with no cell comments should return an empty map (not null or raise NPE).
-        assertEquals(Collections.emptyMap(), sheet.getCellComments());
+        assertTrue(sheet.getCellComments().isEmpty());
 
         Drawing<?> dg = sheet.createDrawingPatriarch();
         ClientAnchor anchor = workbook.getCreationHelper().createClientAnchor();
@@ -1223,13 +1222,13 @@ public abstract class BaseTestSheet {
         CellAddress B6 = new CellAddress(5, 1);
         assertEquals("row, col", hyperlink, sheet.getHyperlink(5, 1));
         assertEquals("addr", hyperlink, sheet.getHyperlink(B6));
-        assertEquals("no hyperlink at A1", null, sheet.getHyperlink(CellAddress.A1));
+        assertNull("no hyperlink at A1", sheet.getHyperlink(CellAddress.A1));
         
         workbook.close();
     }
     
     @Test
-    public void removeAllHyperlinks() throws IOException {
+    public void removeAllHyperlinks() {
         Workbook workbook = _testDataProvider.createWorkbook();
         Hyperlink hyperlink = workbook.getCreationHelper().createHyperlink(HyperlinkType.URL);
         hyperlink.setAddress("https://poi.apache.org/");
@@ -1257,7 +1256,7 @@ public abstract class BaseTestSheet {
         Workbook workbook = _testDataProvider.createWorkbook();
         Sheet sheet = workbook.createSheet();
         CellRangeAddress region = CellRangeAddress.valueOf("B2:D4");
-        sheet.addMergedRegion(region);
+        assertEquals(0, sheet.addMergedRegion(region));
         assertEquals("B2:D4", sheet.getMergedRegion(0).formatAsString());
         assertEquals(1, sheet.getNumMergedRegions());
         
index f587b640a3ae890fadd6a0730c1c974160cfea0d..6004580383a7d6be1c62f151833396783d222a5b 100644 (file)
@@ -212,7 +212,7 @@ public abstract class BaseTestSheetAutosizeColumn {
         trackColumnsForAutoSizingIfSXSSF(sheet);
         Row row = sheet.createRow(0);
         
-        Font defaultFont = workbook.getFontAt((short)0);
+        Font defaultFont = workbook.getFontAt(0);
 
         CellStyle style1 = workbook.createCellStyle();
         Font font1 = workbook.createFont();
@@ -276,7 +276,7 @@ public abstract class BaseTestSheetAutosizeColumn {
         trackColumnsForAutoSizingIfSXSSF(sheet);
 
         Row row = sheet.createRow(0);
-        sheet.addMergedRegion(CellRangeAddress.valueOf("A1:B1"));
+        assertEquals(0, sheet.addMergedRegion(CellRangeAddress.valueOf("A1:B1")));
 
         Cell cell0 = row.createCell(0);
         cell0.setCellValue("Apache Software Foundation");
@@ -292,7 +292,6 @@ public abstract class BaseTestSheetAutosizeColumn {
         workbook.close();
     }
 
-    
     /**
      * Auto-Sizing a column needs to work when we have rows
      *  passed the 32767 boundary. See bug #48079
@@ -354,8 +353,8 @@ public abstract class BaseTestSheetAutosizeColumn {
 
     protected static void fixFonts(Workbook workbook) {
         if (!JvmBugs.hasLineBreakMeasurerBug()) return;
-        for (int i=workbook.getNumberOfFonts()-1; i>=0; i--) {
-            Font f = workbook.getFontAt((short)0);
+        for (int i=workbook.getNumberOfFontsAsInt()-1; i>=0; i--) {
+            Font f = workbook.getFontAt(0);
             if ("Calibri".equals(f.getFontName())) {
                 f.setFontName("Lucida Sans");
             } else if ("Cambria".equals(f.getFontName())) {
index 3f146a8fb0a60f6ebd1b16b3ea36dc3515e5d30a..0e9224f813c7dc44ac2b4813a5105a561c106b80 100644 (file)
@@ -19,6 +19,7 @@
 package org.apache.poi.ss.usermodel;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
@@ -109,9 +110,9 @@ public abstract class BaseTestSheetShiftColumns {
         assertEquals("$D1+D$2", formulaD5);
 
         Cell newb5Null = sheet1.getRow(4).getCell(1);
-        assertEquals(newb5Null, null);
+        assertNull(newb5Null);
         boolean logicalValue = sheet1.getRow(6).getCell(2).getBooleanCellValue();
-        assertEquals(logicalValue, false);
+        assertFalse(logicalValue);
         Cell textCell = sheet1.getRow(6).getCell(3);
         assertEquals(textCell.getStringCellValue(), "TEXT");
         assertEquals(textCell.getCellStyle().getAlignment(), HorizontalAlignment.CENTER);
@@ -134,11 +135,11 @@ public abstract class BaseTestSheetShiftColumns {
         assertEquals("SUM(A3:E3)", formulaD5);
 
         Cell b5Null = sheet1.getRow(4).getCell(1);
-        assertEquals(b5Null, null);
+        assertNull(b5Null);
         Object c6Null = sheet1.getRow(5).getCell(2); // null cell A5 is shifted
                                                         // for 2 columns, so now
                                                         // c5 should be null
-        assertEquals(c6Null, null);
+        assertNull(c6Null);
     }
 
     @Test
@@ -152,7 +153,7 @@ public abstract class BaseTestSheetShiftColumns {
         String formulaB5 = sheet1.getRow(4).getCell(1).getCellFormula();
         assertEquals("$B1+B$2", formulaB5);
         Cell newb6Null = sheet1.getRow(5).getCell(1);
-        assertEquals(newb6Null, null);
+        assertNull(newb6Null);
     }
     
     @Test(expected = IllegalStateException.class)
@@ -264,8 +265,8 @@ public abstract class BaseTestSheetShiftColumns {
         CellRangeAddress A1_A5 = new CellRangeAddress(0, 4, 0, 0); // NOSONAR, it's more readable this way
         CellRangeAddress B1_B3 = new CellRangeAddress(0, 2, 1, 1); // NOSONAR, it's more readable this way
 
-        sheet.addMergedRegion(B1_B3);
-        sheet.addMergedRegion(A1_A5);
+        assertEquals(0, sheet.addMergedRegion(B1_B3));
+        assertEquals(1, sheet.addMergedRegion(A1_A5));
 
         // A1:A5 should be moved to B1:B5
         // B1:B3 will be removed
@@ -285,8 +286,8 @@ public abstract class BaseTestSheetShiftColumns {
         CellRangeAddress A1_A5 = new CellRangeAddress(0, 4, 0, 0);  // NOSONAR, it's more readable this way
         CellRangeAddress B1_B3 = new CellRangeAddress(0, 2, 1, 1);  // NOSONAR, it's more readable this way
 
-        sheet.addMergedRegion(A1_A5);
-        sheet.addMergedRegion(B1_B3);
+        assertEquals(0, sheet.addMergedRegion(A1_A5));
+        assertEquals(1, sheet.addMergedRegion(B1_B3));
 
         // A1:E1 should be removed
         // B1:B3 will be A1:A3
@@ -320,7 +321,7 @@ public abstract class BaseTestSheetShiftColumns {
         CellRangeAddress region = new CellRangeAddress(0, 2, 0, 0);
         assertEquals("A1:A3", region.formatAsString());
 
-        sheet.addMergedRegion(region);
+        assertEquals(0, sheet.addMergedRegion(region));
 
         sheet.shiftColumns(0, 1, 2);
         region = sheet.getMergedRegion(0);
index 7b0ae4bee2f4e57a85fe906ac4c8e023de422058..732435af0987a0fc14b246aa03d99eba307008e4 100644 (file)
@@ -288,7 +288,7 @@ public abstract class BaseTestSheetShiftRows {
         CellRangeAddress region = new CellRangeAddress(0, 0, 0, 2);
         assertEquals("A1:C1", region.formatAsString());
 
-        sheet.addMergedRegion(region);
+        assertEquals(0, sheet.addMergedRegion(region));
 
         sheet.shiftRows(0, 1, 2);
         region = sheet.getMergedRegion(0);
@@ -313,9 +313,9 @@ public abstract class BaseTestSheetShiftRows {
         
         CellRangeAddress A4_B7 = CellRangeAddress.valueOf("A4:B7");
         CellRangeAddress C4_D7 = CellRangeAddress.valueOf("C4:D7");
-        
-        sheet.addMergedRegion(A4_B7);
-        sheet.addMergedRegion(C4_D7);
+
+        assertEquals(0, sheet.addMergedRegion(A4_B7));
+        assertEquals(1, sheet.addMergedRegion(C4_D7));
         
         assumeTrue(sheet.getLastRowNum() > 8);
         
@@ -480,8 +480,9 @@ public abstract class BaseTestSheetShiftRows {
     public void testBug55280() throws IOException {
         Workbook w = _testDataProvider.createWorkbook();
         Sheet s = w.createSheet();
-        for (int row = 0; row < 5000; ++row)
-            s.addMergedRegion(new CellRangeAddress(row, row, 0, 3));
+        for (int row = 0; row < 5000; ++row) {
+            assertEquals(row, s.addMergedRegion(new CellRangeAddress(row, row, 0, 3)));
+        }
 
         s.shiftRows(0, 4999, 1);        // takes a long time...
         w.close();
@@ -614,8 +615,8 @@ public abstract class BaseTestSheetShiftRows {
         CellRangeAddress A4_B7 = new CellRangeAddress(3, 6, 0, 1);
         CellRangeAddress C5_D7 = new CellRangeAddress(4, 6, 2, 3);
 
-        sheet.addMergedRegion(A4_B7);
-        sheet.addMergedRegion(C5_D7);
+        assertEquals(0, sheet.addMergedRegion(A4_B7));
+        assertEquals(1, sheet.addMergedRegion(C5_D7));
 
         // A4:B7 will elongate vertically
         // C5:D7 will be shifted down with same size
@@ -646,8 +647,8 @@ public abstract class BaseTestSheetShiftRows {
         CellRangeAddress A1_E1 = new CellRangeAddress(0, 0, 0, 4);
         CellRangeAddress A2_C2 = new CellRangeAddress(1, 1, 0, 2);
 
-        sheet.addMergedRegion(A1_E1);
-        sheet.addMergedRegion(A2_C2);
+        assertEquals(0, sheet.addMergedRegion(A1_E1));
+        assertEquals(1, sheet.addMergedRegion(A2_C2));
 
         // A1:E1 should be removed
         // A2:C2 will be A1:C1
@@ -668,8 +669,8 @@ public abstract class BaseTestSheetShiftRows {
         CellRangeAddress A1_E1 = new CellRangeAddress(0, 0, 0, 4);
         CellRangeAddress A2_C2 = new CellRangeAddress(1, 7, 0, 2);
 
-        sheet.addMergedRegion(A1_E1);
-        sheet.addMergedRegion(A2_C2);
+        assertEquals(0, sheet.addMergedRegion(A1_E1));
+        assertEquals(1, sheet.addMergedRegion(A2_C2));
 
         // A1:E1 should move to A5:E5
         // A2:C2 should be removed
@@ -691,8 +692,8 @@ public abstract class BaseTestSheetShiftRows {
         CellRangeAddress A8_E8 = new CellRangeAddress(7, 7, 0, 4);
         CellRangeAddress A9_C9 = new CellRangeAddress(8, 8, 0, 2);
 
-        sheet.addMergedRegion(A8_E8);
-        sheet.addMergedRegion(A9_C9);
+        assertEquals(0, sheet.addMergedRegion(A8_E8));
+        assertEquals(1, sheet.addMergedRegion(A9_C9));
 
         // A1:E1 should be removed
         // A2:C2 will be A1:C1
@@ -727,8 +728,8 @@ public abstract class BaseTestSheetShiftRows {
         CellRangeAddress A1_E1 = new CellRangeAddress(0, 0, 0, 4);
         CellRangeAddress A2_C2 = new CellRangeAddress(1, 1, 0, 2);
 
-        sheet.addMergedRegion(A1_E1);
-        sheet.addMergedRegion(A2_C2);
+        assertEquals(0, sheet.addMergedRegion(A1_E1));
+        assertEquals(1, sheet.addMergedRegion(A2_C2));
 
         // A1:E1 should be moved to A2:E2
         // A2:C2 will be removed
index 668166380eb29ad330d41ede2c05295c126cd516..7f499cdad405c5edca162a19a898fd7747f294ba 100644 (file)
@@ -480,7 +480,7 @@ public abstract class BaseTestSheetUpdateArrayFormulas {
         CellRange<? extends Cell> srange =
                 sheet.setArrayFormula("SUM(A4:A6,B4:B6)", CellRangeAddress.valueOf("B5"));
         Cell scell = srange.getTopLeftCell();
-        sheet.addMergedRegion(CellRangeAddress.valueOf("B5:C6"));
+        assertEquals(0, sheet.addMergedRegion(CellRangeAddress.valueOf("B5:C6")));
         //we are still an array formula
         assertEquals(CellType.FORMULA, scell.getCellType());
         assertTrue(scell.isPartOfArrayFormulaGroup());
@@ -595,7 +595,7 @@ public abstract class BaseTestSheetUpdateArrayFormulas {
         Sheet sheet = workbook.createSheet();
         
         CellRangeAddress mergedRegion = CellRangeAddress.valueOf("B2:C2");
-        sheet.addMergedRegion(mergedRegion);
+        assertEquals(0, sheet.addMergedRegion(mergedRegion));
         CellRangeAddress arrayFormula = CellRangeAddress.valueOf("C1:C3");
         assumeTrue(mergedRegion.intersects(arrayFormula));
         assumeTrue(arrayFormula.intersects(mergedRegion));
index 8e60c70aeb28fd3b956cbecc52e3950424a77283..6ad3e2e5dd545d729ae430e3e70be9a03ddce739 100644 (file)
@@ -482,8 +482,8 @@ public abstract class BaseTestWorkbook {
         Sheet sheet = book.createSheet("TEST");
         sheet.createRow(0).createCell(0).setCellValue("Test");
         sheet.createRow(1).createCell(0).setCellValue(36.6);
-        sheet.addMergedRegion(new CellRangeAddress(0, 1, 0, 2));
-        sheet.addMergedRegion(new CellRangeAddress(2, 3, 0, 2));
+        assertEquals(0, sheet.addMergedRegion(new CellRangeAddress(0, 1, 0, 2)));
+        assertEquals(1, sheet.addMergedRegion(new CellRangeAddress(2, 3, 0, 2)));
         assertTrue(sheet.isSelected());
 
         Sheet clonedSheet = book.cloneSheet(0);
@@ -494,12 +494,12 @@ public abstract class BaseTestWorkbook {
 
         //cloned sheet is a deep copy, adding rows or merged regions in the original does not affect the clone
         sheet.createRow(2).createCell(0).setCellValue(1);
-        sheet.addMergedRegion(new CellRangeAddress(4, 5, 0, 2));
+        assertEquals(2, sheet.addMergedRegion(new CellRangeAddress(4, 5, 0, 2)));
         assertEquals(2, clonedSheet.getPhysicalNumberOfRows());
         assertEquals(2, clonedSheet.getNumMergedRegions());
 
         clonedSheet.createRow(2).createCell(0).setCellValue(1);
-        clonedSheet.addMergedRegion(new CellRangeAddress(6, 7, 0, 2));
+        assertEquals(2, clonedSheet.addMergedRegion(new CellRangeAddress(6, 7, 0, 2)));
         assertEquals(3, clonedSheet.getPhysicalNumberOfRows());
         assertEquals(3, clonedSheet.getNumMergedRegions());
         book.close();
index e1c788436c810dc730dd47f24feb64432d692d33..44b75f5be5ff9cbb2116d3656179008a7152bcec 100644 (file)
 
 package org.apache.poi.ss.util;
 
-import java.io.IOException;
-
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.ss.usermodel.Cell;
 import org.apache.poi.ss.usermodel.Row;
 import org.apache.poi.ss.usermodel.Sheet;
 import org.apache.poi.ss.usermodel.Workbook;
+import org.junit.Test;
+
+import java.io.IOException;
 
-import junit.framework.TestCase;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
 
 /**
  * Tests SheetUtil.
  *
  * @see org.apache.poi.ss.util.SheetUtil
  */
-public final class TestSheetUtil extends TestCase {
+public final class TestSheetUtil {
+    @Test
     public void testCellWithMerges() throws Exception {
         Workbook wb = new HSSFWorkbook();
         Sheet s = wb.createSheet();
@@ -44,39 +48,41 @@ public final class TestSheetUtil extends TestCase {
         Row r3 = s.createRow(2);
         r3.createCell(0).setCellValue(20);
         r3.createCell(1).setCellValue(21);
-        
-        s.addMergedRegion(new CellRangeAddress(2, 3, 0, 0));
-        s.addMergedRegion(new CellRangeAddress(2, 2, 1, 4));
+
+        assertEquals(0, s.addMergedRegion(new CellRangeAddress(2, 3, 0, 0)));
+        assertEquals(1, s.addMergedRegion(new CellRangeAddress(2, 2, 1, 4)));
         
         // With a cell that isn't defined, we'll get null
-        assertEquals(null, SheetUtil.getCellWithMerges(s, 0, 0));
+        assertNull(SheetUtil.getCellWithMerges(s, 0, 0));
         
         // With a cell that's not in a merged region, we'll get that
-        assertEquals(10.0, SheetUtil.getCellWithMerges(s, 1, 0).getNumericCellValue());
-        assertEquals(11.0, SheetUtil.getCellWithMerges(s, 1, 1).getNumericCellValue());
+        assertEquals(10.0, SheetUtil.getCellWithMerges(s, 1, 0).getNumericCellValue(), 0.01);
+        assertEquals(11.0, SheetUtil.getCellWithMerges(s, 1, 1).getNumericCellValue(), 0.01);
         
         // With a cell that's the primary one of a merged region, we get that cell
-        assertEquals(20.0, SheetUtil.getCellWithMerges(s, 2, 0).getNumericCellValue());
-        assertEquals(21., SheetUtil.getCellWithMerges(s, 2, 1).getNumericCellValue());
+        assertEquals(20.0, SheetUtil.getCellWithMerges(s, 2, 0).getNumericCellValue(), 0.01);
+        assertEquals(21., SheetUtil.getCellWithMerges(s, 2, 1).getNumericCellValue(), 0.01);
         
         // With a cell elsewhere in the merged region, get top-left
-        assertEquals(20.0, SheetUtil.getCellWithMerges(s, 3, 0).getNumericCellValue());
-        assertEquals(21.0, SheetUtil.getCellWithMerges(s, 2, 2).getNumericCellValue());
-        assertEquals(21.0, SheetUtil.getCellWithMerges(s, 2, 3).getNumericCellValue());
-        assertEquals(21.0, SheetUtil.getCellWithMerges(s, 2, 4).getNumericCellValue());
+        assertEquals(20.0, SheetUtil.getCellWithMerges(s, 3, 0).getNumericCellValue(), 0.01);
+        assertEquals(21.0, SheetUtil.getCellWithMerges(s, 2, 2).getNumericCellValue(), 0.01);
+        assertEquals(21.0, SheetUtil.getCellWithMerges(s, 2, 3).getNumericCellValue(), 0.01);
+        assertEquals(21.0, SheetUtil.getCellWithMerges(s, 2, 4).getNumericCellValue(), 0.01);
         
         wb.close();
     }
-    
+
+    @Test
     public void testCanComputeWidthHSSF() throws IOException {
         Workbook wb = new HSSFWorkbook();
         
         // cannot check on result because on some machines we get back false here!
-        SheetUtil.canComputeColumnWidth(wb.getFontAt((short)0));
+        SheetUtil.canComputeColumnWidth(wb.getFontAt(0));
 
         wb.close();        
     }
 
+    @Test
     public void testGetCellWidthEmpty() throws IOException {
         Workbook wb = new HSSFWorkbook();
         Sheet sheet = wb.createSheet("sheet");
@@ -85,11 +91,12 @@ public final class TestSheetUtil extends TestCase {
         
         // no contents: cell.setCellValue("sometext");
         
-        assertEquals(-1.0, SheetUtil.getCellWidth(cell, 1, null, true));
+        assertEquals(-1.0, SheetUtil.getCellWidth(cell, 1, null, true), 0.01);
         
         wb.close();
     }
 
+    @Test
     public void testGetCellWidthString() throws IOException {
         Workbook wb = new HSSFWorkbook();
         Sheet sheet = wb.createSheet("sheet");
@@ -103,6 +110,7 @@ public final class TestSheetUtil extends TestCase {
         wb.close();
     }
 
+    @Test
     public void testGetCellWidthNumber() throws IOException {
         Workbook wb = new HSSFWorkbook();
         Sheet sheet = wb.createSheet("sheet");
@@ -116,6 +124,7 @@ public final class TestSheetUtil extends TestCase {
         wb.close();
     }
 
+    @Test
     public void testGetCellWidthBoolean() throws IOException {
         Workbook wb = new HSSFWorkbook();
         Sheet sheet = wb.createSheet("sheet");
@@ -129,6 +138,7 @@ public final class TestSheetUtil extends TestCase {
         wb.close();
     }
 
+    @Test
     public void testGetColumnWidthString() throws IOException {
         Workbook wb = new HSSFWorkbook();
         Sheet sheet = wb.createSheet("sheet");
@@ -142,7 +152,7 @@ public final class TestSheetUtil extends TestCase {
         assertTrue("Having some width for rows with actual cells", 
                 SheetUtil.getColumnWidth(sheet, 0, true) > 0);
         assertEquals("Not having any widht for rows with all empty cells", 
-                -1.0, SheetUtil.getColumnWidth(sheet, 0, true, 1, 2));
+                -1.0, SheetUtil.getColumnWidth(sheet, 0, true, 1, 2), 0.01);
         
         wb.close();
     }