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.vocabulary; 017 018import org.junit.jupiter.api.Test; 019 020import static org.junit.jupiter.api.Assertions.assertEquals; 021import static org.junit.jupiter.api.Assertions.assertFalse; 022import static org.junit.jupiter.api.Assertions.assertTrue; 023 024public class RankTest { 025 026 @Test 027 public void testIsInfraspecific() { 028 assertFalse(Rank.SUPERFAMILY.isInfraspecific()); 029 assertFalse(Rank.KINGDOM.isInfraspecific()); 030 assertFalse(Rank.INFRAGENERIC_NAME.isInfraspecific()); 031 assertFalse(Rank.GENUS.isInfraspecific()); 032 assertFalse(Rank.SPECIES.isInfraspecific()); 033 assertTrue(Rank.SUBFORM.isInfraspecific()); 034 assertTrue(Rank.STRAIN.isInfraspecific()); 035 assertTrue(Rank.CULTIVAR.isInfraspecific()); 036 assertTrue(Rank.VARIETY.isInfraspecific()); 037 assertTrue(Rank.PATHOVAR.isInfraspecific()); 038 for (Rank r : Rank.values()) { 039 if (r.isRestrictedToCode() == NomenclaturalCode.BACTERIAL) 040 assertTrue(r.isInfraspecific()); 041 } 042 } 043 044 @Test 045 public void testIsLinnean2() { 046 for (Rank r : Rank.values()) { 047 System.out.print("'"+r.name()+"', "); 048 } 049 050 } 051 @Test 052 public void testIsLinnean() { 053 assertTrue(Rank.KINGDOM.isLinnean()); 054 assertTrue(Rank.PHYLUM.isLinnean()); 055 assertTrue(Rank.CLASS.isLinnean()); 056 assertTrue(Rank.ORDER.isLinnean()); 057 assertTrue(Rank.FAMILY.isLinnean()); 058 assertTrue(Rank.GENUS.isLinnean()); 059 assertTrue(Rank.SPECIES.isLinnean()); 060 assertFalse(Rank.SUBSECTION.isLinnean()); 061 assertFalse(Rank.SUBGENUS.isLinnean()); 062 assertFalse(Rank.SUPERFAMILY.isLinnean()); 063 assertFalse(Rank.INFRAGENERIC_NAME.isLinnean()); 064 assertFalse(Rank.PATHOVAR.isLinnean()); 065 assertFalse(Rank.CHEMOFORM.isLinnean()); 066 } 067 068 @Test 069 public void testIsDwC() { 070 assertTrue(Rank.DWC_RANKS.contains(Rank.KINGDOM)); 071 assertTrue(Rank.DWC_RANKS.contains(Rank.PHYLUM)); 072 assertTrue(Rank.DWC_RANKS.contains(Rank.CLASS)); 073 assertTrue(Rank.DWC_RANKS.contains(Rank.ORDER)); 074 assertTrue(Rank.DWC_RANKS.contains(Rank.FAMILY)); 075 assertTrue(Rank.DWC_RANKS.contains(Rank.GENUS)); 076 assertTrue(Rank.DWC_RANKS.contains(Rank.SUBGENUS)); 077 assertTrue(Rank.DWC_RANKS.contains(Rank.SPECIES)); 078 } 079 080 @Test 081 public void testIsSpeciesOrBelow() { 082 assertFalse(Rank.SUPERFAMILY.isSpeciesOrBelow()); 083 assertFalse(Rank.KINGDOM.isSpeciesOrBelow()); 084 assertFalse(Rank.INFRAGENERIC_NAME.isSpeciesOrBelow()); 085 assertFalse(Rank.GENUS.isSpeciesOrBelow()); 086 assertTrue(Rank.SPECIES.isSpeciesOrBelow()); 087 assertTrue(Rank.SUBFORM.isSpeciesOrBelow()); 088 assertTrue(Rank.STRAIN.isSpeciesOrBelow()); 089 assertTrue(Rank.CULTIVAR.isSpeciesOrBelow()); 090 assertTrue(Rank.VARIETY.isSpeciesOrBelow()); 091 assertTrue(Rank.PATHOVAR.isSpeciesOrBelow()); 092 assertTrue(Rank.NATIO.isSpeciesOrBelow()); 093 assertTrue(Rank.GREX.isSpeciesOrBelow()); 094 } 095 096 @Test 097 public void testIsLegacy() { 098 assertTrue(Rank.NATIO.isLegacy()); 099 assertTrue(Rank.PROLES.isLegacy()); 100 } 101 102 @Test 103 public void testIsInfrageneric() { 104 assertFalse(Rank.SUPERFAMILY.isInfrageneric()); 105 assertFalse(Rank.FAMILY.isInfrageneric()); 106 assertFalse(Rank.SUPRAGENERIC_NAME.isInfrageneric()); 107 assertFalse(Rank.SUBFAMILY.isInfrageneric()); 108 assertFalse(Rank.TRIBE.isInfrageneric()); 109 assertFalse(Rank.GENUS.isInfrageneric()); 110 111 assertTrue(Rank.SUBGENUS.isInfrageneric()); 112 assertTrue(Rank.INFRAGENERIC_NAME.isInfrageneric()); 113 assertTrue(Rank.SPECIES.isInfrageneric()); 114 assertTrue(Rank.SUBFORM.isInfrageneric()); 115 assertTrue(Rank.STRAIN.isInfrageneric()); 116 assertTrue(Rank.CULTIVAR.isInfrageneric()); 117 assertTrue(Rank.VARIETY.isInfrageneric()); 118 } 119 120 @Test 121 public void testIsSuprageneric() { 122 assertTrue(Rank.SUPERFAMILY.isSuprageneric()); 123 assertTrue(Rank.KINGDOM.isSuprageneric()); 124 assertTrue(Rank.PHYLUM.isSuprageneric()); 125 assertTrue(Rank.SUPERFAMILY.isSuprageneric()); 126 assertTrue(Rank.SUPRAGENERIC_NAME.isSuprageneric()); 127 assertTrue(Rank.TRIBE.isSuprageneric()); 128 assertTrue(Rank.SUBFAMILY.isSuprageneric()); 129 assertFalse(Rank.INFRAGENERIC_NAME.isSuprageneric()); 130 assertFalse(Rank.GENUS.isSuprageneric()); 131 assertFalse(Rank.SPECIES.isSuprageneric()); 132 assertFalse(Rank.SUBFORM.isSuprageneric()); 133 assertFalse(Rank.STRAIN.isSuprageneric()); 134 assertFalse(Rank.CULTIVAR.isSuprageneric()); 135 assertFalse(Rank.VARIETY.isSuprageneric()); 136 } 137 138 @Test 139 public void testIsUncomparable() { 140 assertFalse(Rank.KINGDOM.isUncomparable()); 141 assertFalse(Rank.PHYLUM.isUncomparable()); 142 assertFalse(Rank.CLASS.isUncomparable()); 143 assertFalse(Rank.ORDER.isUncomparable()); 144 assertFalse(Rank.FAMILY.isUncomparable()); 145 assertFalse(Rank.GENUS.isUncomparable()); 146 assertFalse(Rank.SPECIES.isUncomparable()); 147 assertFalse(Rank.SUBSECTION.isUncomparable()); 148 assertFalse(Rank.SUBGENUS.isUncomparable()); 149 assertFalse(Rank.SUPERFAMILY.isUncomparable()); 150 assertTrue(Rank.INFRAGENERIC_NAME.isUncomparable()); 151 } 152 153 @Test 154 public void testHigher() { 155 assertFalse(Rank.SUPERFAMILY.higherThan(Rank.KINGDOM)); 156 assertFalse(Rank.SUPERFAMILY.higherThan(Rank.KINGDOM)); 157 assertFalse(Rank.SPECIES.higherThan(Rank.SUBGENUS)); 158 159 assertTrue(Rank.INFRASPECIFIC_NAME.higherThan(Rank.VARIETY)); 160 assertTrue(Rank.SUPERFAMILY.higherThan(Rank.FAMILY)); 161 assertTrue(Rank.SPECIES.higherThan(Rank.VARIETY)); 162 assertTrue(Rank.GENUS.higherThan(Rank.INFRAGENERIC_NAME)); 163 164 int expectedHigher = Rank.DWC_RANKS.size() - 1; 165 for (Rank r : Rank.DWC_RANKS) { 166 int higherCount = 0; 167 for (Rank r2 : Rank.DWC_RANKS) { 168 if (r.higherThan(r2)) { 169 higherCount++; 170 } 171 } 172 assertEquals(expectedHigher, higherCount); 173 expectedHigher--; 174 } 175 176 // questionable 177 assertFalse(Rank.UNRANKED.higherThan(Rank.VARIETY)); 178 } 179 180}