From e5ae354f73552ad442125e3cd538ddd20777586e Mon Sep 17 00:00:00 2001 From: Christian Bartsch Date: Wed, 11 Nov 2015 21:21:24 +0100 Subject: [PATCH] test EndnoteImporter --- .../fileformat/EndnoteImporterTest.java | 145 ++++++++++++++++++ .../fileformat/Endnote.book.example.enw | 16 ++ .../importer/fileformat/Endnote.entries.enw | 42 +++++ .../importer/fileformat/Endnote.pattern.A.enw | 1 + .../importer/fileformat/Endnote.pattern.E.enw | 1 + .../fileformat/Endnote.pattern.no_enw | 1 + 6 files changed, 206 insertions(+) create mode 100644 src/test/java/net/sf/jabref/importer/fileformat/EndnoteImporterTest.java create mode 100644 src/test/resources/net/sf/jabref/importer/fileformat/Endnote.book.example.enw create mode 100644 src/test/resources/net/sf/jabref/importer/fileformat/Endnote.entries.enw create mode 100644 src/test/resources/net/sf/jabref/importer/fileformat/Endnote.pattern.A.enw create mode 100644 src/test/resources/net/sf/jabref/importer/fileformat/Endnote.pattern.E.enw create mode 100644 src/test/resources/net/sf/jabref/importer/fileformat/Endnote.pattern.no_enw diff --git a/src/test/java/net/sf/jabref/importer/fileformat/EndnoteImporterTest.java b/src/test/java/net/sf/jabref/importer/fileformat/EndnoteImporterTest.java new file mode 100644 index 00000000000..fca89d2970d --- /dev/null +++ b/src/test/java/net/sf/jabref/importer/fileformat/EndnoteImporterTest.java @@ -0,0 +1,145 @@ +package net.sf.jabref.importer.fileformat; + +import net.sf.jabref.Globals; +import net.sf.jabref.JabRefPreferences; +import net.sf.jabref.importer.OutputPrinterToNull; +import net.sf.jabref.model.entry.BibEntry; +import org.junit.Before; +import org.junit.Test; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.StandardCharsets; +import java.util.Arrays; +import java.util.List; + +import static org.junit.Assert.*; + + +public class EndnoteImporterTest { + + EndnoteImporter importer; + + @Before + public void setUp() { + Globals.prefs = JabRefPreferences.getInstance(); + importer = new EndnoteImporter(); + } + + @Test + public void testGetFormatName() { + assertEquals("Refer/Endnote", importer.getFormatName()); + } + + @Test + public void testGetCLIId() { + assertEquals("refer", importer.getCLIId()); + } + + @Test + public void testIsRecognizedFormat() throws IOException { + List list = Arrays.asList("Endnote.pattern.A.enw", "Endnote.pattern.E.enw", "Endnote.book.example.enw"); + + for (String str : list) { + try (InputStream is = EndnoteImporterTest.class.getResourceAsStream(str)) { + assertTrue(importer.isRecognizedFormat(is)); + } + } + } + + @Test + public void testIsRecognizedFormatReject() throws IOException { + List list = Arrays.asList("IEEEImport1.txt", "IsiImporterTest1.isi", "IsiImporterTestInspec.isi", + "IsiImporterTestWOS.isi", "IsiImporterTestMedline.isi", "RisImporterTest1.ris", + "Endnote.pattern.no_enw", "empty.pdf", "annotated.pdf"); + + for (String str : list) { + try (InputStream is = EndnoteImporterTest.class.getResourceAsStream(str)) { + assertFalse(importer.isRecognizedFormat(is)); + } + } + } + + @Test + public void testImportEntries0() throws IOException { + try (InputStream is = EndnoteImporterTest.class.getResourceAsStream("Endnote.entries.enw")) { + List bibEntries = importer.importEntries(is, new OutputPrinterToNull()); + + assertEquals(5, bibEntries.size()); + + BibEntry be0 = bibEntries.get(0); + assertEquals("Misc", be0.getType().getName()); + assertEquals("testA0 and testA1", be0.getField("author")); + assertEquals("testE0 and testE1", be0.getField("editor")); + assertEquals("testT", be0.getField("title")); + + BibEntry be1 = bibEntries.get(1); + assertEquals("Misc", be1.getType().getName()); + assertEquals("testC", be1.getField("address")); + assertEquals("testB2", be1.getField("booktitle")); + assertEquals("test8", be1.getField("date")); + assertEquals("test7", be1.getField("edition")); + assertEquals("testJ", be1.getField("journal")); + assertEquals("testD", be1.getField("year")); + + BibEntry be2 = bibEntries.get(2); + assertEquals("Article", be2.getType().getName()); + assertEquals("testB0", be2.getField("journal")); + + BibEntry be3 = bibEntries.get(3); + assertEquals("Book", be3.getType().getName()); + assertEquals("testI0", be3.getField("publisher")); + assertEquals("testB1", be3.getField("series")); + + BibEntry be4 = bibEntries.get(4); + assertEquals("MastersThesis", be4.getType().getName()); + assertEquals("testX", be4.getField("abstract")); + assertEquals("testF", be4.getField("bibtexkey")); + assertEquals("testR", be4.getField("doi")); + assertEquals("testK", be4.getField("keywords")); + assertEquals("testO1", be4.getField("note")); + assertEquals("testN", be4.getField("number")); + assertEquals("testP", be4.getField("pages")); + assertEquals("testI1", be4.getField("school")); + assertEquals("testU", be4.getField("url")); + assertEquals("testV", be4.getField("volume")); + } + } + + @Test + public void testImportEntries1() throws IOException { + String s = "%O Artn\\\\s testO\n%A testA,\n%E testE0, testE1"; + InputStream is = new ByteArrayInputStream(s.getBytes(StandardCharsets.UTF_8)); + List bibEntries = importer.importEntries(is, new OutputPrinterToNull()); + + assertEquals(1, bibEntries.size()); + + BibEntry be = bibEntries.get(0); + assertEquals("Misc", be.getType().getName()); + assertEquals("testA", be.getField("author")); + assertEquals("testE0, testE1", be.getField("editor")); + assertEquals("testO", be.getField("pages")); + } + + @Test + public void testImportEntriesBookExample() throws IOException { + try (InputStream is = EndnoteImporterTest.class.getResourceAsStream("Endnote.book.example.enw")) { + List bibEntries = importer.importEntries(is, new OutputPrinterToNull()); + + assertEquals(1, bibEntries.size()); + + BibEntry be = bibEntries.get(0); + assertEquals("Book", be.getType().getName()); + assertEquals("Heidelberg", be.getField("address")); + assertEquals("Preißel, René and Stachmann, Bjørn", be.getField("author")); + assertEquals("3., aktualisierte und erweiterte Auflage", be.getField("edition")); + assertEquals("Versionsverwaltung", be.getField("keywords")); + assertEquals("XX, 327", be.getField("pages")); + assertEquals("dpunkt.verlag", be.getField("publisher")); + assertEquals("Git : dezentrale Versionsverwaltung im Team : Grundlagen und Workflows", be.getField("title")); + assertEquals("http://d-nb.info/107601965X", be.getField("url")); + assertEquals("2016", be.getField("year")); + } + } +} diff --git a/src/test/resources/net/sf/jabref/importer/fileformat/Endnote.book.example.enw b/src/test/resources/net/sf/jabref/importer/fileformat/Endnote.book.example.enw new file mode 100644 index 00000000000..362e9cd20ef --- /dev/null +++ b/src/test/resources/net/sf/jabref/importer/fileformat/Endnote.book.example.enw @@ -0,0 +1,16 @@ +%0 Book +%A Preißel, René +%A Stachmann, Bjørn +%C Heidelberg +%D 2016 +%I dpunkt.verlag +%K Versionsverwaltung +%L 6H 1249(3) +%P XX, 327 +%T Git : dezentrale Versionsverwaltung im Team : Grundlagen und Workflows +%U http://d-nb.info/107601965X +%7 3., aktualisierte und erweiterte Auflage +%@ 978-3-86490-311-3 +%[ 20151028 +%= 20151125 +%1 UB Vaihingen (geschlossen: 24.12.15 - 3.1.16) \ No newline at end of file diff --git a/src/test/resources/net/sf/jabref/importer/fileformat/Endnote.entries.enw b/src/test/resources/net/sf/jabref/importer/fileformat/Endnote.entries.enw new file mode 100644 index 00000000000..3d51b642450 --- /dev/null +++ b/src/test/resources/net/sf/jabref/importer/fileformat/Endnote.entries.enw @@ -0,0 +1,42 @@ +%0 +%A testA0 +%A testA1 +%E testE0 +%E testE1 +%T testT +%0 Journal +%0 Book Section +%0 Book +%0 Edited Book +%0 Conference +%0 Report +%0 Review +%0 Thesis +%0 Test0 +%7 test7 +%C testC +%D testD +%8 test8 +%J testJ +%J testJ1 +%B testB2 +%0 Journal +%B testB0 +%0 Book +%B testB1 +%I testI0 +%0 Thesis +%I testI1 +%P testP +%V testV +%N testN +%U testU +%R testRw +%R doi:testR +%O Artn \\s testO0 +%O testO1 +%K testK +%X testX +%9 Ph.D. +%9 Masters +%F testF \ No newline at end of file diff --git a/src/test/resources/net/sf/jabref/importer/fileformat/Endnote.pattern.A.enw b/src/test/resources/net/sf/jabref/importer/fileformat/Endnote.pattern.A.enw new file mode 100644 index 00000000000..05d12994667 --- /dev/null +++ b/src/test/resources/net/sf/jabref/importer/fileformat/Endnote.pattern.A.enw @@ -0,0 +1 @@ +%A testA \ No newline at end of file diff --git a/src/test/resources/net/sf/jabref/importer/fileformat/Endnote.pattern.E.enw b/src/test/resources/net/sf/jabref/importer/fileformat/Endnote.pattern.E.enw new file mode 100644 index 00000000000..ae2dd6dfeb5 --- /dev/null +++ b/src/test/resources/net/sf/jabref/importer/fileformat/Endnote.pattern.E.enw @@ -0,0 +1 @@ +%E testE \ No newline at end of file diff --git a/src/test/resources/net/sf/jabref/importer/fileformat/Endnote.pattern.no_enw b/src/test/resources/net/sf/jabref/importer/fileformat/Endnote.pattern.no_enw new file mode 100644 index 00000000000..a7ad66fc07c --- /dev/null +++ b/src/test/resources/net/sf/jabref/importer/fileformat/Endnote.pattern.no_enw @@ -0,0 +1 @@ +%0 \ No newline at end of file