You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@poi.apache.org by ni...@apache.org on 2006/03/19 15:52:44 UTC

svn commit: r386976 - in /jakarta/poi/trunk/src/scratchpad/testcases/org/apache/poi/hslf: record/TestStyleTextPropAtom.java usermodel/TestRichTextRun.java

Author: nick
Date: Sun Mar 19 06:52:41 2006
New Revision: 386976

URL: http://svn.apache.org/viewcvs?rev=386976&view=rev
Log:
Tests to ensure we create empty StyleTextPropAtoms correctly

Modified:
    jakarta/poi/trunk/src/scratchpad/testcases/org/apache/poi/hslf/record/TestStyleTextPropAtom.java
    jakarta/poi/trunk/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestRichTextRun.java

Modified: jakarta/poi/trunk/src/scratchpad/testcases/org/apache/poi/hslf/record/TestStyleTextPropAtom.java
URL: http://svn.apache.org/viewcvs/jakarta/poi/trunk/src/scratchpad/testcases/org/apache/poi/hslf/record/TestStyleTextPropAtom.java?rev=386976&r1=386975&r2=386976&view=diff
==============================================================================
--- jakarta/poi/trunk/src/scratchpad/testcases/org/apache/poi/hslf/record/TestStyleTextPropAtom.java (original)
+++ jakarta/poi/trunk/src/scratchpad/testcases/org/apache/poi/hslf/record/TestStyleTextPropAtom.java Sun Mar 19 06:52:41 2006
@@ -31,20 +31,24 @@
  * @author Nick Burch (nick at torchbox dot com)
  */
 public class TestStyleTextPropAtom extends TestCase {
-	// From a real file: a paragraph with 4 different styles:
-	// ??? (21)
-	// ??? (17)
-	// ??? (16)
-	private byte[] data_a = new byte[] { 0, 0, 0xA1-256, 0x0F, 0x2A, 0, 0, 0,
-      0x36, 00, 00, 00, 00, 00, 00, 00, 
-	  00, 00, 0x15, 00, 00, 00, 00, 00,
-      00, 00, 0x11, 00, 00, 00, 00, 00,
-	  0x04, 00, 00, 00, 00, 0x05, 0x10, 00,
-      00, 00, 00, 00, 0x04, 00, 0xFF-256, 0x33, 00, 0xFE-256
+	// From a real file: a paragraph with 4 different styles
+	private byte[] data_a = new byte[] { 
+	  0, 0, 0xA1-256, 0x0F, 0x2A, 0, 0, 0,
+      0x36, 00, 00, 00, // paragraph is 54 long 
+      00, 00,           // (paragraph reserved field)
+      00, 00, 00, 00,   // it doesn't have any styles
+      0x15, 00, 00, 00, // first char run is 21 long
+      00, 00, 00, 00,   // it doesn't have any styles
+      0x11, 00, 00, 00, // second char run is 17 long
+      00, 00, 0x04, 00, // font.color only
+      00, 00, 00, 0x05, // blue
+      0x10, 00, 00, 00, // third char run is 16 long
+      00, 00, 0x04, 00, // font.color only
+      0xFF-256, 0x33, 00, 0xFE-256 // red
 	};
 	private int data_a_text_len = 54;
 
-	// From a real file: a paragraph with text in 4 different styles:
+	// From a real file: 4 paragraphs with text in 4 different styles:
 	// left aligned+bold (30)
 	// centre aligned+italic+blue (28)
 	// right aligned+red (25)
@@ -363,6 +367,46 @@
 			fail();
 		} catch(IllegalArgumentException e) {
 			// Good, as expected
+		}
+	}
+	
+	/**
+	 * Try to recreate an existing StyleTextPropAtom from the empty
+	 *  constructor, and setting the required properties
+	 */
+	public void testCreateFromScatch() throws Exception {
+		// Start with an empty one
+		StyleTextPropAtom stpa = new StyleTextPropAtom(54);
+		
+		// Don't need to touch the paragraph styles
+		// Add two more character styles
+		LinkedList cs = stpa.getCharacterStyles();
+		
+		// First char style is boring, and 21 long
+		TextPropCollection tpca = (TextPropCollection)cs.get(0);
+		tpca.updateTextSize(21);
+		
+		// Second char style is coloured, 00 00 00 05, and 17 long
+		TextPropCollection tpcb = new TextPropCollection(17);
+		TextProp tpb = tpcb.addWithName("font.color");
+		tpb.setValue(0x05000000);
+		cs.add(tpcb);
+		
+		// Third char style is coloured, FF 33 00 FE, and 16 long
+		TextPropCollection tpcc = new TextPropCollection(16);
+		TextProp tpc = tpcc.addWithName("font.color");
+		tpc.setValue(0xFE0033FF);
+		cs.add(tpcc);
+		
+		// Should now be the same as data_a
+		ByteArrayOutputStream baos = new ByteArrayOutputStream();
+		stpa.writeOut(baos);
+		byte[] b = baos.toByteArray();
+
+		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]);
 		}
 	}
 

