package org.jabref.logic.importer.fileformat;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.StringReader;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import org.jabref.model.entry.BibEntry;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameter;
import org.junit.runners.Parameterized.Parameters;
@RunWith(Parameterized.class)
public class BibTeXMLImporterTestTypes {
private BibTeXMLImporter bibteXMLImporter;
@Parameter(value = 0)
public String bibteXMLType;
@Parameter(value = 1)
public String expectedBibType;
@Parameters
public static Collection<String[]> types() {
return Arrays.asList(new String[][] {{"journal", "article"}, {"book section", "inbook"}, {"book", "book"},
{"conference", "inproceedings"}, {"proceedings", "inproceedings"}, {"report", "techreport"},
{"master thesis", "mastersthesis"}, {"thesis", "phdthesis"}, {"master", "misc"}});
}
@Before
public void setUp() throws Exception {
bibteXMLImporter = new BibTeXMLImporter();
}
@Test
public void importConvertsToCorrectBibType() throws IOException {
String bibteXMLInput = "<?xml version=\"1.0\" ?>\n" + "<bibtex:file xmlns:bibtex=\"http://bibtexml.sf.net/\">\n"
+ "<bibtex:entry>\n" + "<bibtex:" + expectedBibType + ">\n"
+ "<bibtex:author>Max Mustermann</bibtex:author>\n" + "<bibtex:keywords>java</bibtex:keywords>\n"
+ "<bibtex:title>Java tricks</bibtex:title>\n" + "<bibtex:year>2016</bibtex:year>\n" + "</bibtex:"
+ expectedBibType + ">\n" + "</bibtex:entry>\n" + "</bibtex:file>";
List<BibEntry> bibEntries = bibteXMLImporter.importDatabase(new BufferedReader(new StringReader(bibteXMLInput)))
.getDatabase().getEntries();
BibEntry entry = new BibEntry();
entry.setField("author", "Max Mustermann");
entry.setField("keywords", "java");
entry.setField("title", "Java tricks");
entry.setField("year", "2016");
entry.setType(expectedBibType);
Assert.assertEquals(Collections.singletonList(entry), bibEntries);
}
}