From: Dominik Stadler Date: Wed, 20 May 2015 18:00:19 +0000 (+0000) Subject: Apply fix reported in bug 47661 and add unit tests X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=001cdeb936e36859e219d04206df434bd4200391;p=poi.git Apply fix reported in bug 47661 and add unit tests git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1680642 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/src/java/org/apache/poi/ss/usermodel/DateUtil.java b/src/java/org/apache/poi/ss/usermodel/DateUtil.java index 79512ef102..31dbce424d 100644 --- a/src/java/org/apache/poi/ss/usermodel/DateUtil.java +++ b/src/java/org/apache/poi/ss/usermodel/DateUtil.java @@ -567,7 +567,7 @@ public class DateUtil { private static int daysInPriorYears(int yr, boolean use1904windowing) { - if ((!use1904windowing && yr < 1900) || (use1904windowing && yr < 1900)) { + if ((!use1904windowing && yr < 1900) || (use1904windowing && yr < 1904)) { throw new IllegalArgumentException("'year' must be 1900 or greater"); } diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDateUtil.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDateUtil.java index f5ea7a1ccc..2e34d6f602 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDateUtil.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDateUtil.java @@ -17,9 +17,7 @@ package org.apache.poi.hssf.usermodel; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; +import static org.junit.Assert.*; import java.io.IOException; import java.text.ParseException; @@ -349,6 +347,7 @@ public final class TestHSSFDateUtil { HSSFWorkbook workbook = HSSFTestDataSamples.openSampleWorkbook("DateFormats.xls"); HSSFSheet sheet = workbook.getSheetAt(0); InternalWorkbook wb = workbook.getWorkbook(); + assertNotNull(wb); HSSFRow row; HSSFCell cell; @@ -481,6 +480,25 @@ public final class TestHSSFDateUtil { assertEquals("Checking absolute day (1 Jan 1901)", 366, HSSFDateUtil.absoluteDay(calendar, false)); } + @Test + public void absoluteDayYearTooLow() { + GregorianCalendar calendar = new GregorianCalendar(1899, 0, 1); + try { + HSSFDateUtil.absoluteDay(calendar, false); + fail("Should fail here"); + } catch (IllegalArgumentException e) { + // expected here + } + + try { + calendar = new GregorianCalendar(1903, 0, 1); + HSSFDateUtil.absoluteDay(calendar, true); + fail("Should fail here"); + } catch (IllegalArgumentException e) { + // expected here + } + } + @Test public void convertTime() {