]> source.dussan.org Git - poi.git/commitdiff
Apply fix reported in bug 47661 and add unit tests
authorDominik Stadler <centic@apache.org>
Wed, 20 May 2015 18:00:19 +0000 (18:00 +0000)
committerDominik Stadler <centic@apache.org>
Wed, 20 May 2015 18:00:19 +0000 (18:00 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1680642 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/poi/ss/usermodel/DateUtil.java
src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDateUtil.java

index 79512ef10271b5f53943a9bd45af2665446b4a1c..31dbce424d7eeb11a0bf446647b469cabe2151bf 100644 (file)
@@ -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");
         }
 
index f5ea7a1ccc98c824f8e836d9f5ce3f1a645a1ef9..2e34d6f6029d8e85f5a88e281dc8682257a57a52 100644 (file)
@@ -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() {