You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
160 lines
8.8 KiB
160 lines
8.8 KiB
package de.anomic.document;
|
|
|
|
import static org.junit.Assert.assertThat;
|
|
import static org.junit.matchers.JUnitMatchers.containsString;
|
|
|
|
import java.io.File;
|
|
import java.io.FileInputStream;
|
|
import java.io.FileNotFoundException;
|
|
import java.io.IOException;
|
|
import java.io.InputStreamReader;
|
|
import java.io.Reader;
|
|
import java.io.UnsupportedEncodingException;
|
|
import java.net.MalformedURLException;
|
|
import net.yacy.document.AbstractParser;
|
|
|
|
import net.yacy.document.Document;
|
|
import net.yacy.document.Parser;
|
|
import net.yacy.document.parser.docParser;
|
|
import net.yacy.document.parser.odtParser;
|
|
import net.yacy.document.parser.ooxmlParser;
|
|
import net.yacy.document.parser.pdfParser;
|
|
import net.yacy.kelondro.data.meta.DigestURI;
|
|
|
|
import org.junit.Test;
|
|
|
|
|
|
public class ParserTest {
|
|
|
|
@Test public void testooxmlParsers() throws FileNotFoundException, Parser.Failure, MalformedURLException, UnsupportedEncodingException, IOException {
|
|
final String[][] testFiles = new String[][] {
|
|
// meaning: filename in test/parsertest, mimetype, title, creator, description,
|
|
new String[]{"umlaute_windows.docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document", "In München steht ein Hofbräuhaus, dort gibt es Bier in Maßkrügen", "", ""},
|
|
new String[]{"umlaute_windows.pptx", "application/vnd.openxmlformats-officedocument.presentationml.presentation", "Folie 1", "", ""},
|
|
};
|
|
|
|
for (final String[] testFile : testFiles) {
|
|
try {
|
|
final String filename = "test/parsertest/" + testFile[0];
|
|
final File file = new File(filename);
|
|
final String mimetype = testFile[1];
|
|
final DigestURI url = new DigestURI("http://localhost/"+filename);
|
|
|
|
AbstractParser p = new ooxmlParser();
|
|
final Document[] docs = p.parse(url, mimetype, null, new FileInputStream(file));
|
|
for (final Document doc: docs) {
|
|
final Reader content = new InputStreamReader(doc.getTextStream(), doc.getCharset());
|
|
final StringBuilder str = new StringBuilder();
|
|
int c;
|
|
while( (c = content.read()) != -1 )
|
|
str.append((char)c);
|
|
|
|
System.out.println("Parsed " + filename + ": " + str);
|
|
assertThat(str.toString(), containsString("In München steht ein Hofbräuhaus, dort gibt es Bier in Maßkrügen"));
|
|
assertThat(doc.dc_title(), containsString(testFile[2]));
|
|
assertThat(doc.dc_creator(), containsString(testFile[3]));
|
|
assertThat(doc.dc_description(), containsString(testFile[4]));
|
|
}
|
|
} catch (InterruptedException ex) {}
|
|
}
|
|
}
|
|
|
|
@Test public void testodtParsers() throws FileNotFoundException, Parser.Failure, MalformedURLException, UnsupportedEncodingException, IOException {
|
|
final String[][] testFiles = new String[][] {
|
|
// meaning: filename in test/parsertest, mimetype, title, creator, description,
|
|
new String[]{"umlaute_linux.odt", "application/vnd.oasis.opendocument.text", "Münchner Hofbräuhaus", "", "Kommentar zum Hofbräuhaus"},
|
|
new String[]{"umlaute_linux.ods", "application/vnd.oasis.opendocument.spreadsheat", "", "", ""},
|
|
new String[]{"umlaute_linux.odp", "application/vnd.oasis.opendocument.presentation", "", "", ""},
|
|
};
|
|
|
|
for (final String[] testFile : testFiles) {
|
|
try {
|
|
final String filename = "test/parsertest/" + testFile[0];
|
|
final File file = new File(filename);
|
|
final String mimetype = testFile[1];
|
|
final DigestURI url = new DigestURI("http://localhost/"+filename);
|
|
|
|
AbstractParser p = new odtParser();
|
|
final Document[] docs = p.parse(url, mimetype, null, new FileInputStream(file));
|
|
for (final Document doc: docs) {
|
|
final Reader content = new InputStreamReader(doc.getTextStream(), doc.getCharset());
|
|
final StringBuilder str = new StringBuilder();
|
|
int c;
|
|
while( (c = content.read()) != -1 )
|
|
str.append((char)c);
|
|
|
|
System.out.println("Parsed " + filename + ": " + str);
|
|
assertThat(str.toString(), containsString("In München steht ein Hofbräuhaus, dort gibt es Bier in Maßkrügen"));
|
|
// assertThat(doc.dc_title(), containsString(testFile[2]));
|
|
assertThat(doc.dc_creator(), containsString(testFile[3]));
|
|
assertThat(doc.dc_description(), containsString(testFile[4]));
|
|
}
|
|
} catch (InterruptedException ex) {}
|
|
}
|
|
}
|
|
|
|
@Test public void testpdfParsers() throws FileNotFoundException, Parser.Failure, MalformedURLException, UnsupportedEncodingException, IOException {
|
|
final String[][] testFiles = new String[][] {
|
|
// meaning: filename in test/parsertest, mimetype, title, creator, description,
|
|
new String[]{"umlaute_linux.pdf", "application/pdf", "", "", ""},
|
|
};
|
|
|
|
for (final String[] testFile : testFiles) {
|
|
try {
|
|
final String filename = "test/parsertest/" + testFile[0];
|
|
final File file = new File(filename);
|
|
final String mimetype = testFile[1];
|
|
final DigestURI url = new DigestURI("http://localhost/"+filename);
|
|
|
|
AbstractParser p = new pdfParser();
|
|
final Document[] docs = p.parse(url, mimetype, null, new FileInputStream(file));
|
|
for (final Document doc: docs) {
|
|
final Reader content = new InputStreamReader(doc.getTextStream(), doc.getCharset());
|
|
final StringBuilder str = new StringBuilder();
|
|
int c;
|
|
while( (c = content.read()) != -1 )
|
|
str.append((char)c);
|
|
|
|
System.out.println("Parsed " + filename + ": " + str);
|
|
assertThat(str.toString(), containsString("In München steht ein Hofbräuhaus, dort gibt es Bier in Maßkrügen"));
|
|
assertThat(doc.dc_title(), containsString(testFile[2]));
|
|
assertThat(doc.dc_creator(), containsString(testFile[3]));
|
|
assertThat(doc.dc_description(), containsString(testFile[4]));
|
|
}
|
|
} catch (InterruptedException ex) {}
|
|
}
|
|
}
|
|
|
|
@Test public void testdocParsers() throws FileNotFoundException, Parser.Failure, MalformedURLException, UnsupportedEncodingException, IOException {
|
|
final String[][] testFiles = new String[][] {
|
|
// meaning: filename in test/parsertest, mimetype, title, creator, description,
|
|
new String[]{"umlaute_windows.doc", "application/msword", "", "", ""},
|
|
};
|
|
|
|
for (final String[] testFile : testFiles) {
|
|
try {
|
|
final String filename = "test/parsertest/" + testFile[0];
|
|
final File file = new File(filename);
|
|
final String mimetype = testFile[1];
|
|
final DigestURI url = new DigestURI("http://localhost/"+filename);
|
|
|
|
AbstractParser p = new docParser();
|
|
final Document[] docs = p.parse(url, mimetype, null, new FileInputStream(file));
|
|
for (final Document doc: docs) {
|
|
final Reader content = new InputStreamReader(doc.getTextStream(), doc.getCharset());
|
|
final StringBuilder str = new StringBuilder();
|
|
int c;
|
|
while( (c = content.read()) != -1 )
|
|
str.append((char)c);
|
|
|
|
System.out.println("Parsed " + filename + ": " + str);
|
|
assertThat(str.toString(), containsString("In München steht ein Hofbräuhaus, dort gibt es Bier in Maßkrügen"));
|
|
assertThat(doc.dc_title(), containsString(testFile[2]));
|
|
assertThat(doc.dc_creator(), containsString(testFile[3]));
|
|
assertThat(doc.dc_description(), containsString(testFile[4]));
|
|
}
|
|
} catch (InterruptedException ex) {}
|
|
}
|
|
}
|
|
}
|