📄 testrichtextrun.java
字号:
assertTrue(s3rtr0[0]._isParagraphStyleShared()); assertTrue(s3rtr0[1]._isParagraphStyleShared()); assertFalse(s3rtr1[0]._isParagraphStyleShared()); assertTrue(s3rtr2[0]._isParagraphStyleShared()); assertTrue(s3rtr2[1]._isParagraphStyleShared()); assertFalse(s3rtr0[0]._isCharacterStyleShared()); assertFalse(s3rtr0[1]._isCharacterStyleShared()); assertFalse(s3rtr1[0]._isCharacterStyleShared()); assertFalse(s3rtr2[0]._isCharacterStyleShared()); assertFalse(s3rtr2[1]._isCharacterStyleShared()); // On slide seven, we have: // TR: // (text) // TR: // <ps>(text a)</ps><ps>(text a)(text b)</ps> // TR: // (text) TextRun[] s7tr = slideSevenC.getTextRuns(); RichTextRun[] s7rtr0 = s7tr[0].getRichTextRuns(); RichTextRun[] s7rtr1 = s7tr[1].getRichTextRuns(); RichTextRun[] s7rtr2 = s7tr[2].getRichTextRuns(); assertEquals(1, s7rtr0.length); assertEquals(3, s7rtr1.length); assertEquals(1, s7rtr2.length); assertFalse(s7rtr0[0]._isParagraphStyleShared()); assertFalse(s7rtr1[0]._isParagraphStyleShared()); assertTrue(s7rtr1[1]._isParagraphStyleShared()); assertTrue(s7rtr1[2]._isParagraphStyleShared()); assertFalse(s7rtr2[0]._isParagraphStyleShared()); assertFalse(s7rtr0[0]._isCharacterStyleShared()); assertTrue(s7rtr1[0]._isCharacterStyleShared()); assertTrue(s7rtr1[1]._isCharacterStyleShared()); assertFalse(s7rtr1[2]._isCharacterStyleShared()); assertFalse(s7rtr2[0]._isCharacterStyleShared()); } /** * Test that we can do the right things when the paragraph styles * run out before the character styles do, when we tweak something * and write back out. */ public void testParagraphStylesShorterTheCharStylesWrite() throws Exception { assertMatchesSLTWC(ssRichC); assertMatchesFileC(ssRichC); Slide slideSevenC = ssRichC.getSlides()[6]; TextRun[] s7tr = slideSevenC.getTextRuns(); RichTextRun[] s7rtr0 = s7tr[0].getRichTextRuns(); RichTextRun[] s7rtr1 = s7tr[1].getRichTextRuns(); RichTextRun[] s7rtr2 = s7tr[2].getRichTextRuns(); String oldText; // Reset the text on the last run // Need to ensure it's a run that really has styles! oldText = s7rtr2[0].getRawText(); s7rtr2[0].setText( oldText ); assertEquals(oldText, s7rtr2[0].getText()); assertEquals(oldText, s7tr[2].getText()); assertEquals(oldText.length() + 1, s7rtr2[0]._getRawCharacterStyle().getCharactersCovered()); assertEquals(oldText.length() + 1, s7rtr2[0]._getRawParagraphStyle().getCharactersCovered()); assertMatchesSLTWC(ssRichC); assertMatchesFileC(ssRichC); // Reset the text on a shared paragraph oldText = s7rtr1[2].getRawText(); s7rtr1[2].setText( oldText ); assertEquals(oldText, s7rtr1[2].getText()); assertEquals(oldText.length() + 1, s7rtr1[2]._getRawCharacterStyle().getCharactersCovered()); assertMatchesSLTWC(ssRichC); assertMatchesFileC(ssRichC); // Reset the text on a shared paragraph+character s7rtr1[1].setText( s7rtr1[1].getRawText() ); assertMatchesSLTWC(ssRichC); assertMatchesFileC(ssRichC); } /** * Opens a new copy of SlideShow C, writes the active * SlideListWithText out, and compares it to the write * out of the supplied SlideShow. Also compares the * contents. * @param s */ private void assertMatchesSLTWC(SlideShow s) throws Exception { // Grab a new copy of slideshow C SlideShow refC = new SlideShow(new HSLFSlideShow(filenameC)); // Write out the 2nd SLWT in the active document SlideListWithText refSLWT = refC.getDocumentRecord().getSlideListWithTexts()[1]; byte[] raw_slwt = writeRecord(refSLWT); // Write out the same for the supplied slideshow SlideListWithText s_SLWT = s.getDocumentRecord().getSlideListWithTexts()[1]; byte[] s_slwt = writeRecord(s_SLWT); // Check the records are the same assertEquals(refSLWT.getChildRecords().length, s_SLWT.getChildRecords().length); for(int i=0; i<refSLWT.getChildRecords().length; i++) { Record ref_r = refSLWT.getChildRecords()[i]; Record s_r = s_SLWT.getChildRecords()[i]; byte[] r_rb = writeRecord(ref_r); byte[] s_rb = writeRecord(s_r); assertEquals(r_rb.length, s_rb.length); for(int j=0; j<r_rb.length; j++) { assertEquals(r_rb[j],s_rb[j]); } } // Check the bytes are the same assertEquals(raw_slwt.length, s_slwt.length); for(int i=0; i<raw_slwt.length; i++) { assertEquals(raw_slwt[i], s_slwt[i]); } } /** * Checks that the supplied slideshow still matches the bytes * of slideshow c */ private void assertMatchesFileC(SlideShow s) throws Exception { // Disabled, pending fix of bug #39800 System.err.println("Skipping test, as would be marked as failed due to bug #39800");if(false) { // Grab the bytes of the file FileInputStream fin = new FileInputStream(filenameC); ByteArrayOutputStream fb = new ByteArrayOutputStream(); byte[] b = new byte[4096]; int read = 0; while(read != -1) { read = fin.read(b); if(read > 0) { fb.write(b, 0, read); } } byte[] raw_file = fb.toByteArray(); // Now write out the slideshow ByteArrayOutputStream baos = new ByteArrayOutputStream(); s.write(baos); byte[] raw_ss = baos.toByteArray(); // Ensure they're the same assertEquals(raw_file.length, raw_ss.length); for(int i=0; i<raw_file.length; i++) { assertEquals(raw_file[i], raw_ss[i]); }} } private byte[] writeRecord(Record r) throws Exception { ByteArrayOutputStream baos = new ByteArrayOutputStream(); r.writeOut(baos); return baos.toByteArray(); } public void testIndentationLevel() throws Exception { SlideShow ppt = new SlideShow(new HSLFSlideShow(new File(System.getProperty("HSLF.testdata.path"), "ParagraphStylesShorterThanCharStyles.ppt").getPath())); Slide[] sl = ppt.getSlides(); for (int i = 0; i < sl.length; i++) { TextRun[] txt = sl[i].getTextRuns(); for (int j = 0; j < txt.length; j++) { RichTextRun[] rt = txt[j].getRichTextRuns(); for (int k = 0; k < rt.length; k++) { int indent = rt[k].getIndentLevel(); assertTrue(indent >= 0 && indent <= 4 ); } } } } public void testReadParagraphStyles() throws Exception { FileInputStream is = new FileInputStream(new File(System.getProperty("HSLF.testdata.path"), "bullets.ppt")); SlideShow ppt = new SlideShow(is); is.close(); assertTrue("No Exceptions while reading file", true); RichTextRun rt; TextRun[] txt; Slide[] slide = ppt.getSlides(); assertEquals(2, slide.length); txt = slide[0].getTextRuns(); assertEquals(2, txt.length); assertEquals("Title text", txt[0].getRawText()); assertEquals(1, txt[0].getRichTextRuns().length); rt = txt[0].getRichTextRuns()[0]; assertFalse(rt.isBullet()); assertEquals( "This is a text placeholder that \r" + "follows the design pattern\r" + "Defined in the slide master\r" + "and has bullets by default", txt[1].getRawText()); assertEquals(1, txt[1].getRichTextRuns().length); rt = txt[1].getRichTextRuns()[0]; assertEquals('\u2022', rt.getBulletChar()); assertTrue(rt.isBullet()); txt = slide[1].getTextRuns(); assertEquals(2, txt.length); assertEquals( "I\u2019m a text box\r" + "With bullets\r" + "That follow the design pattern\r" + "From the slide master", txt[0].getRawText()); assertEquals(1, txt[0].getRichTextRuns().length); rt = txt[0].getRichTextRuns()[0]; assertTrue(rt.isBullet()); assertEquals('\u2022', rt.getBulletChar()); assertEquals( "I\u2019m a text box with user-defined\r" + "bullet character", txt[1].getRawText()); assertEquals(1, txt[1].getRichTextRuns().length); rt = txt[1].getRichTextRuns()[0]; assertTrue(rt.isBullet()); assertEquals('\u263A', rt.getBulletChar()); } public void testSetParagraphStyles() throws Exception { SlideShow ppt = new SlideShow(); Slide slide = ppt.createSlide(); TextBox shape = new TextBox(); RichTextRun rt = shape.getTextRun().getRichTextRuns()[0]; shape.setText( "Hello, World!\r" + "This should be\r" + "Multiline text"); rt.setFontSize(42); rt.setBullet(true); rt.setTextOffset(50); rt.setBulletOffset(0); rt.setBulletChar('\u263A'); slide.addShape(shape); assertEquals(42, rt.getFontSize()); assertEquals(true, rt.isBullet()); assertEquals(50, rt.getTextOffset()); assertEquals(0, rt.getBulletOffset()); assertEquals('\u263A', rt.getBulletChar()); shape.setAnchor(new java.awt.Rectangle(50, 50, 500, 300)); slide.addShape(shape); //serialize and read again ByteArrayOutputStream out = new ByteArrayOutputStream(); ppt.write(out); out.close(); ppt = new SlideShow(new ByteArrayInputStream(out.toByteArray())); slide = ppt.getSlides()[0]; shape = (TextBox)slide.getShapes()[0]; rt = shape.getTextRun().getRichTextRuns()[0]; assertEquals(42, rt.getFontSize()); assertEquals(true, rt.isBullet()); assertEquals(50, rt.getTextOffset()); assertEquals(0, rt.getBulletOffset()); assertEquals('\u263A', rt.getBulletChar()); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -