From e8b12e2e544a80ab4adf851b32299417b83c9344 Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Thu, 3 Sep 2015 20:46:04 +0000 Subject: [PATCH] Add unit tests to verify that bug 51626 and bug 51451 are fixed Conflicts: src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1701132 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/xssf/usermodel/TestXSSFBugs.java | 47 +++++++++++++++++- test-data/spreadsheet/51626.xlsx | Bin 0 -> 11328 bytes test-data/spreadsheet/51626_contact.xlsx | Bin 0 -> 10546 bytes 3 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 test-data/spreadsheet/51626.xlsx create mode 100644 test-data/spreadsheet/51626_contact.xlsx diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java index 6b4170ddb8..5fccecc681 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java @@ -29,9 +29,10 @@ import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; -import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; import java.util.Arrays; import java.util.Calendar; import java.util.List; @@ -66,6 +67,7 @@ import org.apache.poi.ss.usermodel.CellValue; import org.apache.poi.ss.usermodel.ClientAnchor; import org.apache.poi.ss.usermodel.Comment; import org.apache.poi.ss.usermodel.CreationHelper; +import org.apache.poi.ss.usermodel.DataFormat; import org.apache.poi.ss.usermodel.DataFormatter; import org.apache.poi.ss.usermodel.DateUtil; import org.apache.poi.ss.usermodel.Drawing; @@ -2571,4 +2573,47 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues { } } } + + @Test + public void test51626() throws Exception { + Workbook wb = XSSFTestDataSamples.openSampleWorkbook("51626.xlsx"); + assertNotNull(wb); + wb.close(); + + InputStream stream = HSSFTestDataSamples.openSampleFileStream("51626.xlsx"); + wb = WorkbookFactory.create(stream); + stream.close(); + wb.close(); + + wb = XSSFTestDataSamples.openSampleWorkbook("51626_contact.xlsx"); + assertNotNull(wb); + wb.close(); + + stream = HSSFTestDataSamples.openSampleFileStream("51626_contact.xlsx"); + wb = WorkbookFactory.create(stream); + stream.close(); + wb.close(); + } + + @Test + public void test51451() throws IOException { + Workbook wb = new XSSFWorkbook(); + Sheet sh = wb.createSheet(); + + Row row = sh.createRow(0); + Cell cell = row.createCell(0); + cell.setCellValue(239827342); + + CellStyle style = wb.createCellStyle(); + //style.setHidden(false); + DataFormat excelFormat = wb.createDataFormat(); + style.setDataFormat(excelFormat.getFormat("#,##0")); + sh.setDefaultColumnStyle(0, style); + +// FileOutputStream out = new FileOutputStream("/tmp/51451.xlsx"); +// wb.write(out); +// out.close(); + + wb.close(); + } } diff --git a/test-data/spreadsheet/51626.xlsx b/test-data/spreadsheet/51626.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..6a5e3ffa9d37b7bb174d6c3820afb8bc7f3c5d52 GIT binary patch literal 11328 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 HZ+HI(pGSRi literal 0 HcmV?d00001 diff --git a/test-data/spreadsheet/51626_contact.xlsx b/test-data/spreadsheet/51626_contact.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..a3e4e5b7ed1708c82cb831e9a4d1f94c4a2d7410 GIT binary patch literal 10546 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