mirror of https://github.com/apache/poi.git
More rich text related tests
git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@353801 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
b8e7d71490
commit
ababb95a88
|
@ -26,6 +26,8 @@ import org.apache.poi.hslf.HSLFSlideShow;
|
||||||
import org.apache.poi.hslf.record.TextBytesAtom;
|
import org.apache.poi.hslf.record.TextBytesAtom;
|
||||||
import org.apache.poi.hslf.record.TextCharsAtom;
|
import org.apache.poi.hslf.record.TextCharsAtom;
|
||||||
import org.apache.poi.hslf.record.TextHeaderAtom;
|
import org.apache.poi.hslf.record.TextHeaderAtom;
|
||||||
|
import org.apache.poi.hslf.record.StyleTextPropAtom.TextPropCollection;
|
||||||
|
import org.apache.poi.hslf.usermodel.RichTextRun;
|
||||||
import org.apache.poi.hslf.usermodel.SlideShow;
|
import org.apache.poi.hslf.usermodel.SlideShow;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -36,13 +38,22 @@ import org.apache.poi.hslf.usermodel.SlideShow;
|
||||||
public class TestTextRun extends TestCase {
|
public class TestTextRun extends TestCase {
|
||||||
// SlideShow primed on the test data
|
// SlideShow primed on the test data
|
||||||
private SlideShow ss;
|
private SlideShow ss;
|
||||||
|
private SlideShow ssRich;
|
||||||
private HSLFSlideShow hss;
|
private HSLFSlideShow hss;
|
||||||
|
private HSLFSlideShow hssRich;
|
||||||
|
|
||||||
public TestTextRun() throws Exception {
|
public TestTextRun() throws Exception {
|
||||||
String dirname = System.getProperty("HSLF.testdata.path");
|
String dirname = System.getProperty("HSLF.testdata.path");
|
||||||
|
|
||||||
|
// Basic (non rich) test file
|
||||||
String filename = dirname + "/basic_test_ppt_file.ppt";
|
String filename = dirname + "/basic_test_ppt_file.ppt";
|
||||||
HSLFSlideShow hss = new HSLFSlideShow(filename);
|
hss = new HSLFSlideShow(filename);
|
||||||
ss = new SlideShow(hss);
|
ss = new SlideShow(hss);
|
||||||
|
|
||||||
|
// Rich test file
|
||||||
|
filename = dirname + "/Single_Coloured_Page.ppt";
|
||||||
|
hssRich = new HSLFSlideShow(filename);
|
||||||
|
ssRich = new SlideShow(hssRich);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -61,6 +72,17 @@ public class TestTextRun extends TestCase {
|
||||||
// Raw text has \r instead
|
// Raw text has \r instead
|
||||||
assertEquals("This is a test title", textRuns[0].getRawText());
|
assertEquals("This is a test title", textRuns[0].getRawText());
|
||||||
assertEquals("This is a test subtitle\rThis is on page 1", textRuns[1].getRawText());
|
assertEquals("This is a test subtitle\rThis is on page 1", textRuns[1].getRawText());
|
||||||
|
|
||||||
|
|
||||||
|
// Now check on a rich text run
|
||||||
|
Slide slideOneR = ssRich.getSlides()[0];
|
||||||
|
TextRun[] textRunsR = slideOneR.getTextRuns();
|
||||||
|
|
||||||
|
assertEquals(2, textRunsR.length);
|
||||||
|
assertEquals("This is a title, it\u2019s in black", textRunsR[0].getText());
|
||||||
|
assertEquals("This is the subtitle, in bold\nThis bit is blue and italic\nThis bit is red (normal)", textRunsR[1].getText());
|
||||||
|
assertEquals("This is a title, it\u2019s in black", textRunsR[0].getRawText());
|
||||||
|
assertEquals("This is the subtitle, in bold\rThis bit is blue and italic\rThis bit is red (normal)", textRunsR[1].getRawText());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -150,14 +172,96 @@ public class TestTextRun extends TestCase {
|
||||||
* set up for it
|
* set up for it
|
||||||
*/
|
*/
|
||||||
public void testGetRichTextNonRich() throws Exception {
|
public void testGetRichTextNonRich() throws Exception {
|
||||||
// TODO
|
Slide slideOne = ss.getSlides()[0];
|
||||||
|
TextRun[] textRuns = slideOne.getTextRuns();
|
||||||
|
|
||||||
|
assertEquals(2, textRuns.length);
|
||||||
|
|
||||||
|
TextRun trA = textRuns[0];
|
||||||
|
TextRun trB = textRuns[1];
|
||||||
|
|
||||||
|
assertEquals(1, trA.getRichTextRuns().length);
|
||||||
|
assertEquals(1, trB.getRichTextRuns().length);
|
||||||
|
|
||||||
|
RichTextRun rtrA = trA.getRichTextRuns()[0];
|
||||||
|
RichTextRun rtrB = trB.getRichTextRuns()[0];
|
||||||
|
|
||||||
|
assertEquals(trA.getText(), rtrA.getText());
|
||||||
|
assertEquals(trB.getText(), rtrB.getText());
|
||||||
|
|
||||||
|
assertNull(rtrA._getRawCharacterStyle());
|
||||||
|
assertNull(rtrA._getRawParagraphStyle());
|
||||||
|
assertNull(rtrB._getRawCharacterStyle());
|
||||||
|
assertNull(rtrB._getRawParagraphStyle());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests to ensure that the rich text runs are built up correctly
|
* Tests to ensure that the rich text runs are built up correctly
|
||||||
*/
|
*/
|
||||||
public void testGetRichText() throws Exception {
|
public void testGetRichText() throws Exception {
|
||||||
// TODO
|
Slide slideOne = ssRich.getSlides()[0];
|
||||||
|
TextRun[] textRuns = slideOne.getTextRuns();
|
||||||
|
|
||||||
|
assertEquals(2, textRuns.length);
|
||||||
|
|
||||||
|
TextRun trA = textRuns[0];
|
||||||
|
TextRun trB = textRuns[1];
|
||||||
|
|
||||||
|
assertEquals(1, trA.getRichTextRuns().length);
|
||||||
|
assertEquals(3, trB.getRichTextRuns().length);
|
||||||
|
|
||||||
|
RichTextRun rtrA = trA.getRichTextRuns()[0];
|
||||||
|
RichTextRun rtrB = trB.getRichTextRuns()[0];
|
||||||
|
RichTextRun rtrC = trB.getRichTextRuns()[1];
|
||||||
|
RichTextRun rtrD = trB.getRichTextRuns()[2];
|
||||||
|
|
||||||
|
assertEquals(trA.getText(), rtrA.getText());
|
||||||
|
|
||||||
|
assertEquals(trB.getText().substring(0, 30), rtrB.getText());
|
||||||
|
assertEquals(trB.getText().substring(30,58), rtrC.getText());
|
||||||
|
assertEquals(trB.getText().substring(58,82), rtrD.getText());
|
||||||
|
|
||||||
|
assertNull(rtrA._getRawCharacterStyle());
|
||||||
|
assertNull(rtrA._getRawParagraphStyle());
|
||||||
|
assertNotNull(rtrB._getRawCharacterStyle());
|
||||||
|
assertNotNull(rtrB._getRawParagraphStyle());
|
||||||
|
assertNotNull(rtrC._getRawCharacterStyle());
|
||||||
|
assertNotNull(rtrC._getRawParagraphStyle());
|
||||||
|
assertNotNull(rtrD._getRawCharacterStyle());
|
||||||
|
assertNotNull(rtrD._getRawParagraphStyle());
|
||||||
|
|
||||||
|
// Same paragraph styles
|
||||||
|
assertEquals(rtrB._getRawParagraphStyle(), rtrC._getRawParagraphStyle());
|
||||||
|
assertEquals(rtrB._getRawParagraphStyle(), rtrD._getRawParagraphStyle());
|
||||||
|
|
||||||
|
// Different char styles
|
||||||
|
assertFalse( rtrB._getRawCharacterStyle().equals( rtrC._getRawCharacterStyle() ));
|
||||||
|
assertFalse( rtrB._getRawCharacterStyle().equals( rtrD._getRawCharacterStyle() ));
|
||||||
|
assertFalse( rtrC._getRawCharacterStyle().equals( rtrD._getRawCharacterStyle() ));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests to ensure that setting the text where the text isn't rich,
|
||||||
|
* ensuring that everything stays with the same default styling
|
||||||
|
*/
|
||||||
|
public void testSetTextWhereNotRich() throws Exception {
|
||||||
|
Slide slideOne = ss.getSlides()[0];
|
||||||
|
TextRun[] textRuns = slideOne.getTextRuns();
|
||||||
|
TextRun trB = textRuns[1];
|
||||||
|
assertEquals(1, trB.getRichTextRuns().length);
|
||||||
|
|
||||||
|
RichTextRun rtrB = trB.getRichTextRuns()[0];
|
||||||
|
assertEquals(trB.getText(), rtrB.getText());
|
||||||
|
assertNull(rtrB._getRawCharacterStyle());
|
||||||
|
assertNull(rtrB._getRawParagraphStyle());
|
||||||
|
|
||||||
|
// Change text via normal
|
||||||
|
trB.setText("Test Foo Test");
|
||||||
|
rtrB = trB.getRichTextRuns()[0];
|
||||||
|
assertEquals("Test Foo Test", trB.getText());
|
||||||
|
assertEquals("Test Foo Test", rtrB.getText());
|
||||||
|
assertNull(rtrB._getRawCharacterStyle());
|
||||||
|
assertNull(rtrB._getRawParagraphStyle());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -165,7 +269,47 @@ public class TestTextRun extends TestCase {
|
||||||
* sets everything to the same styling
|
* sets everything to the same styling
|
||||||
*/
|
*/
|
||||||
public void testSetTextWhereRich() throws Exception {
|
public void testSetTextWhereRich() throws Exception {
|
||||||
// TODO
|
Slide slideOne = ssRich.getSlides()[0];
|
||||||
|
TextRun[] textRuns = slideOne.getTextRuns();
|
||||||
|
TextRun trB = textRuns[1];
|
||||||
|
assertEquals(3, trB.getRichTextRuns().length);
|
||||||
|
|
||||||
|
RichTextRun rtrB = trB.getRichTextRuns()[0];
|
||||||
|
RichTextRun rtrC = trB.getRichTextRuns()[1];
|
||||||
|
RichTextRun rtrD = trB.getRichTextRuns()[2];
|
||||||
|
TextPropCollection tpBP = rtrB._getRawParagraphStyle();
|
||||||
|
TextPropCollection tpBC = rtrB._getRawCharacterStyle();
|
||||||
|
TextPropCollection tpCP = rtrC._getRawParagraphStyle();
|
||||||
|
TextPropCollection tpCC = rtrC._getRawCharacterStyle();
|
||||||
|
TextPropCollection tpDP = rtrD._getRawParagraphStyle();
|
||||||
|
TextPropCollection tpDC = rtrD._getRawCharacterStyle();
|
||||||
|
|
||||||
|
assertEquals(trB.getText().substring(0, 30), rtrB.getText());
|
||||||
|
assertNotNull(tpBP);
|
||||||
|
assertNotNull(tpBC);
|
||||||
|
assertNotNull(tpCP);
|
||||||
|
assertNotNull(tpCC);
|
||||||
|
assertNotNull(tpDP);
|
||||||
|
assertNotNull(tpDC);
|
||||||
|
assertTrue(tpBP.equals(tpCP));
|
||||||
|
assertTrue(tpBP.equals(tpDP));
|
||||||
|
assertTrue(tpCP.equals(tpDP));
|
||||||
|
assertFalse(tpBC.equals(tpCC));
|
||||||
|
assertFalse(tpBC.equals(tpDC));
|
||||||
|
assertFalse(tpCC.equals(tpDC));
|
||||||
|
|
||||||
|
// Change text via normal
|
||||||
|
trB.setText("Test Foo Test");
|
||||||
|
|
||||||
|
// Ensure now have first style
|
||||||
|
assertEquals(1, trB.getRichTextRuns().length);
|
||||||
|
rtrB = trB.getRichTextRuns()[0];
|
||||||
|
assertEquals("Test Foo Test", trB.getText());
|
||||||
|
assertEquals("Test Foo Test", rtrB.getText());
|
||||||
|
assertNotNull(rtrB._getRawCharacterStyle());
|
||||||
|
assertNotNull(rtrB._getRawParagraphStyle());
|
||||||
|
assertEquals( tpBP, rtrB._getRawParagraphStyle() );
|
||||||
|
assertEquals( tpBC, rtrB._getRawCharacterStyle() );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -173,7 +317,24 @@ public class TestTextRun extends TestCase {
|
||||||
* in a rich text run, that doesn't happen to actually be rich
|
* in a rich text run, that doesn't happen to actually be rich
|
||||||
*/
|
*/
|
||||||
public void testChangeTextInRichTextRunNonRich() throws Exception {
|
public void testChangeTextInRichTextRunNonRich() throws Exception {
|
||||||
// TODO
|
Slide slideOne = ss.getSlides()[0];
|
||||||
|
TextRun[] textRuns = slideOne.getTextRuns();
|
||||||
|
TextRun trB = textRuns[1];
|
||||||
|
assertEquals(1, trB.getRichTextRuns().length);
|
||||||
|
|
||||||
|
RichTextRun rtrB = trB.getRichTextRuns()[0];
|
||||||
|
assertEquals(trB.getText(), rtrB.getText());
|
||||||
|
assertNull(rtrB._getRawCharacterStyle());
|
||||||
|
assertNull(rtrB._getRawParagraphStyle());
|
||||||
|
|
||||||
|
// Change text via rich
|
||||||
|
rtrB.setText("Test Test Test");
|
||||||
|
assertEquals("Test Test Test", trB.getText());
|
||||||
|
assertEquals("Test Test Test", rtrB.getText());
|
||||||
|
|
||||||
|
// Will now have dummy props
|
||||||
|
assertNotNull(rtrB._getRawCharacterStyle());
|
||||||
|
assertNotNull(rtrB._getRawParagraphStyle());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue