Use correct default date-format, add some tests Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=66381 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1917070 13f79535-47bb-0310-9956-ffa450edef68pull/624/head
@@ -21,6 +21,7 @@ import static org.apache.poi.xssf.XSSFTestDataSamples.openSampleWorkbook; | |||
import static org.junit.jupiter.api.Assertions.assertEquals; | |||
import java.io.IOException; | |||
import java.util.Date; | |||
import org.apache.poi.ss.formula.ConditionalFormattingEvaluator; | |||
import org.apache.poi.ss.formula.WorkbookEvaluatorProvider; | |||
@@ -120,4 +121,37 @@ public final class TestXSSFDataFormat extends BaseTestDataFormat { | |||
assertEquals("6.75", formatter.formatCellValue(d1)); | |||
} | |||
} | |||
@Test | |||
public void testFormatCellValue() throws IOException { | |||
DataFormatter df = new DataFormatter(); | |||
assertEquals("", df.formatCellValue(null)); | |||
try (Workbook wb = new XSSFWorkbook()) { | |||
Cell cell = wb.createSheet("test").createRow(0).createCell(0); | |||
assertEquals("", df.formatCellValue(cell)); | |||
cell.setCellValue(123); | |||
assertEquals("123", df.formatCellValue(cell)); | |||
cell.setCellValue(new Date(234092383)); | |||
assertEquals("25571.75107", df.formatCellValue(cell)); | |||
cell.setCellValue("abcdefgh"); | |||
assertEquals("abcdefgh", df.formatCellValue(cell)); | |||
cell.setCellValue(true); | |||
assertEquals("TRUE", df.formatCellValue(cell)); | |||
CellStyle cellStyle = wb.createCellStyle(); | |||
cellStyle.setDataFormat((short)14); | |||
cell.setCellStyle(cellStyle); | |||
cell.setCellValue(new Date(234092383)); | |||
assertEquals("1/3/70", df.formatCellValue(cell)); | |||
cellStyle.setDataFormat((short)9999); | |||
assertEquals("25571.751069247686", df.formatCellValue(cell)); | |||
} | |||
} | |||
} |
@@ -922,7 +922,7 @@ public class DataFormatter { | |||
sdf.setTimeZone(LocaleUtil.getUserTimeZone()); | |||
dateFormat = sdf; | |||
} else { | |||
dateFormat = defaultNumFormat; | |||
dateFormat = defaultDateformat; | |||
} | |||
} | |||
synchronized (dateFormat) { |
@@ -46,6 +46,7 @@ class TestBiffViewer extends BaseTestIteratingXLS { | |||
excludes.put("clusterfuzz-testcase-minimized-POIHSSFFuzzer-5889658057523200.xls", IndexOutOfBoundsException.class); | |||
excludes.put("clusterfuzz-testcase-minimized-POIHSSFFuzzer-5175219985448960.xls", IndexOutOfBoundsException.class); | |||
excludes.put("clusterfuzz-testcase-minimized-POIHSSFFuzzer-6137883240824832.xls", IndexOutOfBoundsException.class); | |||
excludes.put("clusterfuzz-testcase-minimized-POIHSSFFuzzer-6483562584932352.xls", IndexOutOfBoundsException.class); | |||
return excludes; | |||
} |
@@ -49,6 +49,7 @@ class TestRecordLister extends BaseTestIteratingXLS { | |||
excludes.put("clusterfuzz-testcase-minimized-POIHSSFFuzzer-5889658057523200.xls", IndexOutOfBoundsException.class); | |||
excludes.put("clusterfuzz-testcase-minimized-POIHSSFFuzzer-5175219985448960.xls", RecordFormatException.class); | |||
excludes.put("clusterfuzz-testcase-minimized-POIHSSFFuzzer-6137883240824832.xls", RecordFormatException.class); | |||
excludes.put("clusterfuzz-testcase-minimized-POIHSSFFuzzer-6483562584932352.xls", RecordFormatException.class); | |||
return excludes; | |||
} |
@@ -35,6 +35,8 @@ import java.util.Locale; | |||
import java.util.concurrent.CompletableFuture; | |||
import java.util.concurrent.TimeUnit; | |||
import javax.swing.text.DateFormatter; | |||
import org.apache.poi.POITestCase; | |||
import org.apache.poi.hssf.HSSFTestDataSamples; | |||
import org.apache.poi.hssf.usermodel.HSSFWorkbook; | |||
@@ -1162,4 +1164,36 @@ class TestDataFormatter { | |||
return true; | |||
} | |||
@Test | |||
public void testFormatCellValue() throws IOException { | |||
DataFormatter df = new DataFormatter(); | |||
assertEquals("", df.formatCellValue(null)); | |||
try (Workbook wb = new HSSFWorkbook()) { | |||
Cell cell = wb.createSheet("test").createRow(0).createCell(0); | |||
assertEquals("", df.formatCellValue(cell)); | |||
cell.setCellValue(123); | |||
assertEquals("123", df.formatCellValue(cell)); | |||
cell.setCellValue(new Date(234092383)); | |||
assertEquals("25571.75107", df.formatCellValue(cell)); | |||
cell.setCellValue("abcdefgh"); | |||
assertEquals("abcdefgh", df.formatCellValue(cell)); | |||
cell.setCellValue(true); | |||
assertEquals("TRUE", df.formatCellValue(cell)); | |||
CellStyle cellStyle = wb.createCellStyle(); | |||
cellStyle.setDataFormat((short)14); | |||
cell.setCellStyle(cellStyle); | |||
cell.setCellValue(new Date(234092383)); | |||
assertEquals("1/3/70", df.formatCellValue(cell)); | |||
cellStyle.setDataFormat((short)9999); | |||
assertEquals("25571.751069247686", df.formatCellValue(cell)); | |||
} | |||
} | |||
} |