diff options
Diffstat (limited to 'src/testcases/org/apache')
3 files changed, 259 insertions, 19 deletions
diff --git a/src/testcases/org/apache/poi/ddf/TestEscherContainerRecord.java b/src/testcases/org/apache/poi/ddf/TestEscherContainerRecord.java index 04bbe47bbd..7c139827b6 100644 --- a/src/testcases/org/apache/poi/ddf/TestEscherContainerRecord.java +++ b/src/testcases/org/apache/poi/ddf/TestEscherContainerRecord.java @@ -82,21 +82,45 @@ public class TestEscherContainerRecord extends TestCase r2.setOptions( (short) 0x9876 ); r2.setRecordId( EscherOptRecord.RECORD_ID ); + String expected; r.addChildRecord( r2 ); - String expected = "org.apache.poi.ddf.EscherContainerRecord (SpContainer):" + nl + - " isContainer: true" + nl + - " options: 0x000F" + nl + - " recordId: 0xF004" + nl + - " numchildren: 1" + nl + - " children: " + nl + - "org.apache.poi.ddf.EscherOptRecord:" + nl + - " isContainer: false" + nl + - " options: 0x0003" + nl + - " recordId: 0xF00B" + nl + - " numchildren: 0" + nl + - " properties:" + nl; + expected = "org.apache.poi.ddf.EscherContainerRecord (SpContainer):" + nl + + " isContainer: true" + nl + + " options: 0x000F" + nl + + " recordId: 0xF004" + nl + + " numchildren: 1" + nl + + " children: " + nl + + " Child 0:" + nl + + "org.apache.poi.ddf.EscherOptRecord:" + nl + + " isContainer: false" + nl + + " options: 0x0003" + nl + + " recordId: 0xF00B" + nl + + " numchildren: 0" + nl + + " properties:" + nl; assertEquals( expected, r.toString() ); + r.addChildRecord( r2 ); + expected = "org.apache.poi.ddf.EscherContainerRecord (SpContainer):" + nl + + " isContainer: true" + nl + + " options: 0x000F" + nl + + " recordId: 0xF004" + nl + + " numchildren: 2" + nl + + " children: " + nl + + " Child 0:" + nl + + "org.apache.poi.ddf.EscherOptRecord:" + nl + + " isContainer: false" + nl + + " options: 0x0003" + nl + + " recordId: 0xF00B" + nl + + " numchildren: 0" + nl + + " properties:" + nl + + " Child 1:" + nl + + "org.apache.poi.ddf.EscherOptRecord:" + nl + + " isContainer: false" + nl + + " options: 0x0003" + nl + + " recordId: 0xF00B" + nl + + " numchildren: 0" + nl + + " properties:" + nl; + assertEquals( expected, r.toString() ); } public void testGetRecordSize() throws Exception diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestEscherGraphics.java b/src/testcases/org/apache/poi/hssf/usermodel/TestEscherGraphics.java index 04ae9fdf1f..266200b2d2 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestEscherGraphics.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestEscherGraphics.java @@ -20,24 +20,36 @@ package org.apache.poi.hssf.usermodel; import junit.framework.TestCase; import java.awt.*; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; /** * Tests the capabilities of the EscherGraphics class. + * + * All tests have two escher groups available to them, + * one anchored at 0,0,1022,255 and another anchored + * at 20,30,500,200 * * @author Glen Stampoultzis (glens at apache.org) */ public class TestEscherGraphics extends TestCase { - private HSSFShapeGroup escherGroup; + private HSSFWorkbook workbook; + private HSSFPatriarch patriarch; + private HSSFShapeGroup escherGroupA; + private HSSFShapeGroup escherGroupB; private EscherGraphics graphics; protected void setUp() throws Exception { - HSSFWorkbook workbook = new HSSFWorkbook(); + workbook = new HSSFWorkbook(); + HSSFSheet sheet = workbook.createSheet("test"); - escherGroup = sheet.createDrawingPatriarch().createGroup(new HSSFClientAnchor(0,0,1023,255,(short)0,0,(short) 0,0)); - escherGroup = new HSSFShapeGroup(null, new HSSFChildAnchor()); - graphics = new EscherGraphics(this.escherGroup, workbook, Color.black, 1.0f); + patriarch = sheet.createDrawingPatriarch(); + escherGroupA = patriarch.createGroup(new HSSFClientAnchor(0,0,1022,255,(short)0,0,(short) 0,0)); + escherGroupB = patriarch.createGroup(new HSSFClientAnchor(20,30,500,200,(short)0,0,(short) 0,0)); +// escherGroup = new HSSFShapeGroup(null, new HSSFChildAnchor()); + graphics = new EscherGraphics(this.escherGroupA, workbook, Color.black, 1.0f); super.setUp(); } @@ -74,7 +86,7 @@ public class TestEscherGraphics extends TestCase public void testFillRect() throws Exception { graphics.fillRect( 10, 10, 20, 20 ); - HSSFSimpleShape s = (HSSFSimpleShape) escherGroup.getChildren().get(0); + HSSFSimpleShape s = (HSSFSimpleShape) escherGroupA.getChildren().get(0); assertEquals(HSSFSimpleShape.OBJECT_TYPE_RECTANGLE, s.getShapeType()); assertEquals(10, s.getAnchor().getDx1()); assertEquals(10, s.getAnchor().getDy1()); @@ -85,8 +97,198 @@ public class TestEscherGraphics extends TestCase public void testDrawString() throws Exception { graphics.drawString("This is a test", 10, 10); - HSSFTextbox t = (HSSFTextbox) escherGroup.getChildren().get(0); + HSSFTextbox t = (HSSFTextbox) escherGroupA.getChildren().get(0); assertEquals("This is a test", t.getString().getString().toString()); } + public void testGetDataBackAgain() throws Exception { + HSSFSheet s; + HSSFShapeGroup s1; + HSSFShapeGroup s2; + + patriarch.setCoordinates(10, 20, 30, 40); + + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + workbook.write(baos); + workbook = new HSSFWorkbook(new ByteArrayInputStream(baos.toByteArray())); + s = workbook.getSheetAt(0); + + patriarch = s.getDrawingPatriarch(); + + assertNotNull(patriarch); + assertEquals(10, patriarch.getX1()); + assertEquals(20, patriarch.getY1()); + assertEquals(30, patriarch.getX2()); + assertEquals(40, patriarch.getY2()); + + // Check the two groups too + assertEquals(2, patriarch.countOfAllChildren()); + assertTrue(patriarch.getChildren().get(0) instanceof HSSFShapeGroup); + assertTrue(patriarch.getChildren().get(1) instanceof HSSFShapeGroup); + + s1 = (HSSFShapeGroup)patriarch.getChildren().get(0); + s2 = (HSSFShapeGroup)patriarch.getChildren().get(1); + + assertEquals(0, s1.getX1()); + assertEquals(0, s1.getY1()); + assertEquals(1023, s1.getX2()); + assertEquals(255, s1.getY2()); + assertEquals(0, s2.getX1()); + assertEquals(0, s2.getY1()); + assertEquals(1023, s2.getX2()); + assertEquals(255, s2.getY2()); + + assertEquals(0, s1.getAnchor().getDx1()); + assertEquals(0, s1.getAnchor().getDy1()); + assertEquals(1022, s1.getAnchor().getDx2()); + assertEquals(255, s1.getAnchor().getDy2()); + assertEquals(20, s2.getAnchor().getDx1()); + assertEquals(30, s2.getAnchor().getDy1()); + assertEquals(500, s2.getAnchor().getDx2()); + assertEquals(200, s2.getAnchor().getDy2()); + + + // Write and re-load once more, to check that's ok + baos = new ByteArrayOutputStream(); + workbook.write(baos); + workbook = new HSSFWorkbook(new ByteArrayInputStream(baos.toByteArray())); + s = workbook.getSheetAt(0); + patriarch = s.getDrawingPatriarch(); + + assertNotNull(patriarch); + assertEquals(10, patriarch.getX1()); + assertEquals(20, patriarch.getY1()); + assertEquals(30, patriarch.getX2()); + assertEquals(40, patriarch.getY2()); + + // Check the two groups too + assertEquals(2, patriarch.countOfAllChildren()); + assertTrue(patriarch.getChildren().get(0) instanceof HSSFShapeGroup); + assertTrue(patriarch.getChildren().get(1) instanceof HSSFShapeGroup); + + s1 = (HSSFShapeGroup)patriarch.getChildren().get(0); + s2 = (HSSFShapeGroup)patriarch.getChildren().get(1); + + assertEquals(0, s1.getX1()); + assertEquals(0, s1.getY1()); + assertEquals(1023, s1.getX2()); + assertEquals(255, s1.getY2()); + assertEquals(0, s2.getX1()); + assertEquals(0, s2.getY1()); + assertEquals(1023, s2.getX2()); + assertEquals(255, s2.getY2()); + + assertEquals(0, s1.getAnchor().getDx1()); + assertEquals(0, s1.getAnchor().getDy1()); + assertEquals(1022, s1.getAnchor().getDx2()); + assertEquals(255, s1.getAnchor().getDy2()); + assertEquals(20, s2.getAnchor().getDx1()); + assertEquals(30, s2.getAnchor().getDy1()); + assertEquals(500, s2.getAnchor().getDx2()); + assertEquals(200, s2.getAnchor().getDy2()); + + // Change the positions of the first groups, + // but not of their anchors + s1.setCoordinates(2, 3, 1021, 242); + + baos = new ByteArrayOutputStream(); + workbook.write(baos); + workbook = new HSSFWorkbook(new ByteArrayInputStream(baos.toByteArray())); + s = workbook.getSheetAt(0); + patriarch = s.getDrawingPatriarch(); + + assertNotNull(patriarch); + assertEquals(10, patriarch.getX1()); + assertEquals(20, patriarch.getY1()); + assertEquals(30, patriarch.getX2()); + assertEquals(40, patriarch.getY2()); + + // Check the two groups too + assertEquals(2, patriarch.countOfAllChildren()); + assertEquals(2, patriarch.getChildren().size()); + assertTrue(patriarch.getChildren().get(0) instanceof HSSFShapeGroup); + assertTrue(patriarch.getChildren().get(1) instanceof HSSFShapeGroup); + + s1 = (HSSFShapeGroup)patriarch.getChildren().get(0); + s2 = (HSSFShapeGroup)patriarch.getChildren().get(1); + + assertEquals(2, s1.getX1()); + assertEquals(3, s1.getY1()); + assertEquals(1021, s1.getX2()); + assertEquals(242, s1.getY2()); + assertEquals(0, s2.getX1()); + assertEquals(0, s2.getY1()); + assertEquals(1023, s2.getX2()); + assertEquals(255, s2.getY2()); + + assertEquals(0, s1.getAnchor().getDx1()); + assertEquals(0, s1.getAnchor().getDy1()); + assertEquals(1022, s1.getAnchor().getDx2()); + assertEquals(255, s1.getAnchor().getDy2()); + assertEquals(20, s2.getAnchor().getDx1()); + assertEquals(30, s2.getAnchor().getDy1()); + assertEquals(500, s2.getAnchor().getDx2()); + assertEquals(200, s2.getAnchor().getDy2()); + + + // Now add some text to one group, and some more + // to the base, and check we can get it back again + HSSFTextbox tbox1 = + patriarch.createTextbox(new HSSFClientAnchor(1,2,3,4, (short)0,0,(short)0,0)); + tbox1.setString(new HSSFRichTextString("I am text box 1")); + HSSFTextbox tbox2 = + s2.createTextbox(new HSSFChildAnchor(41,42,43,44)); + tbox2.setString(new HSSFRichTextString("This is text box 2")); + + assertEquals(3, patriarch.getChildren().size()); + + + baos = new ByteArrayOutputStream(); + workbook.write(baos); + workbook = new HSSFWorkbook(new ByteArrayInputStream(baos.toByteArray())); + s = workbook.getSheetAt(0); + + patriarch = s.getDrawingPatriarch(); + + assertNotNull(patriarch); + assertEquals(10, patriarch.getX1()); + assertEquals(20, patriarch.getY1()); + assertEquals(30, patriarch.getX2()); + assertEquals(40, patriarch.getY2()); + + // Check the two groups and the text + assertEquals(3, patriarch.countOfAllChildren()); + assertEquals(2, patriarch.getChildren().size()); + + // Should be two groups and a text + assertTrue(patriarch.getChildren().get(0) instanceof HSSFShapeGroup); + assertTrue(patriarch.getChildren().get(1) instanceof HSSFTextbox); +// assertTrue(patriarch.getChildren().get(2) instanceof HSSFShapeGroup); + + s1 = (HSSFShapeGroup)patriarch.getChildren().get(0); + tbox1 = (HSSFTextbox)patriarch.getChildren().get(1); + +// s2 = (HSSFShapeGroup)patriarch.getChildren().get(1); + + assertEquals(2, s1.getX1()); + assertEquals(3, s1.getY1()); + assertEquals(1021, s1.getX2()); + assertEquals(242, s1.getY2()); + assertEquals(0, s2.getX1()); + assertEquals(0, s2.getY1()); + assertEquals(1023, s2.getX2()); + assertEquals(255, s2.getY2()); + + assertEquals(0, s1.getAnchor().getDx1()); + assertEquals(0, s1.getAnchor().getDy1()); + assertEquals(1022, s1.getAnchor().getDx2()); + assertEquals(255, s1.getAnchor().getDy2()); + assertEquals(20, s2.getAnchor().getDx1()); + assertEquals(30, s2.getAnchor().getDy1()); + assertEquals(500, s2.getAnchor().getDx2()); + assertEquals(200, s2.getAnchor().getDy2()); + + // Not working just yet + //assertEquals("I am text box 1", tbox1.getString().getString()); + } } diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java index 40a577240e..1be3a90855 100644 --- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java +++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java @@ -151,6 +151,13 @@ public class TestHSSFWorkbook extends TestCase assertNull(b.getSheetAt(1).getDrawingPatriarch()); assertFalse(b.getSheetAt(0).getDrawingPatriarch().containsChart()); + // We've now called getDrawingPatriarch() so + // everything will be all screwy + // So, start again + b = new HSSFWorkbook( + new FileInputStream(new File(filename,"44010-SingleChart.xls")) + ); + b = writeRead(b); assertEquals(2, b.getNumberOfSheets()); s = b.getSheetAt(1); @@ -178,6 +185,13 @@ public class TestHSSFWorkbook extends TestCase assertNull(b.getSheetAt(2).getDrawingPatriarch()); assertFalse(b.getSheetAt(0).getDrawingPatriarch().containsChart()); + // We've now called getDrawingPatriarch() so + // everything will be all screwy + // So, start again + b = new HSSFWorkbook( + new FileInputStream(new File(filename,"44010-TwoCharts.xls")) + ); + b = writeRead(b); assertEquals(3, b.getNumberOfSheets()); |