2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
10 package eu
.etaxonomy
.cdm
.strategy
.cache
.name
;
12 import static org
.junit
.Assert
.assertEquals
;
13 import static org
.junit
.Assert
.assertNotNull
;
14 import static org
.junit
.Assert
.assertNull
;
16 import java
.lang
.reflect
.InvocationTargetException
;
17 import java
.lang
.reflect
.Method
;
18 import java
.util
.GregorianCalendar
;
20 import org
.apache
.log4j
.Logger
;
21 import org
.junit
.Before
;
22 import org
.junit
.BeforeClass
;
23 import org
.junit
.Test
;
25 import eu
.etaxonomy
.cdm
.model
.agent
.INomenclaturalAuthor
;
26 import eu
.etaxonomy
.cdm
.model
.agent
.Person
;
27 import eu
.etaxonomy
.cdm
.model
.common
.DefaultTermInitializer
;
28 import eu
.etaxonomy
.cdm
.model
.common
.TimePeriod
;
29 import eu
.etaxonomy
.cdm
.model
.name
.BotanicalName
;
30 import eu
.etaxonomy
.cdm
.model
.name
.NomenclaturalStatus
;
31 import eu
.etaxonomy
.cdm
.model
.name
.NomenclaturalStatusType
;
32 import eu
.etaxonomy
.cdm
.model
.name
.NonViralName
;
33 import eu
.etaxonomy
.cdm
.model
.name
.Rank
;
34 import eu
.etaxonomy
.cdm
.model
.reference
.IBook
;
35 import eu
.etaxonomy
.cdm
.model
.reference
.ReferenceBase
;
36 import eu
.etaxonomy
.cdm
.model
.reference
.ReferenceFactory
;
42 public class BotanicNameCacheStrategyTest
{
43 private static final Logger logger
= Logger
.getLogger(BotanicNameCacheStrategyTest
.class);
45 private static final String familyNameString
= "Familia";
46 private static final String genusNameString
= "Genus";
47 private static final String speciesNameString
= "Abies alba";
48 private static final String subSpeciesNameString
= "Abies alba subsp. beta";
49 private static final String appendedPhraseString
= "app phrase";
51 private static final String authorString
= "L.";
52 private static final String exAuthorString
= "Exaut.";
53 private static final String basAuthorString
= "Basio, A.";
54 private static final String exBasAuthorString
= "ExBas. N.";
56 private BotanicNameDefaultCacheStrategy strategy
;
57 private BotanicalName familyName
;
58 private BotanicalName genusName
;
59 private BotanicalName subGenusName
;
60 private BotanicalName speciesName
;
61 private BotanicalName subSpeciesName
;
62 private INomenclaturalAuthor author
;
63 private INomenclaturalAuthor exAuthor
;
64 private INomenclaturalAuthor basAuthor
;
65 private INomenclaturalAuthor exBasAuthor
;
66 private ReferenceBase citationRef
;
67 ReferenceFactory refFactory
;
70 * @throws java.lang.Exception
73 public static void setUpBeforeClass() {
74 DefaultTermInitializer vocabularyStore
= new DefaultTermInitializer();
75 vocabularyStore
.initialize();
79 * @throws java.lang.Exception
82 public void setUp() throws Exception
{
83 refFactory
= ReferenceFactory
.newInstance();
84 strategy
= BotanicNameDefaultCacheStrategy
.NewInstance();
85 familyName
= BotanicalName
.PARSED_NAME(familyNameString
, Rank
.FAMILY());
86 genusName
= BotanicalName
.PARSED_NAME(genusNameString
, Rank
.GENUS());
88 subGenusName
= BotanicalName
.NewInstance(Rank
.SUBGENUS());
89 subGenusName
.setGenusOrUninomial("Genus");
90 subGenusName
.setInfraGenericEpithet("InfraGenericPart");
92 speciesName
= BotanicalName
.PARSED_NAME(speciesNameString
);
93 subSpeciesName
= BotanicalName
.PARSED_NAME(subSpeciesNameString
);
95 author
= Person
.NewInstance();
96 author
.setNomenclaturalTitle(authorString
);
97 exAuthor
= Person
.NewInstance();
98 exAuthor
.setNomenclaturalTitle(exAuthorString
);
99 basAuthor
= Person
.NewInstance();
100 basAuthor
.setNomenclaturalTitle(basAuthorString
);
101 exBasAuthor
= Person
.NewInstance();
102 exBasAuthor
.setNomenclaturalTitle(exBasAuthorString
);
104 citationRef
= refFactory
.newBook();
105 // Gard. Dict. ed. 8, no. 1. 1768.
106 citationRef
.setTitle("Gard. Dict.");
107 //citationRef.setPlacePublished("");
108 citationRef
.setVolume("1");
109 citationRef
.setEdition("ed. 8");
110 GregorianCalendar testDate
= new GregorianCalendar();
111 testDate
.set(1768, 1, 1);
113 TimePeriod period
= TimePeriod
.NewInstance(testDate
);
115 citationRef
.setDatePublished(period
);
117 //speciesName.setNomenclaturalMicroReference("89");
118 NomenclaturalStatus nomStatus
= NomenclaturalStatus
.NewInstance(NomenclaturalStatusType
.ILLEGITIMATE());
119 speciesName
.addStatus(nomStatus
);
121 speciesName
.setNomenclaturalReference(citationRef
);
122 speciesName
.setAppendedPhrase("app phrase");
124 // subSpeciesName.setNomenclaturalReference(citationRef);
125 // subSpeciesName.setAppendedPhrase("app phrase");
130 /********* TEST *******************************************/
133 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.BotanicNameDefaultCacheStrategy#NewInstance()}.
136 public final void testNewInstance() {
137 BotanicNameDefaultCacheStrategy cacheStrategy
= BotanicNameDefaultCacheStrategy
.NewInstance();
138 assertNotNull(cacheStrategy
);
142 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.BotanicNameDefaultCacheStrategy#getNameCache(eu.etaxonomy.cdm.model.common.CdmBase)}.
145 public final void testGetNameCache() {
146 assertEquals(subSpeciesNameString
, subSpeciesName
.getNameCache());
147 assertNull(subSpeciesNameString
, strategy
.getNameCache(null));
151 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.BotanicNameDefaultCacheStrategy#getTitleCache(eu.etaxonomy.cdm.model.common.CdmBase)}.
154 public final void testGetTitleCache() {
155 assertNull(subSpeciesNameString
, strategy
.getTitleCache(null));
156 subSpeciesName
.setCombinationAuthorTeam(author
);
157 subSpeciesName
.setExCombinationAuthorTeam(exAuthor
);
158 subSpeciesName
.setBasionymAuthorTeam(basAuthor
);
159 subSpeciesName
.setExBasionymAuthorTeam(exBasAuthor
);
160 assertEquals(subSpeciesNameString
, strategy
.getNameCache(subSpeciesName
));
161 assertEquals(subSpeciesNameString
+ " (" + basAuthorString
+ " ex " + exBasAuthorString
+ ")" + " " + authorString
+ " ex " + exAuthorString
, strategy
.getTitleCache(subSpeciesName
));
163 subSpeciesName
.setExCombinationAuthorTeam(null);
164 assertEquals(subSpeciesNameString
+ " (" + basAuthorString
+ " ex " + exBasAuthorString
+ ")" + " " + authorString
, strategy
.getTitleCache(subSpeciesName
));
166 subSpeciesName
.setExBasionymAuthorTeam(null);
167 assertEquals(subSpeciesNameString
+ " (" + basAuthorString
+ ")" + " " + authorString
, strategy
.getTitleCache(subSpeciesName
));
171 subSpeciesName
.setInfraSpecificEpithet("alba");
172 subSpeciesName
.setCombinationAuthorTeam(author
);
173 subSpeciesName
.setBasionymAuthorTeam(null);
174 subSpeciesName
.setExCombinationAuthorTeam(null);
175 subSpeciesName
.setExBasionymAuthorTeam(null);
177 assertEquals("Abies alba subsp. alba", strategy
.getNameCache(subSpeciesName
));
178 assertEquals("Abies alba L. subsp. alba", strategy
.getTitleCache(subSpeciesName
));
185 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.BotanicNameDefaultCacheStrategy#getFullTitleCache(eu.etaxonomy.cdm.model.common.CdmBase)}.
188 public final void testGetFullTitleCache() {
189 assertNull(speciesNameString
, strategy
.getFullTitleCache(null));
190 assertEquals("Abies alba app phrase, Gard. Dict. ed. 8, 1. 1768, nom. illeg.", strategy
.getFullTitleCache(speciesName
));
192 // assertNull(subSpeciesNameString, strategy.getFullTitleCache(null));
193 // assertEquals("Abies alba app phrase L. Gard. Dict. ed. 8, 1. 1768, nom. illeg.", strategy.getFullTitleCache(speciesName));
197 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.BotanicNameDefaultCacheStrategy#getAuthorCache(eu.etaxonomy.cdm.model.common.CdmBase)}.
200 public final void testGetAuthorshipCache() {
201 subSpeciesName
.setCombinationAuthorTeam(author
);
202 assertEquals(authorString
, strategy
.getAuthorshipCache(subSpeciesName
));
204 subSpeciesName
.setExCombinationAuthorTeam(exAuthor
);
205 assertEquals(authorString
+ " ex " + exAuthorString
, strategy
.getAuthorshipCache(subSpeciesName
));
207 subSpeciesName
.setBasionymAuthorTeam(basAuthor
);
208 assertEquals("(" + basAuthorString
+ ")" + " " + authorString
+ " ex " + exAuthorString
, strategy
.getAuthorshipCache(subSpeciesName
));
210 subSpeciesName
.setExBasionymAuthorTeam(exBasAuthor
);
211 assertEquals("(" + basAuthorString
+ " ex " + exBasAuthorString
+ ")" + " " + authorString
+ " ex " + exAuthorString
, strategy
.getAuthorshipCache(subSpeciesName
));
213 assertNull(subSpeciesNameString
, strategy
.getAuthorshipCache(null));
217 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.BotanicNameDefaultCacheStrategy#getUninomialNameCache(eu.etaxonomy.cdm.model.name.BotanicalName)}.
220 public final void testGetGenusOrUninomialNameCache() {
221 assertEquals(familyNameString
, strategy
.getNameCache(familyName
));
225 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.BotanicNameDefaultCacheStrategy#getInfraGenusNameCache(eu.etaxonomy.cdm.model.name.BotanicalName)}.
228 public final void testGetInfraGenusNameCache() {
229 String methodName
= "getInfraGenusNameCache";
230 Method method
= getMethod(NonViralNameDefaultCacheStrategy
.class, methodName
, NonViralName
.class);
231 this.getValue(method
, strategy
, subGenusName
);
232 assertEquals("Genus subg. InfraGenericPart", strategy
.getNameCache(subGenusName
));
236 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.BotanicNameDefaultCacheStrategy#getSpeciesNameCache(eu.etaxonomy.cdm.model.name.BotanicalName)}.
239 public final void testGetSpeciesNameCache() {
240 String nameString
= speciesNameString
+ " " + appendedPhraseString
;
241 assertEquals(nameString
, strategy
.getNameCache(speciesName
));
245 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.BotanicNameDefaultCacheStrategy#getInfraSpeciesNameCache(eu.etaxonomy.cdm.model.name.BotanicalName)}.
248 public final void testGetInfraSpeciesNameCache() {
249 assertEquals(subSpeciesNameString
, strategy
.getNameCache(subSpeciesName
));
254 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.BotanicNameDefaultCacheStrategy#getInfraSpeciesNameCache(eu.etaxonomy.cdm.model.name.BotanicalName)}.
257 public final void testAutonyms() {
258 subSpeciesName
.setInfraSpecificEpithet("alba");
259 subSpeciesName
.setCombinationAuthorTeam(author
);
261 assertEquals("Abies alba subsp. alba", strategy
.getNameCache(subSpeciesName
));
262 assertEquals("Abies alba L. subsp. alba", strategy
.getTitleCache(subSpeciesName
));
265 protected Method
getMethod(Class clazz
, String methodName
, Class paramClazzes
){
268 method
= clazz
.getDeclaredMethod("getInfraGenusNameCache", paramClazzes
);
269 } catch (SecurityException e
) {
270 logger
.error("SecurityException " + e
.getMessage());
272 } catch (NoSuchMethodException e
) {
273 logger
.error("NoSuchMethodException " + e
.getMessage());
279 protected String
getValue(Method method
, Object object
,Object parameter
){
281 return (String
)method
.invoke(object
, parameter
);
282 } catch (IllegalArgumentException e
) {
283 logger
.error("IllegalArgumentException " + e
.getMessage());
285 } catch (IllegalAccessException e
) {
286 logger
.error("IllegalAccessException " + e
.getMessage());
288 } catch (InvocationTargetException e
) {
289 logger
.error("InvocationTargetException " + e
.getMessage());