Test for extracting text from slide PPDrawings (to ensure bug 37451 is really fixed)

git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@353796 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Nick Burch 2005-11-13 17:01:54 +00:00
parent b132e8d562
commit efbf7f9f5d

View File

@ -28,40 +28,56 @@ import junit.framework.TestCase;
* @author Nick Burch (nick at torchbox dot com) * @author Nick Burch (nick at torchbox dot com)
*/ */
public class TextExtractor extends TestCase { public class TextExtractor extends TestCase {
// Extractor primed on the test data // Extractor primed on the 2 page basic test data
private PowerPointExtractor ppe; private PowerPointExtractor ppe;
// Extractor primed on the 1 page but text-box'd test data
private PowerPointExtractor ppe2;
public TextExtractor() throws Exception { public TextExtractor() throws Exception {
String dirname = System.getProperty("HSLF.testdata.path"); String dirname = System.getProperty("HSLF.testdata.path");
String filename = dirname + "/basic_test_ppt_file.ppt"; String filename = dirname + "/basic_test_ppt_file.ppt";
ppe = new PowerPointExtractor(filename); ppe = new PowerPointExtractor(filename);
String filename2 = dirname + "/with_textbox.ppt";
ppe2 = new PowerPointExtractor(filename2);
} }
public void testReadSheetText() throws Exception { public void testReadSheetText() throws Exception {
// Basic 2 page example
String sheetText = ppe.getText(); String sheetText = ppe.getText();
String expectText = "This is a test title\nThis is a test subtitle\nThis is on page 1\nThis is the title on page 2\nThis is page two\nIt has several blocks of text\nNone of them have formatting\n"; String expectText = "This is a test title\nThis is a test subtitle\nThis is on page 1\nThis is the title on page 2\nThis is page two\nIt has several blocks of text\nNone of them have formatting\n";
assertEquals(expectText.length(),sheetText.length()); ensureTwoStringsTheSame(expectText, sheetText);
char[] st = sheetText.toCharArray();
char[] et = expectText.toCharArray();
for(int i=0; i<et.length; i++) { // 1 page example with text boxes
System.out.println(i + "\t" + et[i] + " " + st[i]); sheetText = ppe2.getText();
assertEquals(et[i],st[i]); expectText = "Hello, World!!!\nI am just a poor boy\nThis is Times New Roman\nPlain Text \n";
}
assertEquals(expectText,sheetText); ensureTwoStringsTheSame(expectText, sheetText);
} }
public void testReadNoteText() throws Exception { public void testReadNoteText() throws Exception {
// Basic 2 page example
String notesText = ppe.getNotes(); String notesText = ppe.getNotes();
String expectText = "These are the notes for page 1\nThese are the notes on page two, again lacking formatting\n"; String expectText = "These are the notes for page 1\nThese are the notes on page two, again lacking formatting\n";
assertEquals(expectText.length(),notesText.length()); ensureTwoStringsTheSame(expectText, notesText);
char[] nt = notesText.toCharArray();
char[] et = expectText.toCharArray(); // Other one doesn't have notes
for(int i=0; i<et.length; i++) { notesText = ppe2.getNotes();
System.out.println(i + "\t" + et[i] + " " + nt[i]); expectText = "";
assertEquals(et[i],nt[i]);
} ensureTwoStringsTheSame(expectText, notesText);
assertEquals(expectText,notesText);
} }
private void ensureTwoStringsTheSame(String exp, String act) throws Exception {
assertEquals(exp.length(),act.length());
char[] expC = exp.toCharArray();
char[] actC = act.toCharArray();
for(int i=0; i<expC.length; i++) {
System.out.println(i + "\t" + expC[i] + " " + actC[i]);
assertEquals(expC[i],actC[i]);
}
assertEquals(exp,act);
}
} }