package org.jabref.model.database;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import org.jabref.model.entry.BibEntry;
import org.jabref.model.entry.BiblatexEntryTypes;
import org.jabref.model.entry.BibtexEntryTypes;
import org.jabref.model.entry.CustomEntryType;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class BibDatabaseModeDetectionTest {
@Test
public void detectBiblatex() {
Collection<BibEntry> entries = Arrays.asList(new BibEntry(BiblatexEntryTypes.MVBOOK.getName()));
assertEquals(BibDatabaseMode.BIBLATEX, BibDatabaseModeDetection.inferMode(BibDatabases.createDatabase(entries)));
}
@Test
public void detectUndistinguishableAsBibtex() {
BibEntry entry = new BibEntry(BibtexEntryTypes.ARTICLE.getName());
entry.setField("title", "My cool paper");
Collection<BibEntry> entries = Arrays.asList(entry);
assertEquals(BibDatabaseMode.BIBTEX, BibDatabaseModeDetection.inferMode(BibDatabases.createDatabase(entries)));
}
@Test
public void detectMixedModeAsBiblatex() {
BibEntry bibtex = new BibEntry(BibtexEntryTypes.ARTICLE.getName());
bibtex.setField("journal", "IEEE Trans. Services Computing");
BibEntry biblatex = new BibEntry(BiblatexEntryTypes.ARTICLE.getName());
biblatex.setField("translator", "Stefan Kolb");
Collection<BibEntry> entries = Arrays.asList(bibtex, biblatex);
assertEquals(BibDatabaseMode.BIBTEX, BibDatabaseModeDetection.inferMode(BibDatabases.createDatabase(entries)));
}
@Test
public void detectUnknownTypeAsBibtex() {
BibEntry entry = new BibEntry(new CustomEntryType("unknowntype", new ArrayList<>(0), new ArrayList<>(0)).getName());
Collection<BibEntry> entries = Arrays.asList(entry);
assertEquals(BibDatabaseMode.BIBTEX, BibDatabaseModeDetection.inferMode(BibDatabases.createDatabase(entries)));
}
@Test
public void ignoreUnknownTypesForBibtexDecision() {
BibEntry custom = new BibEntry(new CustomEntryType("unknowntype", new ArrayList<>(0), new ArrayList<>(0)).getName());
BibEntry bibtex = new BibEntry(BibtexEntryTypes.ARTICLE.getName());
BibEntry biblatex = new BibEntry(BiblatexEntryTypes.ARTICLE.getName());
Collection<BibEntry> entries = Arrays.asList(custom, bibtex, biblatex);
assertEquals(BibDatabaseMode.BIBTEX, BibDatabaseModeDetection.inferMode(BibDatabases.createDatabase(entries)));
}
@Test
public void ignoreUnknownTypesForBiblatexDecision() {
BibEntry custom = new BibEntry(new CustomEntryType("unknowntype", new ArrayList<>(0), new ArrayList<>(0)).getName());
BibEntry bibtex = new BibEntry(BibtexEntryTypes.ARTICLE.getName());
BibEntry biblatex = new BibEntry(BiblatexEntryTypes.MVBOOK.getName());
Collection<BibEntry> entries = Arrays.asList(custom, bibtex, biblatex);
assertEquals(BibDatabaseMode.BIBLATEX, BibDatabaseModeDetection.inferMode(BibDatabases.createDatabase(entries)));
}
}