package org.jabref.logic.importer.fileformat; import java.io.BufferedReader; import java.io.IOException; import java.io.StringReader; import java.net.URISyntaxException; import java.nio.charset.StandardCharsets; import java.nio.file.Path; import java.nio.file.Paths; import java.util.Arrays; import java.util.Collections; import java.util.List; import org.jabref.logic.bibtex.BibEntryAssert; import org.jabref.logic.util.FileExtensions; import org.jabref.model.entry.BibEntry; import org.junit.Before; import org.junit.Test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; public class InspecImportTest { private InspecImporter importer; @Before public void setUp() throws Exception { this.importer = new InspecImporter(); } @Test public void testIsRecognizedFormatAccept() throws IOException, URISyntaxException { List<String> testList = Arrays.asList("InspecImportTest.txt", "InspecImportTest2.txt"); for (String str : testList) { Path file = Paths.get(InspecImportTest.class.getResource(str).toURI()); assertTrue(importer.isRecognizedFormat(file, StandardCharsets.UTF_8)); } } @Test public void testIsRecognizedFormatReject() throws IOException, URISyntaxException { List<String> testList = Arrays.asList("CopacImporterTest1.txt", "CopacImporterTest2.txt", "IEEEImport1.txt", "IsiImporterTest1.isi", "IsiImporterTestInspec.isi", "IsiImporterTestWOS.isi", "IsiImporterTestMedline.isi", "RisImporterTest1.ris", "InspecImportTestFalse.txt"); for (String str : testList) { Path file = Paths.get(InspecImportTest.class.getResource(str).toURI()); assertFalse(importer.isRecognizedFormat(file, StandardCharsets.UTF_8)); } } @Test public void testCompleteBibtexEntryOnJournalPaperImport() throws IOException, URISyntaxException { BibEntry expectedEntry = new BibEntry(); expectedEntry.setType("article"); expectedEntry.setField("title", "The SIS project : software reuse with a natural language approach"); expectedEntry.setField("author", "Prechelt, Lutz"); expectedEntry.setField("year", "1992"); expectedEntry.setField("abstract", "Abstrakt"); expectedEntry.setField("keywords", "key"); expectedEntry.setField("journal", "10000"); expectedEntry.setField("pages", "20"); expectedEntry.setField("volume", "19"); BibEntryAssert.assertEquals(Collections.singletonList(expectedEntry), InspecImportTest.class.getResource("InspecImportTest2.txt"), importer); } @Test public void importConferencePaperGivesInproceedings() throws IOException { String testInput = "Record.*INSPEC.*\n" + "\n" + "RT ~ Conference-Paper\n" + "AU ~ Prechelt, Lutz"; BibEntry expectedEntry = new BibEntry(); expectedEntry.setType("Inproceedings"); expectedEntry.setField("author", "Prechelt, Lutz"); try (BufferedReader reader = new BufferedReader(new StringReader(testInput))) { List<BibEntry> entries = importer.importDatabase(reader).getDatabase().getEntries(); assertEquals(Collections.singletonList(expectedEntry), entries); } } @Test public void importMiscGivesMisc() throws IOException { String testInput = "Record.*INSPEC.*\n" + "\n" + "AU ~ Prechelt, Lutz \n" + "RT ~ Misc"; BibEntry expectedEntry = new BibEntry(); expectedEntry.setType("Misc"); expectedEntry.setField("author", "Prechelt, Lutz"); try (BufferedReader reader = new BufferedReader(new StringReader(testInput))) { List<BibEntry> entries = importer.importDatabase(reader).getDatabase().getEntries(); assertEquals(1, entries.size()); BibEntry entry = entries.get(0); assertEquals(expectedEntry, entry); } } @Test public void testGetFormatName() { assertEquals("INSPEC", importer.getName()); } @Test public void testGetCLIId() { assertEquals("inspec", importer.getId()); } @Test public void testsGetExtensions() { assertEquals(FileExtensions.INSPEC, importer.getExtensions()); } @Test public void testGetDescription() { assertEquals("INSPEC format importer.", importer.getDescription()); } }