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
.Method
;
17 import java
.util
.GregorianCalendar
;
19 import org
.apache
.log4j
.Logger
;
20 import org
.junit
.Before
;
21 import org
.junit
.BeforeClass
;
22 import org
.junit
.Test
;
24 import eu
.etaxonomy
.cdm
.model
.agent
.INomenclaturalAuthor
;
25 import eu
.etaxonomy
.cdm
.model
.agent
.Person
;
26 import eu
.etaxonomy
.cdm
.model
.common
.DefaultTermInitializer
;
27 import eu
.etaxonomy
.cdm
.model
.common
.TimePeriod
;
28 import eu
.etaxonomy
.cdm
.model
.name
.BotanicalName
;
29 import eu
.etaxonomy
.cdm
.model
.name
.NomenclaturalStatus
;
30 import eu
.etaxonomy
.cdm
.model
.name
.NomenclaturalStatusType
;
31 import eu
.etaxonomy
.cdm
.model
.name
.NonViralName
;
32 import eu
.etaxonomy
.cdm
.model
.name
.Rank
;
33 import eu
.etaxonomy
.cdm
.model
.reference
.Reference
;
34 import eu
.etaxonomy
.cdm
.model
.reference
.ReferenceFactory
;
40 public class BotanicNameCacheStrategyTest
extends NameCacheStrategyTestBase
{
41 private static final Logger logger
= Logger
.getLogger(BotanicNameCacheStrategyTest
.class);
43 private static final String familyNameString
= "Familia";
44 private static final String genusNameString
= "Genus";
45 private static final String speciesNameString
= "Abies alba";
46 private static final String subSpeciesNameString
= "Abies alba subsp. beta";
47 private static final String appendedPhraseString
= "app phrase";
49 private static final String authorString
= "L.";
50 private static final String exAuthorString
= "Exaut.";
51 private static final String basAuthorString
= "Basio, A.";
52 private static final String exBasAuthorString
= "ExBas. N.";
54 private BotanicNameDefaultCacheStrategy strategy
;
55 private BotanicalName familyName
;
56 private BotanicalName genusName
;
57 private BotanicalName subGenusName
;
58 private BotanicalName speciesName
;
59 private BotanicalName subSpeciesName
;
60 private INomenclaturalAuthor author
;
61 private INomenclaturalAuthor exAuthor
;
62 private INomenclaturalAuthor basAuthor
;
63 private INomenclaturalAuthor exBasAuthor
;
64 private Reference
<?
> citationRef
;
65 ReferenceFactory refFactory
;
68 * @throws java.lang.Exception
71 public static void setUpBeforeClass() {
72 DefaultTermInitializer vocabularyStore
= new DefaultTermInitializer();
73 vocabularyStore
.initialize();
77 * @throws java.lang.Exception
80 public void setUp() throws Exception
{
81 strategy
= BotanicNameDefaultCacheStrategy
.NewInstance();
82 familyName
= BotanicalName
.PARSED_NAME(familyNameString
, Rank
.FAMILY());
83 genusName
= BotanicalName
.PARSED_NAME(genusNameString
, Rank
.GENUS());
85 subGenusName
= BotanicalName
.NewInstance(Rank
.SUBGENUS());
86 subGenusName
.setGenusOrUninomial("Genus");
87 subGenusName
.setInfraGenericEpithet("InfraGenericPart");
89 speciesName
= BotanicalName
.PARSED_NAME(speciesNameString
);
90 subSpeciesName
= BotanicalName
.PARSED_NAME(subSpeciesNameString
);
92 author
= Person
.NewInstance();
93 author
.setNomenclaturalTitle(authorString
);
94 exAuthor
= Person
.NewInstance();
95 exAuthor
.setNomenclaturalTitle(exAuthorString
);
96 basAuthor
= Person
.NewInstance();
97 basAuthor
.setNomenclaturalTitle(basAuthorString
);
98 exBasAuthor
= Person
.NewInstance();
99 exBasAuthor
.setNomenclaturalTitle(exBasAuthorString
);
101 citationRef
= refFactory
.newBook();
102 // Gard. Dict. ed. 8, no. 1. 1768.
103 citationRef
.setTitle("Gard. Dict.");
104 //citationRef.setPlacePublished("");
105 citationRef
.setVolume("1");
106 citationRef
.setEdition("ed. 8");
107 GregorianCalendar testDate
= new GregorianCalendar();
108 testDate
.set(1968, 3, 2);
110 TimePeriod period
= TimePeriod
.NewInstance(testDate
);
112 citationRef
.setDatePublished(period
);
114 //speciesName.setNomenclaturalMicroReference("89");
115 NomenclaturalStatus nomStatus
= NomenclaturalStatus
.NewInstance(NomenclaturalStatusType
.ILLEGITIMATE());
116 speciesName
.addStatus(nomStatus
);
118 speciesName
.setNomenclaturalReference(citationRef
);
119 speciesName
.setAppendedPhrase("app phrase");
121 // subSpeciesName.setNomenclaturalReference(citationRef);
122 // subSpeciesName.setAppendedPhrase("app phrase");
127 /********* TEST *******************************************/
130 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.BotanicNameDefaultCacheStrategy#NewInstance()}.
133 public final void testNewInstance() {
134 BotanicNameDefaultCacheStrategy
<?
> cacheStrategy
= BotanicNameDefaultCacheStrategy
.NewInstance();
135 assertNotNull(cacheStrategy
);
139 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.BotanicNameDefaultCacheStrategy#getNameCache(eu.etaxonomy.cdm.model.common.CdmBase)}.
142 public final void testGetNameCache() {
143 assertEquals(subSpeciesNameString
, subSpeciesName
.getNameCache());
144 assertNull(subSpeciesNameString
, strategy
.getNameCache(null));
148 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.BotanicNameDefaultCacheStrategy#getTitleCache(eu.etaxonomy.cdm.model.common.CdmBase)}.
151 public final void testGetTitleCache() {
152 assertNull(subSpeciesNameString
, strategy
.getTitleCache(null));
153 subSpeciesName
.setCombinationAuthorTeam(author
);
154 subSpeciesName
.setExCombinationAuthorTeam(exAuthor
);
155 subSpeciesName
.setBasionymAuthorTeam(basAuthor
);
156 subSpeciesName
.setExBasionymAuthorTeam(exBasAuthor
);
157 assertEquals(subSpeciesNameString
, strategy
.getNameCache(subSpeciesName
));
158 assertEquals(subSpeciesNameString
+ " (" + exBasAuthorString
+ " ex " + basAuthorString
+ ")" + " " + exAuthorString
+ " ex " + authorString
, strategy
.getTitleCache(subSpeciesName
));
160 subSpeciesName
.setExCombinationAuthorTeam(null);
161 assertEquals(subSpeciesNameString
+ " (" + exBasAuthorString
+ " ex " + basAuthorString
+ ")" + " " + authorString
, strategy
.getTitleCache(subSpeciesName
));
163 subSpeciesName
.setExBasionymAuthorTeam(null);
164 assertEquals(subSpeciesNameString
+ " (" + basAuthorString
+ ")" + " " + authorString
, strategy
.getTitleCache(subSpeciesName
));
168 subSpeciesName
.setInfraSpecificEpithet("alba");
169 subSpeciesName
.setCombinationAuthorTeam(author
);
170 subSpeciesName
.setBasionymAuthorTeam(null);
171 subSpeciesName
.setExCombinationAuthorTeam(null);
172 subSpeciesName
.setExBasionymAuthorTeam(null);
174 assertEquals("Abies alba subsp. alba", strategy
.getNameCache(subSpeciesName
));
175 assertEquals("Abies alba L. subsp. alba", strategy
.getTitleCache(subSpeciesName
));
182 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.BotanicNameDefaultCacheStrategy#getFullTitleCache(eu.etaxonomy.cdm.model.common.CdmBase)}.
185 public final void testGetFullTitleCache() {
186 assertNull("Full title cache of null object should return null", strategy
.getFullTitleCache(null));
187 //NOTE: Unclear if the date part should contain the full date or only the year. Undefined Behaviour.
188 assertEquals("Abies alba app phrase, Gard. Dict., ed. 8, 1. 2.4.1968, nom. illeg.", strategy
.getFullTitleCache(speciesName
));
190 // assertNull(subSpeciesNameString, strategy.getFullTitleCache(null));
191 // assertEquals("Abies alba app phrase L. Gard. Dict. ed. 8, 1. 1768, nom. illeg.", strategy.getFullTitleCache(speciesName));
195 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.BotanicNameDefaultCacheStrategy#getAuthorCache(eu.etaxonomy.cdm.model.common.CdmBase)}.
198 public final void testGetAuthorshipCache() {
199 subSpeciesName
.setCombinationAuthorTeam(author
);
200 assertEquals(authorString
, strategy
.getAuthorshipCache(subSpeciesName
));
202 subSpeciesName
.setExCombinationAuthorTeam(exAuthor
);
203 assertEquals(exAuthorString
+ " ex " + authorString
, strategy
.getAuthorshipCache(subSpeciesName
));
205 subSpeciesName
.setBasionymAuthorTeam(basAuthor
);
206 assertEquals("(" + basAuthorString
+ ")" + " " + exAuthorString
+ " ex " + authorString
, strategy
.getAuthorshipCache(subSpeciesName
));
208 subSpeciesName
.setExBasionymAuthorTeam(exBasAuthor
);
209 assertEquals("(" + exBasAuthorString
+ " ex " + basAuthorString
+ ")" + " " + exAuthorString
+ " ex " + authorString
, strategy
.getAuthorshipCache(subSpeciesName
));
211 assertNull(subSpeciesNameString
, strategy
.getAuthorshipCache(null));
215 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.BotanicNameDefaultCacheStrategy#getUninomialNameCache(eu.etaxonomy.cdm.model.name.BotanicalName)}.
218 public final void testGetGenusOrUninomialNameCache() {
219 assertEquals(familyNameString
, strategy
.getNameCache(familyName
));
223 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.BotanicNameDefaultCacheStrategy#getInfraGenusNameCache(eu.etaxonomy.cdm.model.name.BotanicalName)}.
226 public final void testGetInfraGenusTaggedNameCache() {
227 String methodName
= "getInfraGenusTaggedNameCache";
228 Method method
= getMethod(NonViralNameDefaultCacheStrategy
.class, methodName
, NonViralName
.class);
229 this.getStringValue(method
, strategy
, subGenusName
);
230 assertEquals("Genus subg. InfraGenericPart", strategy
.getNameCache(subGenusName
));
234 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.BotanicNameDefaultCacheStrategy#getSpeciesNameCache(eu.etaxonomy.cdm.model.name.BotanicalName)}.
237 public final void testGetSpeciesNameCache() {
238 String nameString
= speciesNameString
+ " " + appendedPhraseString
;
239 assertEquals(nameString
, strategy
.getNameCache(speciesName
));
243 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.BotanicNameDefaultCacheStrategy#getInfraSpeciesNameCache(eu.etaxonomy.cdm.model.name.BotanicalName)}.
246 public final void testGetInfraSpeciesNameCache() {
247 assertEquals(subSpeciesNameString
, strategy
.getNameCache(subSpeciesName
));
252 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.BotanicNameDefaultCacheStrategy#getInfraSpeciesNameCache(eu.etaxonomy.cdm.model.name.BotanicalName)}.
255 public final void testAutonyms() {
256 subSpeciesName
.setInfraSpecificEpithet("alba");
257 subSpeciesName
.setCombinationAuthorTeam(author
);
259 assertEquals("Abies alba subsp. alba", strategy
.getNameCache(subSpeciesName
));
260 assertEquals("Abies alba L. subsp. alba", strategy
.getTitleCache(subSpeciesName
));
263 protected Method
getMethod(Class clazz
, String methodName
, Class paramClazzes
){
266 method
= clazz
.getDeclaredMethod(methodName
, paramClazzes
);
267 } catch (SecurityException e
) {
268 logger
.error("SecurityException " + e
.getMessage());
270 } catch (NoSuchMethodException e
) {
271 logger
.error("NoSuchMethodException " + e
.getMessage());