From 2bd3296911e74f25f8d12a7b20a2b499b9fd40e2 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Wed, 30 Oct 2013 22:26:13 +0000 Subject: [PATCH] Slightly more test-coverage in HSSFSheet/XSSFSheet/SXSSFSheet and fix some Eclipse warnings git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1537331 13f79535-47bb-0310-9956-ffa450edef68 --- build.xml | 2 +- .../apache/poi/hssf/usermodel/HSSFSheet.java | 14 ++--- src/java/org/apache/poi/util/NullLogger.java | 22 +++++++ .../org/apache/poi/util/POILogFactory.java | 8 ++- .../poi/xssf/streaming/TestSXSSFSheet.java | 5 +- .../poi/hssf/usermodel/TestHSSFSheet.java | 59 ++++++++++++++++++- .../poi/ss/usermodel/BaseTestSheet.java | 13 ++++ 7 files changed, 109 insertions(+), 14 deletions(-) diff --git a/build.xml b/build.xml index 7695231a85..f461bd4168 100644 --- a/build.xml +++ b/build.xml @@ -681,7 +681,7 @@ under the License. - + diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java b/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java index 94be7efc6f..6cc2ca9fb5 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java @@ -32,14 +32,14 @@ import org.apache.poi.hssf.record.*; import org.apache.poi.hssf.record.aggregates.DataValidityTable; import org.apache.poi.hssf.record.aggregates.FormulaRecordAggregate; import org.apache.poi.hssf.record.aggregates.WorksheetProtectionBlock; -import org.apache.poi.ss.formula.FormulaShifter; -import org.apache.poi.ss.formula.ptg.MemFuncPtg; -import org.apache.poi.ss.formula.ptg.Ptg; -import org.apache.poi.ss.formula.ptg.Area3DPtg; -import org.apache.poi.ss.formula.ptg.UnionPtg; import org.apache.poi.hssf.util.PaneInformation; import org.apache.poi.ss.SpreadsheetVersion; +import org.apache.poi.ss.formula.FormulaShifter; import org.apache.poi.ss.formula.FormulaType; +import org.apache.poi.ss.formula.ptg.Area3DPtg; +import org.apache.poi.ss.formula.ptg.MemFuncPtg; +import org.apache.poi.ss.formula.ptg.Ptg; +import org.apache.poi.ss.formula.ptg.UnionPtg; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellRange; import org.apache.poi.ss.usermodel.CellStyle; @@ -1203,9 +1203,9 @@ public final class HSSFSheet implements org.apache.poi.ss.usermodel.Sheet { */ public void setZoom(int numerator, int denominator) { if (numerator < 1 || numerator > 65535) - throw new IllegalArgumentException("Numerator must be greater than 1 and less than 65536"); + throw new IllegalArgumentException("Numerator must be greater than 0 and less than 65536"); if (denominator < 1 || denominator > 65535) - throw new IllegalArgumentException("Denominator must be greater than 1 and less than 65536"); + throw new IllegalArgumentException("Denominator must be greater than 0 and less than 65536"); SCLRecord sclRecord = new SCLRecord(); sclRecord.setNumerator((short) numerator); diff --git a/src/java/org/apache/poi/util/NullLogger.java b/src/java/org/apache/poi/util/NullLogger.java index a2cdbf7866..95c8c5d446 100644 --- a/src/java/org/apache/poi/util/NullLogger.java +++ b/src/java/org/apache/poi/util/NullLogger.java @@ -29,6 +29,7 @@ package org.apache.poi.util; */ public class NullLogger extends POILogger { + @Override public void initialize(final String cat) { //do nothing @@ -41,6 +42,7 @@ public class NullLogger extends POILogger * @param obj1 The object to log. */ + @Override public void log(final int level, final Object obj1) { //do nothing @@ -52,6 +54,7 @@ public class NullLogger extends POILogger * @param level One of DEBUG, INFO, WARN, ERROR, FATAL */ + @Override public boolean check(final int level) { return false; @@ -65,6 +68,7 @@ public class NullLogger extends POILogger * @param obj2 second object to place in the message */ + @Override public void log(final int level, final Object obj1, final Object obj2) { //do nothing @@ -79,6 +83,7 @@ public class NullLogger extends POILogger * @param obj3 third Object to place in the message */ + @Override public void log(final int level, final Object obj1, final Object obj2, final Object obj3) { @@ -95,6 +100,7 @@ public class NullLogger extends POILogger * @param obj4 fourth Object to place in the message */ + @Override public void log(final int level, final Object obj1, final Object obj2, final Object obj3, final Object obj4) { @@ -112,6 +118,7 @@ public class NullLogger extends POILogger * @param obj5 fifth Object to place in the message */ + @Override public void log(final int level, final Object obj1, final Object obj2, final Object obj3, final Object obj4, final Object obj5) { @@ -130,6 +137,7 @@ public class NullLogger extends POILogger * @param obj6 sixth Object to place in the message */ + @Override public void log(final int level, final Object obj1, final Object obj2, final Object obj3, final Object obj4, final Object obj5, final Object obj6) @@ -150,6 +158,7 @@ public class NullLogger extends POILogger * @param obj7 seventh Object to place in the message */ + @Override public void log(final int level, final Object obj1, final Object obj2, final Object obj3, final Object obj4, final Object obj5, final Object obj6, final Object obj7) @@ -171,6 +180,7 @@ public class NullLogger extends POILogger * @param obj8 eighth Object to place in the message */ + @Override public void log(final int level, final Object obj1, final Object obj2, final Object obj3, final Object obj4, final Object obj5, final Object obj6, final Object obj7, final Object obj8) @@ -186,6 +196,7 @@ public class NullLogger extends POILogger * @param exception An exception to be logged */ + @Override public void log(final int level, final Object obj1, final Throwable exception) { @@ -201,6 +212,7 @@ public class NullLogger extends POILogger * @param exception An exception to be logged */ + @Override public void log(final int level, final Object obj1, final Object obj2, final Throwable exception) { @@ -217,6 +229,7 @@ public class NullLogger extends POILogger * @param exception An error message to be logged */ + @Override public void log(final int level, final Object obj1, final Object obj2, final Object obj3, final Throwable exception) { @@ -234,6 +247,7 @@ public class NullLogger extends POILogger * @param exception An exception to be logged */ + @Override public void log(final int level, final Object obj1, final Object obj2, final Object obj3, final Object obj4, final Throwable exception) @@ -253,6 +267,7 @@ public class NullLogger extends POILogger * @param exception An exception to be logged */ + @Override public void log(final int level, final Object obj1, final Object obj2, final Object obj3, final Object obj4, final Object obj5, final Throwable exception) @@ -273,6 +288,7 @@ public class NullLogger extends POILogger * @param exception An exception to be logged */ + @Override public void log(final int level, final Object obj1, final Object obj2, final Object obj3, final Object obj4, final Object obj5, final Object obj6, final Throwable exception) @@ -294,6 +310,7 @@ public class NullLogger extends POILogger * @param exception An exception to be logged */ + @Override public void log(final int level, final Object obj1, final Object obj2, final Object obj3, final Object obj4, final Object obj5, final Object obj6, final Object obj7, @@ -317,6 +334,7 @@ public class NullLogger extends POILogger * @param exception An exception to be logged */ + @Override public void log(final int level, final Object obj1, final Object obj2, final Object obj3, final Object obj4, final Object obj5, final Object obj6, final Object obj7, final Object obj8, @@ -350,6 +368,7 @@ public class NullLogger extends POILogger * @param obj1 The first object to match against. */ + @Override public void logFormatted(final int level, final String message, final Object obj1) { @@ -382,6 +401,7 @@ public class NullLogger extends POILogger * @param obj2 The second object to match against. */ + @Override public void logFormatted(final int level, final String message, final Object obj1, final Object obj2) { @@ -415,6 +435,7 @@ public class NullLogger extends POILogger * @param obj3 The third object to match against. */ + @Override public void logFormatted(final int level, final String message, final Object obj1, final Object obj2, final Object obj3) @@ -450,6 +471,7 @@ public class NullLogger extends POILogger * @param obj4 The forth object to match against. */ + @Override public void logFormatted(final int level, final String message, final Object obj1, final Object obj2, final Object obj3, final Object obj4) diff --git a/src/java/org/apache/poi/util/POILogFactory.java b/src/java/org/apache/poi/util/POILogFactory.java index 3d446c85dd..641949c391 100644 --- a/src/java/org/apache/poi/util/POILogFactory.java +++ b/src/java/org/apache/poi/util/POILogFactory.java @@ -19,7 +19,8 @@ package org.apache.poi.util; -import java.util.*; +import java.util.HashMap; +import java.util.Map; /** * Provides logging without clients having to mess with @@ -64,7 +65,7 @@ public class POILogFactory * @return a POILogger for the specified class */ - public static POILogger getLogger(final Class theclass) + public static POILogger getLogger(final Class theclass) { return getLogger(theclass.getName()); } @@ -111,7 +112,8 @@ public class POILogFactory logger = _loggers.get(cat); } else { try { - Class loggerClass = + @SuppressWarnings("unchecked") + Class loggerClass = (Class)Class.forName(_loggerClassName); logger = loggerClass.newInstance(); logger.initialize(cat); diff --git a/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFSheet.java b/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFSheet.java index db5a1362e2..2da1b4a0aa 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFSheet.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/streaming/TestSXSSFSheet.java @@ -19,9 +19,10 @@ package org.apache.poi.xssf.streaming; -import org.apache.poi.ss.usermodel.*; +import org.apache.poi.ss.usermodel.BaseTestSheet; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.SXSSFITestDataProvider; -import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java index f64ee4bba9..c2a579d266 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java @@ -347,17 +347,23 @@ public final class TestHSSFSheet extends BaseTestSheet { int expectedHashB = -14556; HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet hssfSheet = workbook.createSheet(); + assertFalse(hssfSheet.getObjectProtect()); hssfSheet.protectSheet(passwordA); + assertTrue(hssfSheet.getObjectProtect()); + assertEquals(expectedHashA, hssfSheet.getPassword()); assertEquals(expectedHashA, hssfSheet.getSheet().getProtectionBlock().getPasswordHash()); // Clone the sheet, and make sure the password hash is preserved HSSFSheet sheet2 = workbook.cloneSheet(0); + assertTrue(hssfSheet.getObjectProtect()); assertEquals(expectedHashA, sheet2.getSheet().getProtectionBlock().getPasswordHash()); // change the password on the first sheet hssfSheet.protectSheet(passwordB); + assertTrue(hssfSheet.getObjectProtect()); assertEquals(expectedHashB, hssfSheet.getSheet().getProtectionBlock().getPasswordHash()); + assertEquals(expectedHashB, hssfSheet.getPassword()); // but the cloned sheet's password should remain unchanged assertEquals(expectedHashA, sheet2.getSheet().getProtectionBlock().getPasswordHash()); } @@ -452,6 +458,32 @@ public final class TestHSSFSheet extends BaseTestSheet { int sclLoc = sheet.getSheet().findFirstRecordLocBySid(SCLRecord.sid); int window2Loc = sheet.getSheet().findFirstRecordLocBySid(WindowTwoRecord.sid); assertTrue(sclLoc == window2Loc + 1); + + // verify limits + try { + sheet.setZoom(0, 2); + fail("Should catch Exception here"); + } catch (IllegalArgumentException e) { + assertEquals("Numerator must be greater than 0 and less than 65536", e.getMessage()); + } + try { + sheet.setZoom(65536, 2); + fail("Should catch Exception here"); + } catch (IllegalArgumentException e) { + assertEquals("Numerator must be greater than 0 and less than 65536", e.getMessage()); + } + try { + sheet.setZoom(2, 0); + fail("Should catch Exception here"); + } catch (IllegalArgumentException e) { + assertEquals("Denominator must be greater than 0 and less than 65536", e.getMessage()); + } + try { + sheet.setZoom(2, 65536); + fail("Should catch Exception here"); + } catch (IllegalArgumentException e) { + assertEquals("Denominator must be greater than 0 and less than 65536", e.getMessage()); + } } @@ -538,7 +570,8 @@ public final class TestHSSFSheet extends BaseTestSheet { workbook = HSSFTestDataSamples.writeOutAndReadBack(workbook); } - public void testAutoSizeColumn() { + @SuppressWarnings("deprecation") + public void testAutoSizeColumn() { HSSFWorkbook wb = HSSFTestDataSamples.openSampleWorkbook("43902.xls"); String sheetName = "my sheet"; HSSFSheet sheet = wb.getSheet(sheetName); @@ -561,6 +594,7 @@ public final class TestHSSFSheet extends BaseTestSheet { //create a region over the 2nd row and auto size the first column sheet.addMergedRegion(new CellRangeAddress(1,1,0,1)); + assertNotNull(sheet.getMergedRegionAt(0)); sheet.autoSizeColumn((short)0); HSSFWorkbook wb2 = HSSFTestDataSamples.writeOutAndReadBack(wb); @@ -1009,4 +1043,27 @@ public final class TestHSSFSheet extends BaseTestSheet { } assertEquals(40000, sheet.getColumnWidth((short)10)); } + + public void testShowInPane() { + Workbook wb = new HSSFWorkbook(); + Sheet sheet = wb.createSheet(); + sheet.showInPane(2, 3); + + try { + sheet.showInPane(Integer.MAX_VALUE, 3); + fail("Should catch exception here"); + } catch (IllegalArgumentException e) { + assertEquals("Maximum row number is 65535", e.getMessage()); + } + } + + public void testDrawingRecords() { + HSSFWorkbook wb = new HSSFWorkbook(); + HSSFSheet sheet = wb.createSheet(); + + /* TODO: NPE? + sheet.dumpDrawingRecords(false); + sheet.dumpDrawingRecords(true);*/ + assertNull(sheet.getDrawingEscherAggregate()); + } } diff --git a/src/testcases/org/apache/poi/ss/usermodel/BaseTestSheet.java b/src/testcases/org/apache/poi/ss/usermodel/BaseTestSheet.java index 1ade472b67..4c37017e5c 100644 --- a/src/testcases/org/apache/poi/ss/usermodel/BaseTestSheet.java +++ b/src/testcases/org/apache/poi/ss/usermodel/BaseTestSheet.java @@ -787,4 +787,17 @@ public abstract class BaseTestSheet extends TestCase { } } + public void testBaseZoom() { + Workbook wb = _testDataProvider.createWorkbook(); + Sheet sheet = wb.createSheet(); + + // here we can only verify that setting some zoom values works, range-checking is different between the implementations + sheet.setZoom(3,4); + } + + public void testBaseShowInPane() { + Workbook wb = _testDataProvider.createWorkbook(); + Sheet sheet = wb.createSheet(); + sheet.showInPane(2, 3); + } }