package org.jabref.logic.importer.fetcher; import java.io.InputStream; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.Optional; import org.jabref.logic.bibtex.BibEntryAssert; import org.jabref.logic.importer.fileformat.GvkParser; import org.jabref.model.entry.BibEntry; import org.junit.Assert; import org.junit.Test; public class GvkParserTest { private void doTest(String xmlName, int expectedSize, List<String> resourceNames) throws Exception { try (InputStream is = GvkParserTest.class.getResourceAsStream(xmlName)) { GvkParser parser = new GvkParser(); List<BibEntry> entries = parser.parseEntries(is); Assert.assertNotNull(entries); Assert.assertEquals(expectedSize, entries.size()); int i = 0; for (String resourceName : resourceNames) { BibEntryAssert.assertEquals(GvkParserTest.class, resourceName, entries.get(i)); i++; } } } @Test public void emptyResult() throws Exception { doTest("gvk_empty_result_because_of_bad_query.xml", 0, Collections.emptyList()); } @Test public void resultFor797485368() throws Exception { doTest("gvk_result_for_797485368.xml", 1, Collections.singletonList("gvk_result_for_797485368.bib")); } @Test public void testGMP() throws Exception { doTest("gvk_gmp.xml", 2, Arrays.asList("gvk_gmp.1.bib", "gvk_gmp.2.bib")); } @Test public void subTitleTest() throws Exception { try (InputStream is = GvkParserTest.class.getResourceAsStream("gvk_artificial_subtitle_test.xml")) { GvkParser parser = new GvkParser(); List<BibEntry> entries = parser.parseEntries(is); Assert.assertNotNull(entries); Assert.assertEquals(5, entries.size()); BibEntry entry = entries.get(0); Assert.assertEquals(Optional.empty(), entry.getField("subtitle")); entry = entries.get(1); Assert.assertEquals(Optional.of("C"), entry.getField("subtitle")); entry = entries.get(2); Assert.assertEquals(Optional.of("Word"), entry.getField("subtitle")); entry = entries.get(3); Assert.assertEquals(Optional.of("Word1 word2"), entry.getField("subtitle")); entry = entries.get(4); Assert.assertEquals(Optional.of("Word1 word2"), entry.getField("subtitle")); } } }