Modified: jakarta/poi/trunk/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestRichTextRun.java
URL: http://svn.apache.org/viewcvs/jakarta/poi/trunk/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestRichTextRun.java?rev=386976&r1=386975&r2=386976&view=diff
==============================================================================
--- jakarta/poi/trunk/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestRichTextRun.java (original)
+++ jakarta/poi/trunk/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestRichTextRun.java Sun Mar 19 06:52:41 2006
@@ -1,5 +1,8 @@
 package org.apache.poi.hslf.usermodel;
 
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+
 import org.apache.poi.hslf.HSLFSlideShow;
 import org.apache.poi.hslf.model.Slide;
 import org.apache.poi.hslf.model.TextRun;
@@ -151,5 +154,44 @@
 		assertNotNull(rtr._getRawCharacterStyle());
 		assertNotNull(rtr._getRawParagraphStyle());
 		assertEquals(2, ss.getFontCollection().getChildRecords().length);
+	}
+	
+	public void testChangeWriteRead() throws Exception {
+		HSLFSlideShow[] h = new HSLFSlideShow[] { hss, hssRichA, hssRichB };
+		Slide[] s = new Slide[] { ss.getSlides()[0], ssRichA.getSlides()[0], ssRichB.getSlides()[0] };
+		
+		for(int i=0; i<h.length; i++) {
+			// Change
+			Slide slideOne = s[i];
+			TextRun[] textRuns = slideOne.getTextRuns();
+			RichTextRun rtr = textRuns[0].getRichTextRuns()[0];
+			
+			rtr.setBold(true);
+			rtr.setFontSize(18);
+			rtr.setFontName("Courier");
+			
+			// Write out and back in
+			ByteArrayOutputStream baos = new ByteArrayOutputStream();
+			h[i].write(baos);
+			ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
+			
+			HSLFSlideShow readHSLF = new HSLFSlideShow(bais);
+			SlideShow readS = new SlideShow(readHSLF);
+			
+			// Tweak existing one again, to ensure really worked
+			rtr.setBold(false);
+			rtr.setFontSize(17);
+			rtr.setFontName("CourierZZ");
+			
+			
+			// Check written out/back ing one contains modifications
+			Slide slideOneRR = readS.getSlides()[0];
+			TextRun[] textRunsRR = slideOneRR.getTextRuns();
+			RichTextRun rtrRRa = textRunsRR[0].getRichTextRuns()[0];
+			
+			assertEquals(true, rtrRRa.isBold());
+			assertEquals(18, rtrRRa.getFontSize());
+			assertEquals("Courier", rtrRRa.getFontName());
+		}
 	}
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: poi-dev-unsubscribe@jakarta.apache.org
Mailing List:    http://jakarta.apache.org/site/mail2.html#poi
The Apache Jakarta POI Project: http://jakarta.apache.org/poi/