Author: nick Date: Sun Feb 12 11:01:16 2006 New Revision: 377216 URL: http://svn.apache.org/viewcvs?rev=377216&view=rev Log: Start to support friendly usermodel interface to rich text character properties
Added: 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 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=377216&r1=377215&r2=377216&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 Feb 12 11:01:16 2006 @@ -282,7 +282,7 @@ // 3rd is normal, so lacks a CharFlagsTextProp assertFalse(b_ch_3.getTextPropList().get(0) instanceof CharFlagsTextProp); - // 4th is underlinds + // 4th is underlined CharFlagsTextProp cf_4_1 = (CharFlagsTextProp)b_ch_4.getTextPropList().get(0); assertEquals(false,cf_4_1.getSubValue(CharFlagsTextProp.BOLD_IDX)); assertEquals(false,cf_4_1.getSubValue(CharFlagsTextProp.ITALIC_IDX)); @@ -293,6 +293,77 @@ assertEquals(false,cf_4_1.getSubValue(CharFlagsTextProp.SHADOW_IDX)); assertEquals(false,cf_4_1.getSubValue(CharFlagsTextProp.STRIKETHROUGH_IDX)); assertEquals(true,cf_4_1.getSubValue(CharFlagsTextProp.UNDERLINE_IDX)); + + // The value for this should be 4 + assertEquals(0x0004, cf_4_1.getValue()); + + // Now make the 4th bold, italic and not underlined + cf_4_1.setSubValue(true, CharFlagsTextProp.BOLD_IDX); + cf_4_1.setSubValue(true, CharFlagsTextProp.ITALIC_IDX); + cf_4_1.setSubValue(false, CharFlagsTextProp.UNDERLINE_IDX); + + assertEquals(true,cf_4_1.getSubValue(CharFlagsTextProp.BOLD_IDX)); + assertEquals(true,cf_4_1.getSubValue(CharFlagsTextProp.ITALIC_IDX)); + assertEquals(false,cf_4_1.getSubValue(CharFlagsTextProp.ENABLE_NUMBERING_1_IDX)); + assertEquals(false,cf_4_1.getSubValue(CharFlagsTextProp.ENABLE_NUMBERING_2_IDX)); + assertEquals(false,cf_4_1.getSubValue(CharFlagsTextProp.RELIEF_IDX)); + assertEquals(false,cf_4_1.getSubValue(CharFlagsTextProp.RESET_NUMBERING_IDX)); + assertEquals(false,cf_4_1.getSubValue(CharFlagsTextProp.SHADOW_IDX)); + assertEquals(false,cf_4_1.getSubValue(CharFlagsTextProp.STRIKETHROUGH_IDX)); + assertEquals(false,cf_4_1.getSubValue(CharFlagsTextProp.UNDERLINE_IDX)); + + // The value should now be 3 + assertEquals(0x0003, cf_4_1.getValue()); + } + + public void testFindAddTextProp() { + StyleTextPropAtom stpb = new StyleTextPropAtom(data_b,0,data_b.length); + stpb.setParentTextSize(data_b_text_len); + + LinkedList b_p_l = stpb.getParagraphStyles(); + TextPropCollection b_p_1 = (TextPropCollection)b_p_l.get(0); + TextPropCollection b_p_2 = (TextPropCollection)b_p_l.get(1); + TextPropCollection b_p_3 = (TextPropCollection)b_p_l.get(2); + TextPropCollection b_p_4 = (TextPropCollection)b_p_l.get(3); + + LinkedList b_ch_l = stpb.getCharacterStyles(); + TextPropCollection b_ch_1 = (TextPropCollection)b_ch_l.get(0); + TextPropCollection b_ch_2 = (TextPropCollection)b_ch_l.get(1); + TextPropCollection b_ch_3 = (TextPropCollection)b_ch_l.get(2); + TextPropCollection b_ch_4 = (TextPropCollection)b_ch_l.get(3); + + // CharFlagsTextProp: 3 doesn't have, 4 does + assertNull(b_ch_3.findByName("char_flags")); + assertNotNull(b_ch_4.findByName("char_flags")); + + // Now add in on 3, should go to front + assertEquals(2, b_ch_3.getTextPropList().size()); + TextProp new_cftp = b_ch_3.addWithName("char_flags"); + assertEquals(3, b_ch_3.getTextPropList().size()); + assertEquals(new_cftp, b_ch_3.getTextPropList().get(0)); + + // alignment: 1 does have, 2 doesn't + assertNotNull(b_p_1.findByName("alignment")); + assertNull(b_p_2.findByName("alignment")); + + // Now add in on 2, should go to the front + assertEquals(1, b_p_2.getTextPropList().size()); + TextProp new_al = b_p_2.addWithName("alignment"); + assertEquals(2, b_p_2.getTextPropList().size()); + assertEquals(new_al, b_p_2.getTextPropList().get(0)); + + // This should go at the end + TextProp new_sa = b_p_2.addWithName("spaceafter"); + assertEquals(3, b_p_2.getTextPropList().size()); + assertEquals(new_sa, b_p_2.getTextPropList().get(2)); + + // Check we get an error with a made up one + try { + b_p_2.addWithName("madeUpOne"); + fail(); + } catch(IllegalArgumentException e) { + // Good, as expected + } } Added: 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=377216&view=auto ============================================================================== --- jakarta/poi/trunk/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestRichTextRun.java (added) +++ jakarta/poi/trunk/src/scratchpad/testcases/org/apache/poi/hslf/usermodel/TestRichTextRun.java Sun Feb 12 11:01:16 2006 @@ -0,0 +1,88 @@ +package org.apache.poi.hslf.usermodel; + +import org.apache.poi.hslf.HSLFSlideShow; +import org.apache.poi.hslf.model.Slide; +import org.apache.poi.hslf.model.TextRun; + +import junit.framework.TestCase; + +/** + * Test that the friendly getters and setters on RichTextRun + * behave as expected. + * (model.TestTextRun tests the other functionality) + * @author Nick Burch (nick at torchbox dot com) + */ +public class TestRichTextRun extends TestCase { + // SlideShow primed on the test data + private SlideShow ss; + private SlideShow ssRich; + private HSLFSlideShow hss; + private HSLFSlideShow hssRich; + + protected void setUp() throws Exception { + String dirname = System.getProperty("HSLF.testdata.path"); + + // Basic (non rich) test file + String filename = dirname + "/basic_test_ppt_file.ppt"; + hss = new HSLFSlideShow(filename); + ss = new SlideShow(hss); + + // Rich test file + filename = dirname + "/Single_Coloured_Page.ppt"; + hssRich = new HSLFSlideShow(filename); + ssRich = new SlideShow(hssRich); + } + + /** + * Test the stuff about getting/setting bold + * on a non rich text run + */ + public void testBoldNonRich() throws Exception { + Slide slideOne = ss.getSlides()[0]; + TextRun[] textRuns = slideOne.getTextRuns(); + RichTextRun rtr = textRuns[0].getRichTextRuns()[0]; + + assertNull(rtr._getRawCharacterStyle()); + assertNull(rtr._getRawParagraphStyle()); + assertFalse(rtr.isBold()); + + // Now set it to not bold + rtr.setBold(false); + assertNotNull(rtr._getRawCharacterStyle()); + assertNotNull(rtr._getRawParagraphStyle()); + assertFalse(rtr.isBold()); + + // And now make it bold + rtr.setBold(true); + assertNotNull(rtr._getRawCharacterStyle()); + assertNotNull(rtr._getRawParagraphStyle()); + assertTrue(rtr.isBold()); + } + + /** + * Test the stuff about getting/setting bold + * on a rich text run + */ + public void testBoldRich() throws Exception { + Slide slideOneR = ssRich.getSlides()[0]; + TextRun[] textRunsR = slideOneR.getTextRuns(); + RichTextRun[] rtrs = textRunsR[1].getRichTextRuns(); + assertEquals(3, rtrs.length); + + assertTrue(rtrs[0].isBold()); + assertFalse(rtrs[1].isBold()); + assertFalse(rtrs[2].isBold()); + + rtrs[0].setBold(true); + rtrs[1].setBold(true); + + assertTrue(rtrs[0].isBold()); + assertTrue(rtrs[1].isBold()); + + rtrs[0].setBold(false); + rtrs[1].setBold(false); + + assertFalse(rtrs[0].isBold()); + assertFalse(rtrs[1].isBold()); + } +} --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] Mailing List: http://jakarta.apache.org/site/mail2.html#poi The Apache Jakarta POI Project: http://jakarta.apache.org/poi/