diff options
author | Yegor Kozlov <yegor@apache.org> | 2008-09-30 13:57:36 +0000 |
---|---|---|
committer | Yegor Kozlov <yegor@apache.org> | 2008-09-30 13:57:36 +0000 |
commit | 0c4ee58c9ffa1dcc4a241ace4a45a605ee3f1585 (patch) | |
tree | 2d5f0f998e7a4df4c7aa678e51fdabb6c6c30bdf /src/ooxml/testcases/org/apache | |
parent | 7c40d2c9b019b4882ff432a1460d720e039bc234 (diff) | |
download | poi-0c4ee58c9ffa1dcc4a241ace4a45a605ee3f1585.tar.gz poi-0c4ee58c9ffa1dcc4a241ace4a45a605ee3f1585.zip |
refactored POIXMLDocument to be a composite of POIXMLDocumentPart, this way XSSFWorkbook is a root of a tree: XSSFSheets are children, XSSFDrawings are children of worksheets, etc,
Also, performed major cleanup of core XSSF classes and test cases
git-svn-id: https://svn.apache.org/repos/asf/poi/branches/ooxml@700472 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/ooxml/testcases/org/apache')
7 files changed, 122 insertions, 167 deletions
diff --git a/src/ooxml/testcases/org/apache/poi/xssf/XSSFTestDataSamples.java b/src/ooxml/testcases/org/apache/poi/xssf/XSSFTestDataSamples.java index aa1d78fe5f..1fe0b120c1 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/XSSFTestDataSamples.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/XSSFTestDataSamples.java @@ -17,10 +17,7 @@ package org.apache.poi.xssf;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
+import java.io.*;
import org.apache.poi.hssf.HSSFTestDataSamples;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
@@ -47,15 +44,20 @@ public class XSSFTestDataSamples { }
}
public static <R extends Workbook> R writeOutAndReadBack(R wb) {
- ByteArrayOutputStream baos = new ByteArrayOutputStream(8192);
Workbook result;
try {
- wb.write(baos);
- InputStream is = new ByteArrayInputStream(baos.toByteArray());
if (wb instanceof HSSFWorkbook) {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream(8192);
+ wb.write(baos);
+ InputStream is = new ByteArrayInputStream(baos.toByteArray());
result = new HSSFWorkbook(is);
} else if (wb instanceof XSSFWorkbook) {
- Package pkg = Package.open(is);
+ File tmp = File.createTempFile("poi-ooxml-", ".xlsx");
+ tmp.deleteOnExit();
+ FileOutputStream out = new FileOutputStream(tmp);
+ wb.write(out);
+ out.close();
+ Package pkg = Package.open(tmp.getAbsolutePath());
result = new XSSFWorkbook(pkg);
} else {
throw new RuntimeException("Unexpected workbook type ("
diff --git a/src/ooxml/testcases/org/apache/poi/xssf/model/TestCommentsTable.java b/src/ooxml/testcases/org/apache/poi/xssf/model/TestCommentsTable.java index 418ddec476..c37d1d8b50 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/model/TestCommentsTable.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/model/TestCommentsTable.java @@ -30,6 +30,7 @@ import org.apache.poi.xssf.usermodel.XSSFComment; import org.apache.poi.xssf.usermodel.XSSFRichTextString; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.apache.poi.xssf.XSSFTestDataSamples; import org.openxml4j.opc.Package; import org.openxml4j.opc.PackagePart; import org.openxml4j.opc.PackagingURIHelper; @@ -212,12 +213,8 @@ public class TestCommentsTable extends TestCase { // Save, and re-load the file - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - workbook.write(baos); - - ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); - workbook = new XSSFWorkbook(Package.open(bais)); - + workbook = XSSFTestDataSamples.writeOutAndReadBack(workbook); + // Check we still have comments where we should do sheet1 = workbook.getSheetAt(0); sheet2 = (XSSFSheet)workbook.getSheetAt(1); @@ -259,12 +256,8 @@ public class TestCommentsTable extends TestCase { sheet1.getRow(12).getCell(2).getCellComment().getAuthor()); // Save, and re-load the file - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - workbook.write(baos); - - ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); - workbook = new XSSFWorkbook(Package.open(bais)); - + workbook = XSSFTestDataSamples.writeOutAndReadBack(workbook); + // Check we still have comments where we should do sheet1 = workbook.getSheetAt(0); assertNotNull(sheet1.getRow(4).getCell(2).getCellComment()); 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 570cc077b4..b3f3e533dd 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java @@ -17,120 +17,107 @@ package org.apache.poi.xssf.usermodel; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; import java.io.File; -import java.io.FileOutputStream; import junit.framework.TestCase; import org.openxml4j.opc.Package; import org.openxml4j.opc.PackagePart; import org.openxml4j.opc.PackagingURIHelper; +import org.apache.poi.xssf.XSSFTestDataSamples; public class TestXSSFBugs extends TestCase { - private String getFilePath(String file) { - File xml = new File( - System.getProperty("HSSF.testdata.path") + - File.separator + file - ); - assertTrue(xml.exists()); - - return xml.toString(); - } - - private Package saveAndOpen(XSSFWorkbook wb) throws Exception { - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - wb.write(baos); - ByteArrayInputStream inp = new ByteArrayInputStream( - baos.toByteArray() - ); - Package pkg = Package.open(inp); - return pkg; - } - - /** - * Named ranges had the right reference, but - * the wrong sheet name - */ - public void test45430() throws Exception { - XSSFWorkbook wb = new XSSFWorkbook(getFilePath("45430.xlsx")); - assertFalse(wb.isMacroEnabled()); - assertEquals(3, wb.getNumberOfNames()); - - assertEquals(0, wb.getNameAt(0).getCTName().getLocalSheetId()); - assertFalse(wb.getNameAt(0).getCTName().isSetLocalSheetId()); - assertEquals("SheetA!$A$1", wb.getNameAt(0).getReference()); - assertEquals("SheetA", wb.getNameAt(0).getSheetName()); - - assertEquals(0, wb.getNameAt(1).getCTName().getLocalSheetId()); - assertFalse(wb.getNameAt(1).getCTName().isSetLocalSheetId()); - assertEquals("SheetB!$A$1", wb.getNameAt(1).getReference()); - assertEquals("SheetB", wb.getNameAt(1).getSheetName()); - - assertEquals(0, wb.getNameAt(2).getCTName().getLocalSheetId()); - assertFalse(wb.getNameAt(2).getCTName().isSetLocalSheetId()); - assertEquals("SheetC!$A$1", wb.getNameAt(2).getReference()); - assertEquals("SheetC", wb.getNameAt(2).getSheetName()); - - // Save and re-load, still there - Package nPkg = saveAndOpen(wb); - XSSFWorkbook nwb = new XSSFWorkbook(nPkg); - assertEquals(3, nwb.getNumberOfNames()); - assertEquals("SheetA!$A$1", nwb.getNameAt(0).getReference()); - } - - /** - * We should carry vba macros over after save - */ - public void test45431() throws Exception { - Package pkg = Package.open(getFilePath("45431.xlsm")); - XSSFWorkbook wb = new XSSFWorkbook(pkg); - assertTrue(wb.isMacroEnabled()); - - // Check the various macro related bits can be found - PackagePart vba = pkg.getPart( - PackagingURIHelper.createPartName("/xl/vbaProject.bin") - ); - assertNotNull(vba); - // And the drawing bit - PackagePart drw = pkg.getPart( - PackagingURIHelper.createPartName("/xl/drawings/vmlDrawing1.vml") - ); - assertNotNull(drw); - - - // Save and re-open, both still there - Package nPkg = saveAndOpen(wb); - XSSFWorkbook nwb = new XSSFWorkbook(nPkg); - assertTrue(nwb.isMacroEnabled()); - - vba = nPkg.getPart( - PackagingURIHelper.createPartName("/xl/vbaProject.bin") - ); - assertNotNull(vba); - drw = nPkg.getPart( - PackagingURIHelper.createPartName("/xl/drawings/vmlDrawing1.vml") - ); - assertNotNull(drw); - - // And again, just to be sure - nPkg = saveAndOpen(nwb); - nwb = new XSSFWorkbook(nPkg); - assertTrue(nwb.isMacroEnabled()); - - vba = nPkg.getPart( - PackagingURIHelper.createPartName("/xl/vbaProject.bin") - ); - assertNotNull(vba); - drw = nPkg.getPart( - PackagingURIHelper.createPartName("/xl/drawings/vmlDrawing1.vml") - ); - assertNotNull(drw); - - // For testing with excel + private String getFilePath(String file) { + File xml = new File( + System.getProperty("HSSF.testdata.path") + + File.separator + file + ); + assertTrue(xml.exists()); + + return xml.toString(); + } + + /** + * Named ranges had the right reference, but + * the wrong sheet name + */ + public void test45430() throws Exception { + XSSFWorkbook wb = new XSSFWorkbook(getFilePath("45430.xlsx")); + assertFalse(wb.isMacroEnabled()); + assertEquals(3, wb.getNumberOfNames()); + + assertEquals(0, wb.getNameAt(0).getCTName().getLocalSheetId()); + assertFalse(wb.getNameAt(0).getCTName().isSetLocalSheetId()); + assertEquals("SheetA!$A$1", wb.getNameAt(0).getReference()); + assertEquals("SheetA", wb.getNameAt(0).getSheetName()); + + assertEquals(0, wb.getNameAt(1).getCTName().getLocalSheetId()); + assertFalse(wb.getNameAt(1).getCTName().isSetLocalSheetId()); + assertEquals("SheetB!$A$1", wb.getNameAt(1).getReference()); + assertEquals("SheetB", wb.getNameAt(1).getSheetName()); + + assertEquals(0, wb.getNameAt(2).getCTName().getLocalSheetId()); + assertFalse(wb.getNameAt(2).getCTName().isSetLocalSheetId()); + assertEquals("SheetC!$A$1", wb.getNameAt(2).getReference()); + assertEquals("SheetC", wb.getNameAt(2).getSheetName()); + + // Save and re-load, still there + XSSFWorkbook nwb = XSSFTestDataSamples.writeOutAndReadBack(wb); + assertEquals(3, nwb.getNumberOfNames()); + assertEquals("SheetA!$A$1", nwb.getNameAt(0).getReference()); + } + + /** + * We should carry vba macros over after save + */ + public void test45431() throws Exception { + Package pkg = Package.open(getFilePath("45431.xlsm")); + XSSFWorkbook wb = new XSSFWorkbook(pkg); + assertTrue(wb.isMacroEnabled()); + + // Check the various macro related bits can be found + PackagePart vba = pkg.getPart( + PackagingURIHelper.createPartName("/xl/vbaProject.bin") + ); + assertNotNull(vba); + // And the drawing bit + PackagePart drw = pkg.getPart( + PackagingURIHelper.createPartName("/xl/drawings/vmlDrawing1.vml") + ); + assertNotNull(drw); + + + // Save and re-open, both still there + XSSFWorkbook nwb = XSSFTestDataSamples.writeOutAndReadBack(wb); + Package nPkg = nwb.getPackage(); + assertTrue(nwb.isMacroEnabled()); + + vba = nPkg.getPart( + PackagingURIHelper.createPartName("/xl/vbaProject.bin") + ); + assertNotNull(vba); + drw = nPkg.getPart( + PackagingURIHelper.createPartName("/xl/drawings/vmlDrawing1.vml") + ); + assertNotNull(drw); + + // And again, just to be sure + nwb = XSSFTestDataSamples.writeOutAndReadBack(nwb); + nPkg = nwb.getPackage(); + assertTrue(nwb.isMacroEnabled()); + + vba = nPkg.getPart( + PackagingURIHelper.createPartName("/xl/vbaProject.bin") + ); + assertNotNull(vba); + drw = nPkg.getPart( + PackagingURIHelper.createPartName("/xl/drawings/vmlDrawing1.vml") + ); + assertNotNull(drw); + + // For testing with excel // FileOutputStream fout = new FileOutputStream("/tmp/foo.xlsm"); // nwb.write(fout); // fout.close(); - } + } } diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFComment.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFComment.java index 4a943597e6..c2ddb01bae 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFComment.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFComment.java @@ -17,9 +17,6 @@ package org.apache.poi.xssf.usermodel; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; - import org.apache.poi.hssf.usermodel.HSSFRichTextString; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Comment; @@ -27,6 +24,7 @@ import org.apache.poi.ss.usermodel.RichTextString; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.util.CellReference; import org.apache.poi.xssf.model.CommentsTable; +import org.apache.poi.xssf.XSSFTestDataSamples; import org.openxml4j.opc.Package; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTAuthors; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTComment; @@ -135,7 +133,7 @@ public class TestXSSFComment extends TestCase { */ public void testCreateSave() throws Exception { XSSFWorkbook wb = new XSSFWorkbook(); - XSSFSheet s1 = (XSSFSheet)wb.createSheet(); + XSSFSheet s1 = wb.createSheet(); Row r1 = s1.createRow(0); Cell r1c1 = r1.createCell(0); r1c1.setCellValue(2.2); @@ -150,12 +148,8 @@ public class TestXSSFComment extends TestCase { assertEquals(1, s1.getNumberOfComments()); // Save and re-load - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - wb.write(baos); - ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); - - wb = new XSSFWorkbook(Package.open(bais)); - s1 = (XSSFSheet)wb.getSheetAt(0); + wb = XSSFTestDataSamples.writeOutAndReadBack(wb); + s1 = wb.getSheetAt(0); assertEquals(1, s1.getNumberOfComments()); assertNotNull(s1.getRow(0).getCell(0).getCellComment()); @@ -171,12 +165,9 @@ public class TestXSSFComment extends TestCase { assertEquals(2, s1.getNumberOfComments()); // Save and re-load - baos = new ByteArrayOutputStream(); - wb.write(baos); - bais = new ByteArrayInputStream(baos.toByteArray()); - - wb = new XSSFWorkbook(Package.open(bais)); - s1 = (XSSFSheet)wb.getSheetAt(0); + + wb = XSSFTestDataSamples.writeOutAndReadBack(wb); + s1 = wb.getSheetAt(0); assertEquals(2, s1.getNumberOfComments()); assertNotNull(s1.getCellComment(0, 0)); diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFHyperlink.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFHyperlink.java index 2c469c49b3..0e5141db78 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFHyperlink.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFHyperlink.java @@ -17,8 +17,6 @@ package org.apache.poi.xssf.usermodel; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; import java.io.File; import junit.framework.TestCase; @@ -27,6 +25,7 @@ import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CreationHelper; import org.apache.poi.ss.usermodel.Hyperlink; import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.xssf.XSSFTestDataSamples; import org.openxml4j.opc.Package; public class TestXSSFHyperlink extends TestCase { @@ -79,12 +78,9 @@ public class TestXSSFHyperlink extends TestCase { // Write out, and check - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - workbook.write(baos); - ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); - + // Load up again, check all links still there - XSSFWorkbook wb2 = new XSSFWorkbook(Package.open(bais)); + XSSFWorkbook wb2 = XSSFTestDataSamples.writeOutAndReadBack(workbook); assertEquals(3, wb2.getNumberOfSheets()); assertNotNull(wb2.getSheetAt(0)); assertNotNull(wb2.getSheetAt(1)); @@ -119,18 +115,14 @@ public class TestXSSFHyperlink extends TestCase { // Save and re-load once more - baos = new ByteArrayOutputStream(); - wb2.write(baos); - bais = new ByteArrayInputStream(baos.toByteArray()); - - - XSSFWorkbook wb3 = new XSSFWorkbook(Package.open(bais)); + + XSSFWorkbook wb3 = XSSFTestDataSamples.writeOutAndReadBack(wb2); assertEquals(3, wb3.getNumberOfSheets()); assertNotNull(wb3.getSheetAt(0)); assertNotNull(wb3.getSheetAt(1)); assertNotNull(wb3.getSheetAt(2)); - sheet = (XSSFSheet)wb3.getSheetAt(0); + sheet = wb3.getSheetAt(0); assertEquals(5, sheet.getNumHyperlinks()); doTestHyperlinkContents(sheet); diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java index 2ccedebf8c..5060125b0e 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java @@ -17,8 +17,6 @@ package org.apache.poi.xssf.usermodel; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; import java.io.File; import java.util.Iterator; import junit.framework.TestCase; @@ -30,11 +28,7 @@ import org.apache.poi.ss.util.Region; import org.apache.poi.xssf.model.CommentsTable; import org.apache.poi.xssf.model.StylesTable; import org.apache.poi.xssf.usermodel.helpers.ColumnHelper; -import org.apache.poi.hssf.usermodel.HSSFSheet; -import org.apache.poi.hssf.usermodel.HSSFWorkbook; -import org.apache.poi.hssf.usermodel.HSSFRow; -import org.apache.poi.hssf.usermodel.HSSFCell; -import org.openxml4j.opc.Package; +import org.apache.poi.xssf.XSSFTestDataSamples; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCol; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCols; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTComment; @@ -349,11 +343,7 @@ public class TestXSSFSheet extends TestCase { // Save and reload - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - workbook.write(baos); - XSSFWorkbook wb = new XSSFWorkbook(Package.open( - new ByteArrayInputStream(baos.toByteArray()) - )); + XSSFWorkbook wb = XSSFTestDataSamples.writeOutAndReadBack(workbook); hdr = (XSSFOddHeader)wb.getSheetAt(0).getHeader(); ftr = (XSSFOddFooter)wb.getSheetAt(0).getFooter(); diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java index 4bfaf3ac2a..a8cdda1f55 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java @@ -441,7 +441,7 @@ public final class TestXSSFWorkbook extends TestCase { // Now, an existing file with named ranges workbook = XSSFTestDataSamples.openSampleWorkbook("WithVariousData.xlsx"); - + assertEquals(2, workbook.getNumberOfNames()); assertEquals("Sheet1!$A$2:$A$7", workbook.getNameAt(0).getReference()); assertEquals("AllANumbers", workbook.getNameAt(0).getNameName()); |