aboutsummaryrefslogtreecommitdiffstats
path: root/src/testcases/org/apache/poi/hssf/usermodel/TestEscherGraphics.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/testcases/org/apache/poi/hssf/usermodel/TestEscherGraphics.java')
-rw-r--r--src/testcases/org/apache/poi/hssf/usermodel/TestEscherGraphics.java216
1 files changed, 209 insertions, 7 deletions
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());
+ }
}