package tests.net.sf.jabref.imports;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import junit.framework.TestCase;
import net.sf.jabref.BibtexEntry;
import net.sf.jabref.BibtexEntryType;
import net.sf.jabref.Util;
import net.sf.jabref.imports.OAI2Fetcher;
import net.sf.jabref.imports.OAI2Handler;
import org.xml.sax.SAXException;
/**
* Test for OAI2-Handler and Fetcher.
*
* @author Ulrich Stärk
* @author Christian Kopf
* @author Christopher Oezbek
*
* @version $Revision: 2488 $ ($Date: 2007-11-14 01:25:31 +0100 (Mi, 14 Nov 2007) $)
*
*/
public class OAI2ImportTest extends TestCase {
OAI2Handler handler;
BibtexEntry be;
protected SAXParserFactory parserFactory;
protected SAXParser saxParser;
protected void setUp() throws Exception {
parserFactory = SAXParserFactory.newInstance();
saxParser = parserFactory.newSAXParser();
be = new BibtexEntry(Util.createNeutralId(), BibtexEntryType.getType("article"));
handler = new OAI2Handler(be);
}
public void testCorrectLineBreaks() {
assertEquals("Test this", OAI2Fetcher.correctLineBreaks("Test\nthis"));
assertEquals("Test this", OAI2Fetcher.correctLineBreaks("Test \n this"));
assertEquals("Test\nthis", OAI2Fetcher.correctLineBreaks("Test\n\nthis"));
assertEquals("Test\nthis", OAI2Fetcher.correctLineBreaks("Test\n \nthis"));
assertEquals("Test\nthis", OAI2Fetcher.correctLineBreaks(" Test \n \n this "));
}
public void testParse() throws Throwable {
try {
saxParser.parse(this.getClass().getResourceAsStream("oai2.xml"), handler);
assertEquals("hep-ph/0408155", be.getField("eprint"));
assertEquals("G. F. Giudice and A. Riotto and A. Zaffaroni and J. L�pez-Pe�a",
be.getField("author"));
assertEquals("Nucl.Phys. B", be.getField("journal"));
assertEquals("710", be.getField("volume"));
assertEquals("2005", be.getField("year"));
assertEquals("511-525", be.getField("pages"));
// Citekey is only generated if the user says so in the import
// inspection dialog.
assertEquals(null, be.getCiteKey());
assertEquals("Heavy Particles from Inflation", be.getField("title"));
assertNotNull(be.getField("abstract"));
assertEquals("23 pages", be.getField("comments"));
assertEquals("CERN-PH-TH/2004-151", be.getField("reportno"));
} catch (SAXException e) {
throw e.getException();
}
}
public void testOai22xml() throws Exception {
try {
saxParser.parse(this.getClass().getResourceAsStream("oai22.xml"), handler);
assertEquals("2005", be.getField("year"));
} catch (SAXException e) {
throw e.getException();
}
}
public void testOai23xml() throws Throwable {
try {
saxParser.parse(this.getClass().getResourceAsStream("oai23.xml"), handler);
assertEquals("Javier L�pez Pe�a and Gabriel Navarro", be.getField("author").toString());
} catch (SAXException e) {
throw e.getException();
}
}
public void testUrlConstructor() {
OAI2Fetcher fetcher = new OAI2Fetcher();
assertEquals(
"http://export.arxiv.org/oai2?verb=GetRecord&identifier=oai%3AarXiv.org%3Ahep-ph%2F0408155&metadataPrefix=arXiv",
fetcher.constructUrl("hep-ph/0408155"));
assertEquals(
"http://export.arxiv.org/oai2?verb=GetRecord&identifier=oai%3AarXiv.org%3Amath%2F0612188&metadataPrefix=arXiv",
fetcher.constructUrl("math/0612188"));
}
public void testFixKey() {
assertEquals("", OAI2Fetcher.fixKey(""));
assertEquals("test", OAI2Fetcher.fixKey("test"));
assertEquals("math/0601001", OAI2Fetcher.fixKey("math.RA/0601001"));
assertEquals("math/0601001", OAI2Fetcher.fixKey("math.QA/0601001"));
assertEquals("hep-ph/0408155", OAI2Fetcher.fixKey("hep-ph/0408155"));
assertEquals("0709.3040v1", OAI2Fetcher.fixKey("arXiv:0709.3040v1"));
assertEquals("", OAI2Fetcher.fixKey("arXiv:"));
}
public void testOnline() throws InterruptedException {
{
OAI2Fetcher fetcher = new OAI2Fetcher();
be = fetcher.importOai2Entry("math.RA/0612188");
assertNotNull(be);
assertEquals("math/0612188", be.getField("eprint"));
assertEquals("On the classification and properties of noncommutative duplicates", be
.getField("title").toString());
assertEquals("Javier L�pez Pe�a and Gabriel Navarro", be.getField("author").toString());
assertEquals("2007", be.getField("year").toString());
Thread.sleep(20000);
}
{
OAI2Fetcher fetcher = new OAI2Fetcher();
be = fetcher.importOai2Entry("astro-ph/0702080");
assertNotNull(be);
assertEquals("astro-ph/0702080", be.getField("eprint"));
assertEquals(
"Magnetized Hypermassive Neutron Star Collapse: a candidate central engine for short-hard GRBs",
be.getField("title").toString());
Thread.sleep(20000);
}
{
OAI2Fetcher fetcher = new OAI2Fetcher();
be = fetcher.importOai2Entry("math.QA/0601001");
assertNotNull(be);
assertEquals("math/0601001", be.getField("eprint"));
Thread.sleep(20000);
}
{
OAI2Fetcher fetcher = new OAI2Fetcher();
be = fetcher.importOai2Entry("hep-ph/0408155");
assertNotNull(be);
assertEquals("hep-ph/0408155", be.getField("eprint"));
Thread.sleep(20000);
}
{
OAI2Fetcher fetcher = new OAI2Fetcher();
be = fetcher.importOai2Entry("0709.3040");
assertNotNull(be);
assertEquals("2007", be.getField("year"));
assertEquals("#sep#", be.getField("month"));
}
}
}