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
;
19 import java
.util
.List
;
21 import org
.apache
.log4j
.Logger
;
22 import org
.junit
.Before
;
23 import org
.junit
.BeforeClass
;
24 import org
.junit
.Test
;
26 import eu
.etaxonomy
.cdm
.model
.agent
.INomenclaturalAuthor
;
27 import eu
.etaxonomy
.cdm
.model
.agent
.Person
;
28 import eu
.etaxonomy
.cdm
.model
.common
.DefaultTermInitializer
;
29 import eu
.etaxonomy
.cdm
.model
.common
.TimePeriod
;
30 import eu
.etaxonomy
.cdm
.model
.name
.BotanicalName
;
31 import eu
.etaxonomy
.cdm
.model
.name
.NomenclaturalStatus
;
32 import eu
.etaxonomy
.cdm
.model
.name
.NomenclaturalStatusType
;
33 import eu
.etaxonomy
.cdm
.model
.name
.NonViralName
;
34 import eu
.etaxonomy
.cdm
.model
.name
.Rank
;
35 import eu
.etaxonomy
.cdm
.model
.reference
.Reference
;
36 import eu
.etaxonomy
.cdm
.model
.reference
.ReferenceFactory
;
37 import eu
.etaxonomy
.cdm
.strategy
.cache
.TaggedText
;
43 public class BotanicNameCacheStrategyTest
extends NameCacheStrategyTestBase
{
44 private static final Logger logger
= Logger
.getLogger(BotanicNameCacheStrategyTest
.class);
46 private static final String familyNameString
= "Familia";
47 private static final String genusNameString
= "Genus";
48 private static final String speciesNameString
= "Abies alba";
49 private static final String subSpeciesNameString
= "Abies alba subsp. beta";
50 private static final String appendedPhraseString
= "app phrase";
52 private static final String authorString
= "L.";
53 private static final String exAuthorString
= "Exaut.";
54 private static final String basAuthorString
= "Basio, A.";
55 private static final String exBasAuthorString
= "ExBas. N.";
57 private BotanicNameDefaultCacheStrategy strategy
;
58 private BotanicalName familyName
;
59 private BotanicalName genusName
;
60 private BotanicalName subGenusName
;
61 private BotanicalName speciesName
;
62 private BotanicalName subSpeciesName
;
63 private INomenclaturalAuthor author
;
64 private INomenclaturalAuthor exAuthor
;
65 private INomenclaturalAuthor basAuthor
;
66 private INomenclaturalAuthor exBasAuthor
;
67 private Reference citationRef
;
68 ReferenceFactory refFactory
;
71 * @throws java.lang.Exception
74 public static void setUpBeforeClass() {
75 DefaultTermInitializer vocabularyStore
= new DefaultTermInitializer();
76 vocabularyStore
.initialize();
80 * @throws java.lang.Exception
83 public void setUp() throws Exception
{
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(1968, 3, 2);
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
+ " (" + exBasAuthorString
+ " ex " + basAuthorString
+ ")" + " " + exAuthorString
+ " ex " + authorString
, strategy
.getTitleCache(subSpeciesName
));
163 subSpeciesName
.setExCombinationAuthorTeam(null);
164 assertEquals(subSpeciesNameString
+ " (" + exBasAuthorString
+ " ex " + basAuthorString
+ ")" + " " + 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("Full title cache of null object should return null", strategy
.getFullTitleCache(null));
190 //NOTE: Unclear if the date part should contain the full date or only the year. Undefined Behaviour.
191 assertEquals("Abies alba app phrase, Gard. Dict., ed. 8, 1. 2.4.1968, nom. illeg.", strategy
.getFullTitleCache(speciesName
));
193 // assertNull(subSpeciesNameString, strategy.getFullTitleCache(null));
194 // assertEquals("Abies alba app phrase L. Gard. Dict. ed. 8, 1. 1768, nom. illeg.", strategy.getFullTitleCache(speciesName));
198 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.BotanicNameDefaultCacheStrategy#getAuthorCache(eu.etaxonomy.cdm.model.common.CdmBase)}.
201 public final void testGetAuthorshipCache() {
202 subSpeciesName
.setCombinationAuthorTeam(author
);
203 assertEquals(authorString
, strategy
.getAuthorshipCache(subSpeciesName
));
205 subSpeciesName
.setExCombinationAuthorTeam(exAuthor
);
206 assertEquals(exAuthorString
+ " ex " + authorString
, strategy
.getAuthorshipCache(subSpeciesName
));
208 subSpeciesName
.setBasionymAuthorTeam(basAuthor
);
209 assertEquals("(" + basAuthorString
+ ")" + " " + exAuthorString
+ " ex " + authorString
, strategy
.getAuthorshipCache(subSpeciesName
));
211 subSpeciesName
.setExBasionymAuthorTeam(exBasAuthor
);
212 assertEquals("(" + exBasAuthorString
+ " ex " + basAuthorString
+ ")" + " " + exAuthorString
+ " ex " + authorString
, strategy
.getAuthorshipCache(subSpeciesName
));
214 assertNull(subSpeciesNameString
, strategy
.getAuthorshipCache(null));
218 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.BotanicNameDefaultCacheStrategy#getUninomialNameCache(eu.etaxonomy.cdm.model.name.BotanicalName)}.
221 public final void testGetGenusOrUninomialNameCache() {
222 assertEquals(familyNameString
, strategy
.getNameCache(familyName
));
226 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.BotanicNameDefaultCacheStrategy#getInfraGenusNameCache(eu.etaxonomy.cdm.model.name.BotanicalName)}.
229 public final void testGetInfraGenusTaggedNameCache() {
230 String methodName
= "getInfraGenusTaggedNameCache";
231 Method method
= getMethod(NonViralNameDefaultCacheStrategy
.class, methodName
, NonViralName
.class);
232 this.getStringValue(method
, strategy
, subGenusName
);
233 assertEquals("Genus subg. InfraGenericPart", strategy
.getNameCache(subGenusName
));
237 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.BotanicNameDefaultCacheStrategy#getSpeciesNameCache(eu.etaxonomy.cdm.model.name.BotanicalName)}.
240 public final void testGetSpeciesNameCache() {
241 String nameString
= speciesNameString
+ " " + appendedPhraseString
;
242 assertEquals(nameString
, strategy
.getNameCache(speciesName
));
246 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.BotanicNameDefaultCacheStrategy#getInfraSpeciesNameCache(eu.etaxonomy.cdm.model.name.BotanicalName)}.
249 public final void testGetInfraSpeciesNameCache() {
250 assertEquals(subSpeciesNameString
, strategy
.getNameCache(subSpeciesName
));
255 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.BotanicNameDefaultCacheStrategy#getInfraSpeciesNameCache(eu.etaxonomy.cdm.model.name.BotanicalName)}.
258 public final void testAutonyms() {
259 subSpeciesName
.setInfraSpecificEpithet("alba");
260 subSpeciesName
.setCombinationAuthorTeam(author
);
262 assertEquals("Abies alba subsp. alba", strategy
.getNameCache(subSpeciesName
));
263 assertEquals("Abies alba L. subsp. alba", strategy
.getTitleCache(subSpeciesName
));
266 protected Method
getMethod(Class clazz
, String methodName
, Class paramClazzes
){
269 method
= clazz
.getDeclaredMethod(methodName
, paramClazzes
);
270 } catch (SecurityException e
) {
271 logger
.error("SecurityException " + e
.getMessage());
273 } catch (NoSuchMethodException e
) {
274 logger
.error("NoSuchMethodException " + e
.getMessage());