]> source.dussan.org Git - poi.git/commitdiff
Bug 54084: Add testcase which reproduces the bug, no fix available yet
authorDominik Stadler <centic@apache.org>
Sun, 30 Jun 2013 22:47:26 +0000 (22:47 +0000)
committerDominik Stadler <centic@apache.org>
Sun, 30 Jun 2013 22:47:26 +0000 (22:47 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1498190 13f79535-47bb-0310-9956-ffa450edef68

src/testcases/org/apache/poi/hssf/usermodel/TestUnfixedBugs.java
test-data/spreadsheet/54084 - Greek - beyond BMP.txt [new file with mode: 0644]
test-data/spreadsheet/54084 - Greek - beyond BMP.xlsx [new file with mode: 0644]

index 9a2dc5dfbd4f3e7c90a3c210cf089e3612f1bdac..0ebb78e37fe2dcaace3550a720bb2895ed76dacc 100644 (file)
 
 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 (file)
index 0000000..1152352
--- /dev/null
@@ -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 (file)
index 0000000..bc27722
Binary files /dev/null and b/test-data/spreadsheet/54084 - Greek - beyond BMP.xlsx differ