package org.gbif.checklistbank.cli.normalizer; import org.gbif.api.model.checklistbank.NameUsage; import org.gbif.api.model.checklistbank.VerbatimNameUsage; import org.gbif.api.vocabulary.Extension; import org.gbif.api.vocabulary.Language; import org.gbif.checklistbank.model.UsageExtensions; import org.gbif.dwc.terms.AcTerm; import org.gbif.dwc.terms.DcTerm; import org.gbif.dwc.terms.DwcTerm; import org.gbif.dwc.terms.Term; import org.gbif.dwc.terms.XmpRightsTerm; import java.net.URI; import java.util.Map; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import org.junit.Test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; public class ExtensionInterpreterTest { @Test public void testExpandGenus() throws Exception { assertEquals(null, ExtensionInterpreter.expandGenus(null, "Abies alba")); assertEquals("", ExtensionInterpreter.expandGenus("", "Abies")); assertEquals("Abies alba", ExtensionInterpreter.expandGenus("Abies alba", "Abies negra")); assertEquals("Abies alba", ExtensionInterpreter.expandGenus("Abies alba", null)); assertEquals("Abies alba", ExtensionInterpreter.expandGenus("A alba", "Abies negra")); assertEquals("Abies alba", ExtensionInterpreter.expandGenus("A. alba", "Abies negra")); assertEquals("Abies alba", ExtensionInterpreter.expandGenus("A. alba", "Abies negra")); } @Test public void testEolMedia() throws Exception { ExtensionInterpreter interp = new ExtensionInterpreter(); NameUsage u = new NameUsage(); VerbatimNameUsage v = new VerbatimNameUsage(); Map<Term, String> doc1 = Maps.newHashMap(); doc1.put(DcTerm.type, "http://purl.org/dc/dcmitype/StillImage"); doc1.put(DcTerm.format, "image/jpeg"); doc1.put(DcTerm.language, "en"); doc1.put(DcTerm.identifier, "1013-sp1-Image-1"); doc1.put(DwcTerm.taxonID, "1013-sp1"); doc1.put(AcTerm.accessURI, "http://pwt.pensoft.net//showfigure.php?filename=big_4805.jpg"); doc1.put(AcTerm.furtherInformationURL, "http://dx.doi.org/10.3897/BDJ.1.e1013"); Map<Term, String> doc2 = Maps.newHashMap(); doc2.put(DcTerm.type, "http://purl.org/dc/dcmitype/Text"); doc2.put(DcTerm.format, "text/html"); doc2.put(DcTerm.language, "en"); doc2.put(DcTerm.identifier, "1013-sp1-text-3"); doc2.put(DwcTerm.taxonID, "1013-sp1"); doc2.put(DcTerm.description, "Eupolybothrus cavernicolus is so far known only from the caves Miljacka"); doc2.put(DcTerm.title, "Description of the type locality"); doc2.put(AcTerm.furtherInformationURL, "http://dx.doi.org/10.3897/BDJ.1.e1013"); doc2.put(XmpRightsTerm.UsageTerms, "http://creativecommons.org/licenses/by/4.0/"); v.getExtensions().put(Extension.EOL_MEDIA, Lists.newArrayList(doc1, doc2)); UsageExtensions ext = interp.interpret(u, v); assertEquals(1, ext.media.size()); assertEquals(URI.create("http://pwt.pensoft.net//showfigure.php?filename=big_4805.jpg"), ext.media.get(0).getIdentifier()); assertEquals(URI.create("http://dx.doi.org/10.3897/BDJ.1.e1013"), ext.media.get(0).getReferences()); assertEquals(1, ext.descriptions.size()); assertEquals("Description of the type locality", ext.descriptions.get(0).getType()); assertEquals("http://creativecommons.org/licenses/by/4.0/", ext.descriptions.get(0).getLicense()); assertEquals("Eupolybothrus cavernicolus is so far known only from the caves Miljacka", ext.descriptions.get(0).getDescription()); } @Test public void testVernacularNames() throws Exception { ExtensionInterpreter interp = new ExtensionInterpreter(); NameUsage u = new NameUsage(); VerbatimNameUsage v = new VerbatimNameUsage(); Map<Term, String> v1 = Maps.newHashMap(); v1.put(DwcTerm.vernacularName, "palmeirinha"); v1.put(DcTerm.language, "PORTUGUES"); v1.put(DwcTerm.locality, "Acre"); Map<Term, String> v2 = Maps.newHashMap(); v2.put(DwcTerm.vernacularName, "ubim"); v2.put(DcTerm.language, "PORTUGUES"); v2.put(DwcTerm.locality, "Acre"); v.getExtensions().put(Extension.VERNACULAR_NAME, Lists.newArrayList(v1, v2)); UsageExtensions ext = interp.interpret(u, v); assertEquals(2, ext.vernacularNames.size()); assertTrue(u.getIssues().isEmpty()); assertEquals("palmeirinha", ext.vernacularNames.get(0).getVernacularName()); assertEquals(Language.PORTUGUESE, ext.vernacularNames.get(0).getLanguage()); assertEquals("Acre", ext.vernacularNames.get(0).getArea()); } }