⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testrichtextrun.java

📁 java 读写word excel ppt
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/** Licensed to the Apache Software Foundation (ASF) under one or more* contributor license agreements.  See the NOTICE file distributed with* this work for additional information regarding copyright ownership.* The ASF licenses this file to You 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.usermodel;import java.io.*;import java.awt.*;import org.apache.poi.hslf.HSLFSlideShow;import org.apache.poi.hslf.model.*;import org.apache.poi.hslf.record.Record;import org.apache.poi.hslf.record.SlideListWithText;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 ssRichA;	private SlideShow ssRichB;	private SlideShow ssRichC;	private HSLFSlideShow hss;	private HSLFSlideShow hssRichA;	private HSLFSlideShow hssRichB;	private HSLFSlideShow hssRichC;	private String filenameC;	    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 A		filename = dirname + "/Single_Coloured_Page.ppt";		hssRichA = new HSLFSlideShow(filename);		ssRichA = new SlideShow(hssRichA);				// Rich test file B		filename = dirname + "/Single_Coloured_Page_With_Fonts_and_Alignments.ppt";		hssRichB = new HSLFSlideShow(filename);		ssRichB = new SlideShow(hssRichB);				// Rich test file C - has paragraph styles that run out before		//   the character ones do		filenameC = dirname + "/ParagraphStylesShorterThanCharStyles.ppt";		hssRichC = new HSLFSlideShow(filenameC);		ssRichC = new SlideShow(hssRichC);	}	/**	 * 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 = ssRichA.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());	}		/**	 * Tests getting and setting the font size on rich and non	 *  rich text runs	 */	public void testFontSize() throws Exception {		SlideMaster master;        Slide slideOne = ss.getSlides()[0];		TextRun[] textRuns = slideOne.getTextRuns();		RichTextRun rtr = textRuns[0].getRichTextRuns()[0];				Slide slideOneR = ssRichB.getSlides()[0];		TextRun[] textRunsR = slideOneR.getTextRuns();		RichTextRun rtrRa = textRunsR[0].getRichTextRuns()[0];		RichTextRun rtrRb = textRunsR[1].getRichTextRuns()[0];		RichTextRun rtrRc = textRunsR[1].getRichTextRuns()[3];        String defaultFont = "Arial";		// Start off with rich one		// First run has defaults        assertEquals(44, rtrRa.getFontSize());		assertEquals(defaultFont, rtrRa.getFontName());		// Second is size 20, default font		assertEquals(20, rtrRb.getFontSize());		assertEquals(defaultFont, rtrRb.getFontName());		// Third is size 24, alt font		assertEquals(24, rtrRc.getFontSize());		assertEquals("Times New Roman", rtrRc.getFontName());				// Change 2nd to different size and font		assertEquals(2, ssRichB.getFontCollection().getChildRecords().length); // Default + TNR		rtrRb.setFontSize(18);		rtrRb.setFontName("Courier");		assertEquals(3, ssRichB.getFontCollection().getChildRecords().length); // Default + TNR + Courier		assertEquals(18, rtrRb.getFontSize());		assertEquals("Courier", rtrRb.getFontName());						// Now do non rich one		assertEquals(44, rtr.getFontSize());		assertEquals(defaultFont, rtr.getFontName());		assertEquals(1, ss.getFontCollection().getChildRecords().length); // Default		assertNull(rtr._getRawCharacterStyle());		assertNull(rtr._getRawParagraphStyle());				// Change Font size		rtr.setFontSize(99);		assertEquals(99, rtr.getFontSize());		assertEquals(defaultFont, rtr.getFontName());		assertNotNull(rtr._getRawCharacterStyle());		assertNotNull(rtr._getRawParagraphStyle());		assertEquals(1, ss.getFontCollection().getChildRecords().length); // Default				// Change Font size and name		rtr.setFontSize(25);		rtr.setFontName("Times New Roman");		assertEquals(25, rtr.getFontSize());		assertEquals("Times New Roman", rtr.getFontName());		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");						// Check it took those			assertEquals(true, rtr.isBold());			assertEquals(18, rtr.getFontSize());			assertEquals("Courier", rtr.getFontName());						// 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 it took those changes			assertEquals(false, rtr.isBold());			assertEquals(17, rtr.getFontSize());			assertEquals("CourierZZ", rtr.getFontName());						// Now, look at the one we changed, wrote out, and read back in			// Ensure it does contain our original 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());		}	}		/**	 * Test that we can do the right things when the paragraph styles	 *  run out before the character styles do	 */	public void testParagraphStylesShorterTheCharStyles() {		// Check we have the right number of sheets		Slide[] slides = ssRichC.getSlides();		assertEquals(14, slides.length);				// Check the number of text runs on interesting sheets		Slide slideThreeC = ssRichC.getSlides()[2];		Slide slideSevenC = ssRichC.getSlides()[6];		assertEquals(3, slideThreeC.getTextRuns().length);		assertEquals(5, slideSevenC.getTextRuns().length);				// On slide three, we should have:		// TR:		//   You are an important supplier of various items that I need		//   .		// TR:		//   Source: Internal focus groups		// TR:		//   Illustrative Example		//   .				TextRun[] s3tr = slideThreeC.getTextRuns();		RichTextRun[] s3rtr0 = s3tr[0].getRichTextRuns();		RichTextRun[] s3rtr1 = s3tr[1].getRichTextRuns();		RichTextRun[] s3rtr2 = s3tr[2].getRichTextRuns();				assertEquals(2, s3rtr0.length);		assertEquals(1, s3rtr1.length);		assertEquals(2, s3rtr2.length);				assertEquals("You are an important supplier of various items that I need", s3rtr0[0].getText());		assertEquals("", s3rtr0[1].getText());		assertEquals("Source: Internal focus groups", s3rtr1[0].getText());		assertEquals("Illustrative Example", s3rtr2[0].getText());		assertEquals("", s3rtr2[1].getText());

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -