From 067c62168e6acb72747cf45abf48d09faab1ebdb Mon Sep 17 00:00:00 2001 From: Dominik Stadler Date: Sun, 30 Jun 2013 22:47:26 +0000 Subject: [PATCH] Bug 54084: Add testcase which reproduces the bug, no fix available yet git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1498190 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/hssf/usermodel/TestUnfixedBugs.java | 49 +++++++++++++++++- .../54084 - Greek - beyond BMP.txt | 1 + .../54084 - Greek - beyond BMP.xlsx | Bin 0 -> 8356 bytes 3 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 test-data/spreadsheet/54084 - Greek - beyond BMP.txt create mode 100644 test-data/spreadsheet/54084 - Greek - beyond BMP.xlsx diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestUnfixedBugs.java b/src/testcases/org/apache/poi/hssf/usermodel/TestUnfixedBugs.java index 9a2dc5dfb..0ebb78e37 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestUnfixedBugs.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestUnfixedBugs.java @@ -17,13 +17,22 @@ package org.apache.poi.hssf.usermodel; +import java.io.IOException; +import java.io.UnsupportedEncodingException; + import junit.framework.AssertionFailedError; import junit.framework.TestCase; import org.apache.poi.hssf.HSSFTestDataSamples; import org.apache.poi.hssf.record.RecordFormatException; - -import java.io.IOException; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.xssf.SXSSFITestDataProvider; +import org.apache.poi.xssf.XSSFTestDataSamples; +import org.apache.poi.xssf.streaming.SXSSFWorkbook; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; /** * @author aviks @@ -77,4 +86,40 @@ public final class TestUnfixedBugs extends TestCase { assertEquals("evaluating e1", 30., eval.evaluate(e1).getNumberValue()); } + + public void testBug54084Unicode() throws IOException { + // sample XLSX with the same text-contents as the text-file above + XSSFWorkbook wb = XSSFTestDataSamples.openSampleWorkbook("54084 - Greek - beyond BMP.xlsx"); + + verifyBug54084Unicode(wb); + +// OutputStream baos = new FileOutputStream("/tmp/test.xlsx"); +// try { +// wb.write(baos); +// } finally { +// baos.close(); +// } + + // now write the file and read it back in + XSSFWorkbook wbWritten = XSSFTestDataSamples.writeOutAndReadBack(wb); + verifyBug54084Unicode(wbWritten); + + // finally also write it out via the streaming interface and verify that we still can read it back in + Workbook wbStreamingWritten = SXSSFITestDataProvider.instance.writeOutAndReadBack(new SXSSFWorkbook(wb)); + verifyBug54084Unicode(wbStreamingWritten); + } + + private void verifyBug54084Unicode(Workbook wb) throws UnsupportedEncodingException { + // expected data is stored in UTF-8 in a text-file + String testData = new String(HSSFTestDataSamples.getTestDataFileContent("54084 - Greek - beyond BMP.txt"), "UTF-8").trim(); + + Sheet sheet = wb.getSheetAt(0); + Row row = sheet.getRow(0); + Cell cell = row.getCell(0); + + String value = cell.getStringCellValue(); + //System.out.println(value); + + assertEquals("The data in the text-file should exactly match the data that we read from the workbook", testData, value); + } } diff --git a/test-data/spreadsheet/54084 - Greek - beyond BMP.txt b/test-data/spreadsheet/54084 - Greek - beyond BMP.txt new file mode 100644 index 000000000..11523527b --- /dev/null +++ b/test-data/spreadsheet/54084 - Greek - beyond BMP.txt @@ -0,0 +1 @@ +𝝊𝝋𝝌𝝍𝝎𝝏𝝐𝝑𝝒𝝓𝝔𝝕𝝖𝝗𝝘𝝙𝝚𝝛𝝜𝝝𝝞𝝟𝝠𝝡𝝢𝝣𝝤𝝥𝝦𝝧𝝨𝝩𝝪𝝫𝝬𝝭𝝮𝝯𝝰𝝱𝝲𝝳𝝴𝝵𝝶𝝷𝝸𝝹𝝺 diff --git a/test-data/spreadsheet/54084 - Greek - beyond BMP.xlsx b/test-data/spreadsheet/54084 - Greek - beyond BMP.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..bc2772286c78692abfa26dfe8a4d4a8331e90d10 GIT binary patch literal 8356 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 M3qjUEitnHP4^>epWB>pF literal 0 HcmV?d00001