View Javadoc

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 }