001/* 002 * Copyright 2020 Global Biodiversity Information Facility (GBIF) 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016package org.gbif.api.model.checklistbank; 017 018import org.gbif.api.model.common.Identifier; 019import org.gbif.api.vocabulary.IdentifierType; 020import org.gbif.api.vocabulary.NameUsageIssue; 021import org.gbif.api.vocabulary.Rank; 022import org.gbif.api.vocabulary.TaxonomicStatus; 023import org.gbif.api.vocabulary.ThreatStatus; 024 025import java.net.URI; 026import java.util.ArrayList; 027import java.util.LinkedList; 028import java.util.List; 029import java.util.Queue; 030import java.util.UUID; 031 032import org.junit.jupiter.api.Test; 033 034import static org.junit.jupiter.api.Assertions.assertEquals; 035import static org.junit.jupiter.api.Assertions.assertFalse; 036import static org.junit.jupiter.api.Assertions.assertNotEquals; 037import static org.junit.jupiter.api.Assertions.assertNotNull; 038import static org.junit.jupiter.api.Assertions.assertNull; 039import static org.junit.jupiter.api.Assertions.assertTrue; 040 041/** 042 * This tests the {@link org.gbif.api.model.checklistbank.NameUsageContainer}. 043 */ 044public class NameUsageContainerTest { 045// 046// @Test 047// public void testConstructor() { 048// final UUID checklistKey = UUID.randomUUID(); 049// NameUsage src = new NameUsage(); 050// src.setKey(1234); 051// src.setDatasetKey(checklistKey); 052// src.setKingdom("Animalia"); 053// src.setScientificName("Puma concolor Linné"); 054// src.setReferences(URI.create("http://wisdom.org/1234")); 055// src.setSourceTaxonKey(12345); 056// src.getIssues().add(NameUsageIssue.ACCEPTED_NAME_MISSING); 057// src.getIssues().add(NameUsageIssue.BACKBONE_MATCH_NONE); 058// src.getIssues().add(NameUsageIssue.BASIONYM_AUTHOR_MISMATCH); 059// 060// NameUsageContainer nu = new NameUsageContainer(src); 061// Identifier id1 = new Identifier(); 062// id1.setIdentifier("1234"); 063// id1.setType(IdentifierType.GBIF_PORTAL); 064// nu.getIdentifiers().add(id1); 065// 066// assertEquals(checklistKey, nu.getDatasetKey()); 067// assertEquals((Integer) 1234, nu.getKey()); 068// assertEquals((Integer) 12345, nu.getSourceTaxonKey()); 069// assertNotNull(nu.getReferences()); 070// assertEquals("http://wisdom.org/1234", nu.getReferences().toString()); 071// assertEquals("Animalia", nu.getKingdom()); 072// assertEquals("Puma concolor Linné", nu.getScientificName()); 073// assertEquals(1, nu.getIdentifiers().size()); 074// 075// assertEquals("1234", nu.getIdentifiers().get(0).getIdentifier()); 076// assertEquals(IdentifierType.GBIF_PORTAL, nu.getIdentifiers().get(0).getType()); 077// 078// assertNull(nu.getAccepted()); 079// assertNull(nu.getAcceptedKey()); 080// assertNull(nu.getAccordingTo()); 081// assertNull(nu.getNameType()); 082// assertNull(nu.getKingdomKey()); 083// 084// assertEquals(0, nu.getMedia().size()); 085// assertEquals(0, nu.getDescriptions().size()); 086// assertEquals(0, nu.getDistributions().size()); 087// assertEquals(0, nu.getReferenceList().size()); 088// assertEquals(3, nu.getIssues().size()); 089// } 090// 091// @Test 092// public void testEquals() { 093// Identifier id1 = new Identifier(); 094// id1.setIdentifier("http://www.example.org"); 095// id1.setType(IdentifierType.URL); 096// 097// NameUsageContainer nu1 = new NameUsageContainer(); 098// nu1.setKey(123); 099// nu1.getIdentifiers().add(id1); 100// nu1.setKingdom("Animalia"); 101// 102// NameUsageContainer nu2 = new NameUsageContainer(); 103// nu2.setKey(123); 104// nu2.getIdentifiers().add(id1); 105// nu2.setKingdom("Animalia"); 106// 107// NameUsageMediaObject ru1 = new NameUsageMediaObject(); 108// ru1.setTitle("Puma concolor"); 109// ru1.setSourceTaxonKey(111); 110// NameUsageMediaObject ru2 = new NameUsageMediaObject(); 111// ru2.setTitle("Puma concolor"); 112// ru2.setSourceTaxonKey(111); 113// 114// List<NameUsageMediaObject> lru1 = new ArrayList<>(); 115// lru1.add(ru1); 116// List<NameUsageMediaObject> lru2 = new ArrayList<>(); 117// lru2.add(ru2); 118// 119// nu1.setMedia(lru1); 120// nu2.setMedia(lru2); 121// 122// assertEquals(nu1, nu2); 123// 124// nu2.setKey(124); 125// 126// assertNotEquals(nu2, nu1); 127// } 128// 129// @Test 130// public void testEqualsNonNullity() { 131// NameUsageContainer nu1 = new NameUsageContainer(); 132// assertNotEquals(nu1, null); 133// } 134// 135// @Test 136// public void testEqualsReflexivity() { 137// NameUsageContainer nu = new NameUsageContainer(); 138// assertEquals(nu, nu); 139// 140// nu = new NameUsageContainer(); 141// assertEquals(nu, nu); 142// } 143// 144// @Test 145// public void testEqualsSymmetry() { 146// NameUsageContainer nu1 = new NameUsageContainer(); 147// NameUsageContainer nu2 = new NameUsageContainer(); 148// 149// nu1.setKey(123); 150// nu2.setKey(123); 151// 152// assertEquals(nu1, nu2); 153// assertEquals(nu2, nu1); 154// 155// nu1.setKey(1234); 156// assertNotEquals(nu2, nu1); 157// assertNotEquals(nu1, nu2); 158// } 159// 160// @Test 161// public void testExtinct() { 162// NameUsageContainer nu = new NameUsageContainer(); 163// nu.setKey(6); 164// assertNull(nu.isExtinct()); 165// 166// SpeciesProfile sp = new SpeciesProfile(); 167// sp.setExtinct(true); 168// nu.getSpeciesProfiles().add(sp); 169// assertTrue(nu.isExtinct()); 170// sp.setExtinct(false); 171// assertFalse(nu.isExtinct()); 172// sp.setExtinct(null); 173// assertNull(nu.isExtinct()); 174// 175// nu.getSpeciesProfiles().clear(); 176// 177// for (int i = 1; i < 10; i++) { 178// sp = new SpeciesProfile(); 179// sp.setExtinct(i % 2 == 0); 180// nu.getSpeciesProfiles().add(sp); 181// } 182// 183// assertEquals(9, nu.getSpeciesProfiles().size()); 184// assertFalse(nu.isExtinct()); 185// 186// sp = new SpeciesProfile(); 187// sp.setExtinct(true); 188// nu.getSpeciesProfiles().add(sp); 189// assertEquals(10, nu.getSpeciesProfiles().size()); 190// assertTrue(nu.isExtinct()); 191// } 192// 193// @Test 194// public void testHabitats() { 195// NameUsageContainer nu = new NameUsageContainer(); 196// nu.setKey(6); 197// for (int i = 1; i < 10; i++) { 198// SpeciesProfile sp = new SpeciesProfile(); 199// sp.setHabitat("Habitat " + i); 200// nu.getSpeciesProfiles().add(sp); 201// } 202// 203// assertEquals(9, nu.getSpeciesProfiles().size()); 204// assertEquals(9, nu.getHabitats().size()); 205// 206// SpeciesProfile sp = new SpeciesProfile(); 207// sp.setHabitat("Habitat 5"); 208// nu.getSpeciesProfiles().add(sp); 209// assertEquals(10, nu.getSpeciesProfiles().size()); 210// assertEquals(9, nu.getHabitats().size()); 211// } 212// 213// @Test 214// public void testHigherClassificationMap() { 215// NameUsageContainer nu = new NameUsageContainer(); 216// nu.setKey(6); 217// nu.setScientificName("Vicia faba L."); 218// nu.setParentKey(10); 219// nu.setParent("Vicia subgen. Vicia"); 220// nu.setRank(Rank.SPECIES); 221// nu.setKingdomKey(1); 222// nu.setKingdom("Plantae"); 223// nu.setGenus("Vicia"); 224// nu.setGenusKey(3); 225// nu.setOrder("Fabales"); 226// nu.setOrderKey(4); 227// nu.setSpecies("Vicia faba"); 228// nu.setSpeciesKey(6); 229// nu.setPhylum("Magnoliophyta"); 230// nu.setPhylumKey(5); 231// 232// assertEquals(5, nu.getHigherClassificationMap().size()); 233// assertTrue(nu.getHigherClassificationMap().containsKey(10)); 234// assertFalse(nu.getHigherClassificationMap().containsKey(6)); 235// 236// Queue<Integer> expectedKeyOrder = new LinkedList<>(); 237// expectedKeyOrder.add(1); 238// expectedKeyOrder.add(5); 239// expectedKeyOrder.add(4); 240// expectedKeyOrder.add(3); 241// expectedKeyOrder.add(10); 242// 243// for (Object key : nu.getHigherClassificationMap().keySet()) { 244// assertEquals(expectedKeyOrder.poll(), key); 245// } 246// assertTrue(expectedKeyOrder.isEmpty()); 247// } 248// 249// @Test 250// public void testHigherClassificationMapWithRegularParent() { 251// NameUsageContainer nu = new NameUsageContainer(); 252// nu.setKey(6); 253// nu.setScientificName("Vicia faba L."); 254// nu.setParentKey(3); 255// nu.setParent("Vicia"); 256// nu.setRank(Rank.SPECIES); 257// nu.setKingdomKey(1); 258// nu.setKingdom("Plantae"); 259// nu.setGenus("Vicia"); 260// nu.setGenusKey(3); 261// nu.setOrder("Fabales"); 262// nu.setOrderKey(4); 263// nu.setSpecies("Vicia faba"); 264// nu.setSpeciesKey(6); 265// nu.setPhylum("Magnoliophyta"); 266// nu.setPhylumKey(5); 267// 268// assertEquals(4, nu.getHigherClassificationMap().size()); 269// assertTrue(nu.getHigherClassificationMap().containsKey(3)); 270// 271// Queue<Integer> expectedKeyOrder = new LinkedList<>(); 272// expectedKeyOrder.add(1); 273// expectedKeyOrder.add(5); 274// expectedKeyOrder.add(4); 275// expectedKeyOrder.add(3); 276// 277// for (Object key : nu.getHigherClassificationMap().keySet()) { 278// assertEquals(expectedKeyOrder.poll(), key); 279// } 280// assertTrue(expectedKeyOrder.isEmpty()); 281// } 282// 283// @Test 284// public void testMarine() { 285// NameUsageContainer nu = new NameUsageContainer(); 286// nu.setKey(6); 287// assertNull(nu.isMarine()); 288// 289// SpeciesProfile sp = new SpeciesProfile(); 290// sp.setMarine(true); 291// nu.getSpeciesProfiles().add(sp); 292// assertTrue(nu.isMarine()); 293// sp.setMarine(false); 294// assertFalse(nu.isMarine()); 295// sp.setMarine(null); 296// assertNull(nu.isMarine()); 297// 298// nu.getSpeciesProfiles().clear(); 299// 300// for (int i = 1; i < 10; i++) { 301// sp = new SpeciesProfile(); 302// sp.setMarine(i % 2 == 0); 303// nu.getSpeciesProfiles().add(sp); 304// } 305// 306// assertEquals(9, nu.getSpeciesProfiles().size()); 307// assertFalse(nu.isMarine()); 308// 309// sp = new SpeciesProfile(); 310// sp.setMarine(true); 311// nu.getSpeciesProfiles().add(sp); 312// assertEquals(10, nu.getSpeciesProfiles().size()); 313// assertTrue(nu.isMarine()); 314// } 315// 316// @Test 317// public void testTaxonomicStatus() { 318// NameUsage nu = new NameUsage(); 319// nu.setKey(6); 320// nu.setScientificName("Vicia faba L."); 321// nu.setTaxonomicStatus(null); 322// assertNull(nu.getTaxonomicStatus()); 323// assertFalse(nu.isSynonym()); 324// 325// nu.setTaxonomicStatus(TaxonomicStatus.PROPARTE_SYNONYM); 326// assertEquals(TaxonomicStatus.PROPARTE_SYNONYM, nu.getTaxonomicStatus()); 327// assertTrue(nu.isSynonym()); 328// 329// nu.setTaxonomicStatus(TaxonomicStatus.SYNONYM); 330// assertEquals(TaxonomicStatus.SYNONYM, nu.getTaxonomicStatus()); 331// assertTrue(nu.isSynonym()); 332// 333// nu.setTaxonomicStatus(TaxonomicStatus.DOUBTFUL); 334// assertEquals(TaxonomicStatus.DOUBTFUL, nu.getTaxonomicStatus()); 335// assertFalse(nu.isSynonym()); 336// 337// nu.setProParteKey(432); 338// assertTrue(nu.isProParte()); 339// 340// nu.setTaxonomicStatus(TaxonomicStatus.HETEROTYPIC_SYNONYM); 341// assertEquals(TaxonomicStatus.HETEROTYPIC_SYNONYM, nu.getTaxonomicStatus()); 342// assertTrue(nu.isSynonym()); 343// } 344// 345// @Test 346// public void testTerrestrial() { 347// NameUsageContainer nu = new NameUsageContainer(); 348// nu.setKey(6); 349// assertNull(nu.isTerrestrial()); 350// 351// SpeciesProfile sp = new SpeciesProfile(); 352// sp.setTerrestrial(true); 353// nu.getSpeciesProfiles().add(sp); 354// assertTrue(nu.isTerrestrial()); 355// sp.setTerrestrial(false); 356// assertFalse(nu.isTerrestrial()); 357// sp.setTerrestrial(null); 358// assertNull(nu.isTerrestrial()); 359// 360// nu.getSpeciesProfiles().clear(); 361// 362// for (int i = 1; i < 10; i++) { 363// sp = new SpeciesProfile(); 364// sp.setTerrestrial(i % 2 == 0); 365// nu.getSpeciesProfiles().add(sp); 366// } 367// 368// assertEquals(9, nu.getSpeciesProfiles().size()); 369// assertFalse(nu.isTerrestrial()); 370// 371// sp = new SpeciesProfile(); 372// sp.setTerrestrial(true); 373// nu.getSpeciesProfiles().add(sp); 374// assertEquals(10, nu.getSpeciesProfiles().size()); 375// assertTrue(nu.isTerrestrial()); 376// } 377// 378// @Test 379// public void testFreshwater() { 380// NameUsageContainer nu = new NameUsageContainer(); 381// nu.setKey(6); 382// assertNull(nu.isFreshwater()); 383// 384// SpeciesProfile sp = new SpeciesProfile(); 385// sp.setFreshwater(true); 386// nu.getSpeciesProfiles().add(sp); 387// assertTrue(nu.isFreshwater()); 388// sp.setFreshwater(false); 389// assertFalse(nu.isFreshwater()); 390// sp.setFreshwater(null); 391// assertNull(nu.isFreshwater()); 392// 393// nu.getSpeciesProfiles().clear(); 394// 395// for (int i = 1; i < 10; i++) { 396// sp = new SpeciesProfile(); 397// sp.setFreshwater(i % 2 == 0); 398// nu.getSpeciesProfiles().add(sp); 399// } 400// 401// assertEquals(9, nu.getSpeciesProfiles().size()); 402// assertFalse(nu.isFreshwater()); 403// 404// sp = new SpeciesProfile(); 405// sp.setFreshwater(true); 406// nu.getSpeciesProfiles().add(sp); 407// assertEquals(10, nu.getSpeciesProfiles().size()); 408// assertTrue(nu.isFreshwater()); 409// } 410// 411// @Test 412// public void testThreats() { 413// NameUsageContainer nu = new NameUsageContainer(); 414// nu.setKey(6); 415// 416// assertEquals(0, nu.getDistributions().size()); 417// assertEquals(0, nu.getThreatStatus().size()); 418// 419// Distribution d = new Distribution(); 420// d.setThreatStatus(ThreatStatus.ENDANGERED); 421// nu.getDistributions().add(d); 422// assertEquals(1, nu.getDistributions().size()); 423// assertEquals(1, nu.getThreatStatus().size()); 424// assertEquals(ThreatStatus.ENDANGERED, nu.getThreatStatus().iterator().next()); 425// 426// d = new Distribution(); 427// d.setThreatStatus(ThreatStatus.ENDANGERED); 428// nu.getDistributions().add(d); 429// assertEquals(2, nu.getDistributions().size()); 430// assertEquals(1, nu.getThreatStatus().size()); 431// assertEquals(ThreatStatus.ENDANGERED, nu.getThreatStatus().iterator().next()); 432// 433// d = new Distribution(); 434// d.setThreatStatus(ThreatStatus.CRITICALLY_ENDANGERED); 435// nu.getDistributions().add(d); 436// assertEquals(3, nu.getDistributions().size()); 437// assertEquals(2, nu.getThreatStatus().size()); 438// assertEquals(ThreatStatus.ENDANGERED, nu.getThreatStatus().iterator().next()); 439// } 440 441}