aboutsummaryrefslogtreecommitdiffstats
path: root/src/testcases/org
diff options
context:
space:
mode:
authorAndreas Beeker <kiwiwings@apache.org>2014-05-04 21:17:18 +0000
committerAndreas Beeker <kiwiwings@apache.org>2014-05-04 21:17:18 +0000
commitfaa2a64d4af6e89b62bba899bfe1040675765a5a (patch)
tree30497ebcde8089f9ebbc4d0c26cec8cfe8afed86 /src/testcases/org
parent13860b6d5a24a93a1d225e61da424d61d754f242 (diff)
downloadpoi-faa2a64d4af6e89b62bba899bfe1040675765a5a.tar.gz
poi-faa2a64d4af6e89b62bba899bfe1040675765a5a.zip
Bug 56269 - DateFormat - Rounding of fractionals
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1592419 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/testcases/org')
-rw-r--r--src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDateUtil.java74
1 files changed, 53 insertions, 21 deletions
diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDateUtil.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDateUtil.java
index 6733f73fa2..022975d9ae 100644
--- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDateUtil.java
+++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFDateUtil.java
@@ -17,15 +17,18 @@
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 java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.TimeZone;
-import junit.framework.TestCase;
-
import org.apache.poi.hssf.HSSFTestDataSamples;
import org.apache.poi.hssf.model.InternalWorkbook;
+import org.junit.Test;
/**
* Class TestHSSFDateUtil
@@ -37,7 +40,7 @@ import org.apache.poi.hssf.model.InternalWorkbook;
* @author Alex Jacoby (ajacoby at gmail.com)
* @version %I%, %G%
*/
-public final class TestHSSFDateUtil extends TestCase {
+public final class TestHSSFDateUtil {
public static final int CALENDAR_JANUARY = 0;
public static final int CALENDAR_FEBRUARY = 1;
@@ -49,8 +52,8 @@ public final class TestHSSFDateUtil extends TestCase {
/**
* Checks the date conversion functions in the HSSFDateUtil class.
*/
-
- public void testDateConversion() {
+ @Test
+ public void dateConversion() {
// Iteratating over the hours exposes any rounding issues.
for (int hour = 0; hour < 23; hour++)
@@ -87,7 +90,8 @@ public final class TestHSSFDateUtil extends TestCase {
* Checks the conversion of a java.util.date to Excel on a day when
* Daylight Saving Time starts.
*/
- public void testExcelConversionOnDSTStart() {
+ @Test
+ public void excelConversionOnDSTStart() {
TimeZone cet = TimeZone.getTimeZone("Europe/Copenhagen");
TimeZone.setDefault(cet);
Calendar cal = new GregorianCalendar(2004, CALENDAR_MARCH, 28);
@@ -117,7 +121,8 @@ public final class TestHSSFDateUtil extends TestCase {
* Checks the conversion of an Excel date to a java.util.date on a day when
* Daylight Saving Time starts.
*/
- public void testJavaConversionOnDSTStart() {
+ @Test
+ public void javaConversionOnDSTStart() {
TimeZone cet = TimeZone.getTimeZone("Europe/Copenhagen");
TimeZone.setDefault(cet);
Calendar cal = new GregorianCalendar(2004, CALENDAR_MARCH, 28);
@@ -144,7 +149,8 @@ public final class TestHSSFDateUtil extends TestCase {
* Checks the conversion of a java.util.Date to Excel on a day when
* Daylight Saving Time ends.
*/
- public void testExcelConversionOnDSTEnd() {
+ @Test
+ public void excelConversionOnDSTEnd() {
TimeZone cet = TimeZone.getTimeZone("Europe/Copenhagen");
TimeZone.setDefault(cet);
Calendar cal = new GregorianCalendar(2004, CALENDAR_OCTOBER, 31);
@@ -167,7 +173,8 @@ public final class TestHSSFDateUtil extends TestCase {
* Checks the conversion of an Excel date to java.util.Date on a day when
* Daylight Saving Time ends.
*/
- public void testJavaConversionOnDSTEnd() {
+ @Test
+ public void javaConversionOnDSTEnd() {
TimeZone cet = TimeZone.getTimeZone("Europe/Copenhagen");
TimeZone.setDefault(cet);
Calendar cal = new GregorianCalendar(2004, CALENDAR_OCTOBER, 31);
@@ -186,7 +193,8 @@ public final class TestHSSFDateUtil extends TestCase {
/**
* Tests that we deal with time-zones properly
*/
- public void testCalendarConversion() {
+ @Test
+ public void calendarConversion() {
GregorianCalendar date = new GregorianCalendar(2002, 0, 1, 12, 1, 1);
Date expected = date.getTime();
@@ -226,7 +234,8 @@ public final class TestHSSFDateUtil extends TestCase {
/**
* Tests that we correctly detect date formats as such
*/
- public void testIdentifyDateFormats() {
+ @Test
+ public void identifyDateFormats() {
// First up, try with a few built in date formats
short[] builtins = new short[] { 0x0e, 0x0f, 0x10, 0x16, 0x2d, 0x2e };
for(int i=0; i<builtins.length; i++) {
@@ -329,7 +338,8 @@ public final class TestHSSFDateUtil extends TestCase {
* Test that against a real, test file, we still do everything
* correctly
*/
- public void testOnARealFile() {
+ @Test
+ public void onARealFile() {
HSSFWorkbook workbook = HSSFTestDataSamples.openSampleWorkbook("DateFormats.xls");
HSSFSheet sheet = workbook.getSheetAt(0);
@@ -386,7 +396,8 @@ public final class TestHSSFDateUtil extends TestCase {
assertTrue(HSSFDateUtil.isCellDateFormatted(cell));
}
- public void testDateBug_2Excel() {
+ @Test
+ public void dateBug_2Excel() {
assertEquals(59.0, HSSFDateUtil.getExcelDate(createDate(1900, CALENDAR_FEBRUARY, 28), false), 0.00001);
assertEquals(61.0, HSSFDateUtil.getExcelDate(createDate(1900, CALENDAR_MARCH, 1), false), 0.00001);
@@ -396,7 +407,8 @@ public final class TestHSSFDateUtil extends TestCase {
assertEquals(38074.00, HSSFDateUtil.getExcelDate(createDate(2004, CALENDAR_MARCH, 28), false), 0.00001);
}
- public void testDateBug_2Java() {
+ @Test
+ public void dateBug_2Java() {
assertEquals(createDate(1900, CALENDAR_FEBRUARY, 28), HSSFDateUtil.getJavaDate(59.0, false));
assertEquals(createDate(1900, CALENDAR_MARCH, 1), HSSFDateUtil.getJavaDate(61.0, false));
@@ -406,7 +418,8 @@ public final class TestHSSFDateUtil extends TestCase {
assertEquals(createDate(2004, CALENDAR_MARCH, 28), HSSFDateUtil.getJavaDate(38074.00, false));
}
- public void testDate1904() {
+ @Test
+ public void date1904() {
assertEquals(createDate(1904, CALENDAR_JANUARY, 2), HSSFDateUtil.getJavaDate(1.0, true));
assertEquals(createDate(1904, CALENDAR_JANUARY, 1), HSSFDateUtil.getJavaDate(0.0, true));
assertEquals(0.0, HSSFDateUtil.getExcelDate(createDate(1904, CALENDAR_JANUARY, 1), true), 0.00001);
@@ -441,7 +454,8 @@ public final class TestHSSFDateUtil extends TestCase {
/**
* Check if HSSFDateUtil.getAbsoluteDay works as advertised.
*/
- public void testAbsoluteDay() {
+ @Test
+ public void absoluteDay() {
// 1 Jan 1900 is 1 day after 31 Dec 1899
GregorianCalendar calendar = new GregorianCalendar(1900, 0, 1);
assertEquals("Checking absolute day (1 Jan 1900)", 1, HSSFDateUtil.absoluteDay(calendar, false));
@@ -450,7 +464,8 @@ public final class TestHSSFDateUtil extends TestCase {
assertEquals("Checking absolute day (1 Jan 1901)", 366, HSSFDateUtil.absoluteDay(calendar, false));
}
- public void testConvertTime() {
+ @Test
+ public void convertTime() {
final double delta = 1E-7; // a couple of digits more accuracy than strictly required
assertEquals(0.5, HSSFDateUtil.convertTime("12:00"), delta);
@@ -459,7 +474,8 @@ public final class TestHSSFDateUtil extends TestCase {
assertEquals(0.7330440, HSSFDateUtil.convertTime("17:35:35"), delta);
}
- public void testParseDate() {
+ @Test
+ public void parseDate() {
assertEquals(createDate(2008, Calendar.AUGUST, 3), HSSFDateUtil.parseYYYYMMDDDate("2008/08/03"));
assertEquals(createDate(1994, Calendar.MAY, 1), HSSFDateUtil.parseYYYYMMDDDate("1994/05/01"));
}
@@ -467,7 +483,8 @@ public final class TestHSSFDateUtil extends TestCase {
/**
* Ensure that date values *with* a fractional portion get the right time of day
*/
- public void testConvertDateTime() {
+ @Test
+ public void convertDateTime() {
// Excel day 30000 is date 18-Feb-1982
// 0.7 corresponds to time 16:48:00
Date actual = HSSFDateUtil.getJavaDate(30000.7);
@@ -479,7 +496,8 @@ public final class TestHSSFDateUtil extends TestCase {
* User reported a datetime issue in POI-2.5:
* Setting Cell's value to Jan 1, 1900 without a time doesn't return the same value set to
*/
- public void testBug19172()
+ @Test
+ public void bug19172()
{
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet();
@@ -503,10 +521,24 @@ public final class TestHSSFDateUtil extends TestCase {
* DateUtil.isCellFormatted(Cell) should not true for a numeric cell
* that's formatted as ".0000"
*/
- public void testBug54557() throws Exception {
+ @Test
+ public void bug54557() throws Exception {
final String format = ".0000";
boolean isDateFormat = HSSFDateUtil.isADateFormat(165, format);
assertEquals(false, isDateFormat);
}
+
+ @Test
+ public void bug56269() throws Exception {
+ double excelFraction = 41642.45833321759d;
+ Calendar calNoRound = HSSFDateUtil.getJavaCalendar(excelFraction, false);
+ assertEquals(10, calNoRound.get(Calendar.HOUR));
+ assertEquals(59, calNoRound.get(Calendar.MINUTE));
+ assertEquals(59, calNoRound.get(Calendar.SECOND));
+ Calendar calRound = HSSFDateUtil.getJavaCalendar(excelFraction, false, null, true);
+ assertEquals(11, calRound.get(Calendar.HOUR));
+ assertEquals(0, calRound.get(Calendar.MINUTE));
+ assertEquals(0, calRound.get(Calendar.SECOND));
+ }
}