package org.gbif.dwca.record; import org.gbif.dwc.terms.DwcTerm; import org.gbif.dwca.io.ArchiveField; import org.gbif.dwca.record.DarwinCoreRecord; import org.gbif.dwca.record.RecordImpl; import java.util.Date; import java.util.HashSet; import java.util.Set; import com.google.common.collect.ImmutableSet; import org.junit.Test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; public class DarwinCoreRecordTest { @Test public void testProperties() { final Set<String> IGNORE = ImmutableSet.of(DwcTerm.GROUP_MEASUREMENTORFACT, DwcTerm.GROUP_RESOURCERELATIONSHIP); DarwinCoreRecord dwc = new DarwinCoreRecord(); for (DwcTerm t : DwcTerm.values()) { // only test non class terms if (t.isClass()) { continue; } if (IGNORE.contains(t.getGroup())) { try { dwc.getProperty(t); fail("term " + t.qualifiedName() + " should not exist on DarwinCoreRecord"); } catch (IllegalArgumentException e) { // expected } } else { String val = new Date().toString(); dwc.setProperty(t, val); assertEquals("missing term " + t.qualifiedName(), val, dwc.getProperty(t)); } } } @Test public void testDefaultValue() { final String DATASET = "ITIS"; ArchiveField id = new ArchiveField(0, DwcTerm.taxonID, null, null); Set<ArchiveField> fields = new HashSet<ArchiveField>(); fields.add(new ArchiveField(1, DwcTerm.datasetName, DATASET, null)); RecordImpl rec = new RecordImpl(id, fields, DwcTerm.Taxon, true, true); String[] row = {"5432", "IPNI"}; rec.setRow(row); assertEquals(row[1], rec.value(DwcTerm.datasetName)); row = new String[] {"5432", null}; rec.setRow(row); assertEquals(DATASET, rec.value(DwcTerm.datasetName)); row = new String[] {"5432", ""}; rec.setRow(row); assertEquals(DATASET, rec.value(DwcTerm.datasetName)); } }