1 package org.cateproject.service.format.name;
2 import static org.junit.Assert.assertEquals;
3 import static org.junit.Assert.assertNull;
4 import junit.framework.TestCase;
5
6 import org.junit.Before;
7 import org.junit.BeforeClass;
8 import org.junit.Test;
9
10 import eu.etaxonomy.cdm.model.agent.Person;
11 import eu.etaxonomy.cdm.model.common.DefaultTermInitializer;
12 import eu.etaxonomy.cdm.model.common.Language;
13 import eu.etaxonomy.cdm.model.name.BotanicalName;
14 import eu.etaxonomy.cdm.model.name.Rank;
15
16 public class TaxonNameFormatterImplTest {
17
18 private BotanicalName arum;
19 private BotanicalName arumApulum;
20 private BotanicalName arumItalicum;
21 private BotanicalName arumItalicumSSPItalicum;
22 private BotanicalName arumSooi;
23 private BotanicalName cryptocorynePurpureaNothovarBorneoensis;
24 private BotanicalNameFormatter botanicalFormatter;
25
26 @BeforeClass
27 public static void beforeClass() {
28 DefaultTermInitializer initalizer = new DefaultTermInitializer();
29 initalizer.initialize();
30 }
31
32 @Before
33 public void setUp() {
34 botanicalFormatter = new BotanicalNameFormatter();
35 Rank.SUBSPECIES().getRepresentation(Language.DEFAULT()).setAbbreviatedLabel("ssp.");
36 Rank.SPECIES().getRepresentation(Language.DEFAULT()).setAbbreviatedLabel("sp.");
37 Rank.VARIETY().getRepresentation(Language.DEFAULT()).setAbbreviatedLabel("var.");
38
39 arum = BotanicalName.NewInstance(Rank.GENUS());
40 arum.setGenusOrUninomial("Arum");
41 arum.setHybridFormula(false);
42
43 arumItalicum = BotanicalName.NewInstance(Rank.SPECIES());
44 arumItalicum.setRank(Rank.SPECIES());
45 arumItalicum.setNameCache("Arum italicum");
46 arumItalicum.setGenusOrUninomial("Arum");
47 arumItalicum.setSpecificEpithet("italicum");
48 arumItalicum.setHybridFormula(false);
49
50 Person mill = Person.NewTitledInstance("Philip Miller");
51 mill.setNomenclaturalTitle("Mill.");
52 arumItalicum.setBasionymAuthorTeam(mill);
53
54 Person carano = Person.NewTitledInstance("Carano");
55 carano.setNomenclaturalTitle("Carano");
56
57 Person pcBoyce = Person.NewTitledInstance("P.C.Boyce");
58 pcBoyce.setNomenclaturalTitle("P.C.Boyce");
59
60 arumApulum = BotanicalName.NewInstance(Rank.SPECIES());
61 arumApulum.setNameCache("Arum apulum");
62 arumApulum.setGenusOrUninomial("Arum");
63 arumApulum.setSpecificEpithet("apulum");
64 arumApulum.setHybridFormula(false);
65 arumApulum.setBasionymAuthorTeam(carano);
66 arumApulum.setCombinationAuthorTeam(pcBoyce);
67
68 arumItalicumSSPItalicum = BotanicalName.NewInstance(Rank.SUBSPECIES());
69 arumItalicumSSPItalicum.setRank(Rank.SUBSPECIES());
70 arumItalicumSSPItalicum.setNameCache("Arum italicum italicum");
71 arumItalicumSSPItalicum.setGenusOrUninomial("Arum");
72 arumItalicumSSPItalicum.setSpecificEpithet("italicum");
73 arumItalicumSSPItalicum.setInfraSpecificEpithet("italicum");
74 arumItalicumSSPItalicum.setHybridFormula(false);
75
76 arumSooi = BotanicalName.NewInstance(Rank.SPECIES());
77 arumSooi.setNameCache("Arum sooi");
78 arumSooi.setGenusOrUninomial("Arum");
79 arumSooi.setSpecificEpithet("sooi");
80 arumSooi.setHybridFormula(true);
81
82 cryptocorynePurpureaNothovarBorneoensis = BotanicalName.NewInstance(Rank.VARIETY());
83 cryptocorynePurpureaNothovarBorneoensis.setRank(Rank.VARIETY());
84 cryptocorynePurpureaNothovarBorneoensis.setNameCache("Cryptocoryne purpurea borneoensis");
85 cryptocorynePurpureaNothovarBorneoensis.setGenusOrUninomial("Cryptocoryne");
86 cryptocorynePurpureaNothovarBorneoensis.setSpecificEpithet("purpurea");
87 cryptocorynePurpureaNothovarBorneoensis.setInfraSpecificEpithet("borneoensis");
88 cryptocorynePurpureaNothovarBorneoensis.setHybridFormula(true);
89 }
90
91 @Test
92 public void testFormatTaxonomicNameWithoutGenus() {
93
94 assertEquals(botanicalFormatter.getLastEpithet(arum),"Arum");
95 assertEquals(botanicalFormatter.getLastEpithet(arumItalicum),"italicum");
96 assertEquals(botanicalFormatter.getLastEpithet(arumItalicumSSPItalicum),"ssp. italicum");
97 assertEquals(botanicalFormatter.getLastEpithet(arumSooi),"x sooi");
98 assertEquals(botanicalFormatter.getLastEpithet(cryptocorynePurpureaNothovarBorneoensis),"nothovar. borneoensis");
99 }
100
101 @Test
102 public void testFormatTaxonomicName() {
103 assertEquals(botanicalFormatter.getNameCache(arum),"Arum");
104 assertEquals(botanicalFormatter.getNameCache(arumItalicum),"Arum italicum");
105 assertEquals(botanicalFormatter.getNameCache(arumItalicumSSPItalicum),"Arum italicum ssp. italicum");
106 assertEquals(botanicalFormatter.getNameCache(arumSooi),"Arum x sooi");
107 assertEquals(botanicalFormatter.getNameCache(cryptocorynePurpureaNothovarBorneoensis),"Cryptocoryne x purpurea nothovar. borneoensis");
108
109 }
110
111 @Test
112 public void testAuthorship() {
113 assertEquals(botanicalFormatter.getAuthorshipCache(arumItalicum),"Mill.");
114 assertNull(botanicalFormatter.getAuthorshipCache(arumItalicumSSPItalicum));
115 assertEquals(botanicalFormatter.getAuthorshipCache(arumApulum),"(Carano) P.C.Boyce");
116 }
117 }