]> source.dussan.org Git - poi.git/commitdiff
Tests to ensure that the StyleTextProp and RichText stuff plays nicely together
authorNick Burch <nick@apache.org>
Wed, 12 Apr 2006 18:01:11 +0000 (18:01 +0000)
committerNick Burch <nick@apache.org>
Wed, 12 Apr 2006 18:01:11 +0000 (18:01 +0000)
git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@393553 13f79535-47bb-0310-9956-ffa450edef68

src/scratchpad/testcases/org/apache/poi/hslf/model/TestTextRun.java
src/scratchpad/testcases/org/apache/poi/hslf/model/TestTextRunReWrite.java [new file with mode: 0644]
src/scratchpad/testcases/org/apache/poi/hslf/record/TestStyleTextPropAtom.java

index 8bbfb37a4e008be414caff4e3387cc2a2ab91886..c35a6a0c6af4f39fd055afebba555e9e02927d3f 100644 (file)
@@ -394,7 +394,12 @@ public class TestTextRun extends TestCase {
                // The styles should have been updated for the new sizes
                assertEquals(newBText.length(), tpBC.getCharactersCovered());
                assertEquals(newCText.length(), tpCC.getCharactersCovered());
-               assertEquals(newDText.length(), tpDC.getCharactersCovered());
+               assertEquals(newDText.length()+1, tpDC.getCharactersCovered()); // Last one is always one larger
+               
+               assertEquals(
+                               newBText.length() + newCText.length() + newDText.length(), 
+                               tpBP.getCharactersCovered()
+               );
                
                // Paragraph style should be sum of text length
                assertEquals(newBText.length() + newCText.length() + newDText.length(), tpBP.getCharactersCovered());
diff --git a/src/scratchpad/testcases/org/apache/poi/hslf/model/TestTextRunReWrite.java b/src/scratchpad/testcases/org/apache/poi/hslf/model/TestTextRunReWrite.java
new file mode 100644 (file)
index 0000000..d9b9c71
--- /dev/null
@@ -0,0 +1,171 @@
+
+/* ====================================================================
+   Copyright 2002-2004   Apache Software Foundation
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+==================================================================== */
+        
+
+
+package org.apache.poi.hslf.model;
+
+
+import junit.framework.TestCase;
+import java.io.*;
+
+import org.apache.poi.hslf.HSLFSlideShow;
+import org.apache.poi.hslf.usermodel.RichTextRun;
+import org.apache.poi.hslf.usermodel.SlideShow;
+import org.apache.poi.poifs.filesystem.*;
+
+/**
+ * Tests that if we load something up, get a TextRun, set the text
+ *  to be the same as it was before, and write it all back out again,
+ *  that we don't break anything in the process. 
+ *
+ * @author Nick Burch (nick at torchbox dot com)
+ */
+public class TestTextRunReWrite extends TestCase {
+       // HSLFSlideShow primed on the test data
+       private HSLFSlideShow hss;
+       // HSLFSlideShow primed on the test data
+       private SlideShow ss;
+       // POIFS primed on the test data
+       private POIFSFileSystem pfs;
+
+       /**
+        * Load up a test PPT file with rich data
+        */
+    public void setUp() throws Exception {
+               String dirname = System.getProperty("HSLF.testdata.path");
+               String filename = dirname + "/Single_Coloured_Page_With_Fonts_and_Alignments.ppt";
+               FileInputStream fis = new FileInputStream(filename);
+               pfs = new POIFSFileSystem(fis);
+               hss = new HSLFSlideShow(pfs);
+               ss = new SlideShow(hss);
+    }
+
+    public void testWritesOutTheSameNonRich() throws Exception {
+       // Grab the first text run on the first sheet
+       TextRun tr1 = ss.getSlides()[0].getTextRuns()[0];
+       TextRun tr2 = ss.getSlides()[0].getTextRuns()[1];
+       
+       // Ensure the text lengths are as we'd expect to start with
+       assertEquals(1, ss.getSlides().length);
+       assertEquals(2, ss.getSlides()[0].getTextRuns().length);
+       assertEquals(30, tr1.getText().length());
+       assertEquals(179, tr2.getText().length());
+       
+       assertEquals(1, tr1.getRichTextRuns().length);
+       assertEquals(30, tr1.getRichTextRuns()[0].getLength());
+       assertEquals(30, tr1.getRichTextRuns()[0].getText().length());
+       assertEquals(31, tr1.getRichTextRuns()[0]._getRawCharacterStyle().getCharactersCovered());
+       assertEquals(31, tr1.getRichTextRuns()[0]._getRawParagraphStyle().getCharactersCovered());
+       
+       // Set the text to be as it is now
+       tr1.setText( tr1.getText() );
+       
+       // Check the text lengths are still right
+       assertEquals(30, tr1.getText().length());
+       assertEquals(179, tr2.getText().length());
+       
+       assertEquals(1, tr1.getRichTextRuns().length);
+       assertEquals(30, tr1.getRichTextRuns()[0].getLength());
+       assertEquals(30, tr1.getRichTextRuns()[0].getText().length());
+       assertEquals(31, tr1.getRichTextRuns()[0]._getRawCharacterStyle().getCharactersCovered());
+       assertEquals(31, tr1.getRichTextRuns()[0]._getRawParagraphStyle().getCharactersCovered());
+       
+       
+               // Write the slideshow out to a byte array
+               ByteArrayOutputStream baos = new ByteArrayOutputStream();
+               ss.write(baos);
+
+               // Build an input stream of it
+               ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
+
+               // Use POIFS to query that lot
+               POIFSFileSystem npfs = new POIFSFileSystem(bais);
+
+               // Check that the "PowerPoint Document" sections have the same size
+               DocumentEntry oProps = (DocumentEntry)pfs.getRoot().getEntry("PowerPoint Document");
+               DocumentEntry nProps = (DocumentEntry)npfs.getRoot().getEntry("PowerPoint Document");
+               assertEquals(oProps.getSize(),nProps.getSize());
+
+               // Check that they contain the same data
+               byte[] _oData = new byte[oProps.getSize()];
+               byte[] _nData = new byte[nProps.getSize()];
+               pfs.createDocumentInputStream("PowerPoint Document").read(_oData);
+               npfs.createDocumentInputStream("PowerPoint Document").read(_nData);
+               for(int i=0; i<_oData.length; i++) {
+                       System.out.println(i + "\t" + Integer.toHexString(i));
+                       assertEquals(_oData[i], _nData[i]);
+               }
+       }
+
+    public void testWritesOutTheSameRich() throws Exception {
+       // Grab the first text run on the first sheet
+       TextRun tr1 = ss.getSlides()[0].getTextRuns()[0];
+       
+       // Get the first rich text run
+       RichTextRun rtr1 = tr1.getRichTextRuns()[0];
+       
+       
+       // Check that the text sizes are as expected
+       assertEquals(1, tr1.getRichTextRuns().length);
+       assertEquals(30, tr1.getText().length());
+       assertEquals(30, tr1.getRichTextRuns()[0].getText().length());
+       assertEquals(30, rtr1.getLength());
+       assertEquals(30, rtr1.getText().length());
+       assertEquals(31, rtr1._getRawCharacterStyle().getCharactersCovered());
+       assertEquals(31, rtr1._getRawParagraphStyle().getCharactersCovered());
+       
+       // Set the text to be as it is now
+       rtr1.setText( rtr1.getText() );
+       rtr1 = tr1.getRichTextRuns()[0];
+       
+       // Check that the text sizes are still as expected
+       assertEquals(1, tr1.getRichTextRuns().length);
+       assertEquals(30, tr1.getText().length());
+       assertEquals(30, tr1.getRichTextRuns()[0].getText().length());
+       assertEquals(30, rtr1.getLength());
+       assertEquals(30, rtr1.getText().length());
+       assertEquals(31, rtr1._getRawCharacterStyle().getCharactersCovered());
+       assertEquals(31, rtr1._getRawParagraphStyle().getCharactersCovered());
+       
+       
+               // Write the slideshow out to a byte array
+               ByteArrayOutputStream baos = new ByteArrayOutputStream();
+               ss.write(baos);
+
+               // Build an input stream of it
+               ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
+
+               // Use POIFS to query that lot
+               POIFSFileSystem npfs = new POIFSFileSystem(bais);
+
+               // Check that the "PowerPoint Document" sections have the same size
+               DocumentEntry oProps = (DocumentEntry)pfs.getRoot().getEntry("PowerPoint Document");
+               DocumentEntry nProps = (DocumentEntry)npfs.getRoot().getEntry("PowerPoint Document");
+               assertEquals(oProps.getSize(),nProps.getSize());
+
+               // Check that they contain the same data
+               byte[] _oData = new byte[oProps.getSize()];
+               byte[] _nData = new byte[nProps.getSize()];
+               pfs.createDocumentInputStream("PowerPoint Document").read(_oData);
+               npfs.createDocumentInputStream("PowerPoint Document").read(_nData);
+               for(int i=0; i<_oData.length; i++) {
+                       System.out.println(i + "\t" + Integer.toHexString(i) + "\t" + _oData[i]);
+                       assertEquals(_oData[i], _nData[i]);
+               }
+       }
+}
index 69453243df3af875e0420cbb96176a148a305914..bcecb790518b288dba609f49e8d66f2c09916289 100644 (file)
@@ -405,13 +405,12 @@ public class TestStyleTextPropAtom extends TestCase {
 
                assertEquals(data_a.length, b.length);
                for(int i=0; i<data_a.length; i++) {
-                       System.out.println(i + "\t" + b[i] + "\t" + data_a[i]);
                        assertEquals(data_a[i],b[i]);
                }
        }
 
 
-       public void testWrite() throws Exception {
+       public void testWriteA() throws Exception {
                StyleTextPropAtom stpa = new StyleTextPropAtom(data_a,0,data_a.length);
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                stpa.writeOut(baos);
@@ -423,7 +422,7 @@ public class TestStyleTextPropAtom extends TestCase {
                }
        }
 
-       public void testLoadWrite() throws Exception {
+       public void testLoadWriteA() throws Exception {
                StyleTextPropAtom stpa = new StyleTextPropAtom(data_a,0,data_a.length);
                stpa.setParentTextSize(data_a_text_len);
 
@@ -436,4 +435,32 @@ public class TestStyleTextPropAtom extends TestCase {
                        assertEquals(data_a[i],b[i]);
                }
        }
+
+
+       public void testWriteB() throws Exception {
+               StyleTextPropAtom stpb = new StyleTextPropAtom(data_b,0,data_b.length);
+               ByteArrayOutputStream baos = new ByteArrayOutputStream();
+               stpb.writeOut(baos);
+               byte[] b = baos.toByteArray();
+
+               assertEquals(data_b.length, b.length);
+               for(int i=0; i<data_b.length; i++) {
+                       assertEquals(data_b[i],b[i]);
+               }
+       }
+
+       public void testLoadWriteB() throws Exception {
+               StyleTextPropAtom stpb = new StyleTextPropAtom(data_b,0,data_b.length);
+               stpb.setParentTextSize(data_b_text_len);
+
+               ByteArrayOutputStream baos = new ByteArrayOutputStream();
+               stpb.writeOut(baos);
+               byte[] b = baos.toByteArray();
+
+               assertEquals(data_b.length, b.length);
+               for(int i=0; i<data_b.length; i++) {
+                       System.out.println(i + "\t" + b[i] + "\t" + data_b[i] + "\t" + Integer.toHexString(b[i]) );
+                       assertEquals(data_b[i],b[i]);
+               }
+       }
 }