package org.gbif.occurrence.common;
import org.gbif.api.vocabulary.Extension;
import org.gbif.api.vocabulary.OccurrenceIssue;
import org.gbif.dwc.terms.DcTerm;
import org.gbif.dwc.terms.DwcTerm;
import org.gbif.dwc.terms.GbifTerm;
import org.gbif.dwc.terms.Term;
import org.gbif.dwc.terms.TermFactory;
import java.util.Set;
import com.google.common.collect.Sets;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
/**
*
*/
public class TermUtilsTest {
@Test
public void testIsInterpretedSourceTerm() throws Exception {
assertTrue(TermUtils.isInterpretedSourceTerm(DwcTerm.country));
assertTrue(TermUtils.isInterpretedSourceTerm(DwcTerm.countryCode));
assertTrue(TermUtils.isInterpretedSourceTerm(DwcTerm.eventDate));
assertFalse(TermUtils.isInterpretedSourceTerm(DwcTerm.occurrenceID));
assertFalse(TermUtils.isInterpretedSourceTerm(DwcTerm.catalogNumber));
}
@Test
public void testInterpretedTerms() throws Exception {
System.out.println("\n" + "\nINTERPRETED TERMS");
Set<Term> terms = Sets.newHashSet();
for (Term t : TermUtils.interpretedTerms()) {
System.out.println(t.toString());
assertFalse("Interpreted term exists twice: " + t, terms.contains(t));
terms.add(t);
}
}
@Test
public void testExtensionTerms() throws Exception {
System.out.println("\n\nEXTENSION TERMS");
for (Extension e : Extension.values()) {
Term term = TermFactory.instance().findTerm(e.getRowType());
System.out.println(term.toString());
assertTrue(TermUtils.isExtensionTerm(term));
}
}
@Test
public void testVerbatimTerms() throws Exception {
System.out.println("\n\nVERBATIM TERMS");
Set<Term> terms = Sets.newHashSet();
for (Term t : TermUtils.verbatimTerms()) {
System.out.println(t.toString());
assertFalse("Verbatim term exists twice: " + t, terms.contains(t));
terms.add(t);
}
}
@Test
public void testIsInterpretedDate() throws Exception {
assertTrue(TermUtils.isInterpretedDate(DwcTerm.eventDate));
assertFalse(TermUtils.isInterpretedDate(DwcTerm.occurrenceID));
}
@Test
public void testIsInterpretedNumerical() throws Exception {
assertTrue(TermUtils.isInterpretedNumerical(DwcTerm.year));
assertFalse(TermUtils.isInterpretedNumerical(DwcTerm.occurrenceID));
}
@Test
public void testHiveColumns() {
assertEquals(GbifTerm.gbifID.simpleName().toLowerCase(), HiveColumnsUtils.getHiveColumn(GbifTerm.gbifID));
assertEquals(DwcTerm.catalogNumber.simpleName().toLowerCase(),
HiveColumnsUtils.getHiveColumn(DwcTerm.catalogNumber));
assertEquals(DcTerm.date.simpleName().toLowerCase() + '_', HiveColumnsUtils.getHiveColumn(DcTerm.date));
assertEquals(OccurrenceIssue.BASIS_OF_RECORD_INVALID.name().toLowerCase(),
HiveColumnsUtils.getHiveColumn(OccurrenceIssue.BASIS_OF_RECORD_INVALID));
}
}