Project

General

Profile

Download (20 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2007 EDIT
3
* European Distributed Institute of Taxonomy 
4
* http://www.e-taxonomy.eu
5
* 
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.
8
*/
9

    
10
package eu.etaxonomy.cdm.strategy.cache.name;
11

    
12
import static org.junit.Assert.assertEquals;
13
import static org.junit.Assert.assertNull;
14
import junit.framework.Assert;
15

    
16
import org.apache.log4j.Logger;
17
import org.junit.Before;
18
import org.junit.BeforeClass;
19
import org.junit.Test;
20

    
21
import eu.etaxonomy.cdm.model.agent.INomenclaturalAuthor;
22
import eu.etaxonomy.cdm.model.agent.Person;
23
import eu.etaxonomy.cdm.model.common.DefaultTermInitializer;
24
import eu.etaxonomy.cdm.model.name.BotanicalName;
25
import eu.etaxonomy.cdm.model.name.NonViralName;
26
import eu.etaxonomy.cdm.model.name.Rank;
27
import eu.etaxonomy.cdm.model.name.ZoologicalName;
28
import eu.etaxonomy.cdm.model.reference.IBook;
29
import eu.etaxonomy.cdm.model.reference.IGeneric;
30
import eu.etaxonomy.cdm.model.reference.ReferenceBase;
31
import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
32

    
33
/**
34
 * @author a.mueller
35
 * @created 26.11.2008
36
 * @version 1.0
37
 */
38
public class NonViralNameDefaultCacheStrategyTest {
39
	private static final Logger logger = Logger.getLogger(NonViralNameDefaultCacheStrategyTest.class);
40

    
41
	private NonViralNameDefaultCacheStrategy strategy;
42
	
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";
48

    
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.";
53

    
54
	private BotanicalName familyName;
55
	private BotanicalName genusName;
56
	private BotanicalName subGenusName;
57
	private BotanicalName speciesName;
58
	private BotanicalName subSpeciesName;
59
	private INomenclaturalAuthor author;
60
	private INomenclaturalAuthor exAuthor;
61
	private INomenclaturalAuthor basAuthor;
62
	private INomenclaturalAuthor exBasAuthor;
63
	private ReferenceBase citationRef;
64
	private ReferenceFactory refFactory;
65
	
66
	@BeforeClass
67
	public static void setUpBeforeClass() {
68
		DefaultTermInitializer vocabularyStore = new DefaultTermInitializer();
69
		vocabularyStore.initialize();
70
	}
71

    
72
	/**
73
	 * @throws java.lang.Exception
74
	 */
75
	@Before
76
	public void setUp() throws Exception {
77
		refFactory = ReferenceFactory.newInstance();
78
		strategy = NonViralNameDefaultCacheStrategy.NewInstance();
79
		familyName = BotanicalName.PARSED_NAME(familyNameString, Rank.FAMILY());
80
		genusName = BotanicalName.PARSED_NAME(genusNameString, Rank.GENUS());
81
		
82
		subGenusName = BotanicalName.NewInstance(Rank.SUBGENUS());
83
		subGenusName.setGenusOrUninomial("Genus");
84
		subGenusName.setInfraGenericEpithet("InfraGenericPart");
85
		
86
		speciesName = BotanicalName.PARSED_NAME(speciesNameString);
87
		subSpeciesName = BotanicalName.PARSED_NAME(subSpeciesNameString);
88

    
89
		author = Person.NewInstance();
90
		author.setNomenclaturalTitle(authorString);
91
		exAuthor = Person.NewInstance();
92
		exAuthor.setNomenclaturalTitle(exAuthorString);
93
		basAuthor = Person.NewInstance();
94
		basAuthor.setNomenclaturalTitle(basAuthorString);
95
		exBasAuthor = Person.NewInstance();
96
		exBasAuthor.setNomenclaturalTitle(exBasAuthorString);
97
		
98
	}
99

    
100
//**************************** TESTS **************************************************
101
	
102
	/**
103
	 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.NonViralNameDefaultCacheStrategy#getTitleCache(eu.etaxonomy.cdm.model.name.NonViralName)}.
104
	 */
105
	@Test
106
	public void testGetTitleCache() {
107
		logger.warn("Not yet implemented");
108
	}
109

    
110
	/**
111
	 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.NonViralNameDefaultCacheStrategy#getFullTitleCache(eu.etaxonomy.cdm.model.name.NonViralName)}.
112
	 */
113
	@Test
114
	public void testGetFullTitleCache() {
115
		logger.warn("Not yet implemented");
116
	}
117

    
118

    
119
	/**
120
	 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.NonViralNameDefaultCacheStrategy#getNameCache(eu.etaxonomy.cdm.model.name.NonViralName)}.
121
	 */
122
	@Test
123
	public void testGetNameCache() {
124
		assertEquals("Species Name should be Abies alba", speciesNameString, speciesName.getNameCache());
125
		speciesName.setNameCache("Any species");
126
		assertEquals("Species Name should be Any species", "Any species", speciesName.getNameCache());
127
		assertEquals("Species Name should be Any species", "Any species", speciesName.getTitleCache());
128
		assertEquals("subSpeciesNameString should be correct", subSpeciesNameString, subSpeciesName.getNameCache());
129
		BotanicalName botName = BotanicalName.NewInstance(Rank.VARIETY());
130
		botName.setGenusOrUninomial("Lepidocaryum");
131
		botName.setSpecificEpithet("tenue");
132
		botName.setInfraSpecificEpithet("tenue");
133
		assertEquals("", "Lepidocaryum tenue var. tenue", botName.getNameCache());
134
		BotanicalName specName = BotanicalName.NewInstance(Rank.SPECIES());
135
		specName.setGenusOrUninomial("Genus");
136
		specName.setSpecificEpithet("");
137
		assertEquals("Empty species string must not result in trailing whitespace", "Genus", specName.getNameCache());
138
		
139
	}
140

    
141
	/**
142
	 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.NonViralNameDefaultCacheStrategy#getAuthorshipCache(eu.etaxonomy.cdm.model.name.NonViralName)}.
143
	 */
144
	@Test
145
	public void testGetAuthorshipCache() {
146
		this.speciesName.setCombinationAuthorTeam(author);
147
		assertEquals(author.getNomenclaturalTitle(), speciesName.getAuthorshipCache());
148
		this.speciesName.setBasionymAuthorTeam(basAuthor);
149
		String expected = strategy.getBasionymStart()+ basAuthor.getNomenclaturalTitle()+strategy.getBasionymEnd()+strategy.getBasionymAuthorCombinationAuthorSeperator()+author.getNomenclaturalTitle();
150
		assertEquals(expected, speciesName.getAuthorshipCache());
151
		String authorshipcache = "authorshipcache";
152
		speciesName.setAuthorshipCache(authorshipcache);
153
		assertEquals(authorshipcache, speciesName.getAuthorshipCache());
154
		speciesName.setCombinationAuthorTeam(exAuthor);
155
		assertEquals(authorshipcache, speciesName.getAuthorshipCache()); //cache is protected
156
		assertEquals(speciesNameString + " " + authorshipcache, speciesName.getFullTitleCache());
157
		//unprotected
158
		speciesName.setProtectedAuthorshipCache(false);
159
		String atomizedAuthorCache = strategy.getBasionymStart()+ basAuthor.getNomenclaturalTitle()+strategy.getBasionymEnd()+strategy.getBasionymAuthorCombinationAuthorSeperator()+exAuthor.getNomenclaturalTitle();
160
		assertEquals(atomizedAuthorCache, speciesName.getAuthorshipCache());
161
		String atomizedTitleCache = speciesNameString + " "+ strategy.getBasionymStart()+ basAuthor.getNomenclaturalTitle()+strategy.getBasionymEnd()+strategy.getBasionymAuthorCombinationAuthorSeperator()+exAuthor.getNomenclaturalTitle();
162
		assertEquals(atomizedTitleCache, speciesName.getTitleCache());
163
		assertEquals(atomizedTitleCache, speciesName.getFullTitleCache());	
164
	}
165
	
166
	@Test
167
	public void testCacheListener() {
168
		ReferenceBase ref = refFactory.newGeneric();
169
		ref.setTitleCache("GenericRef");
170
		this.subSpeciesName.setNomenclaturalReference(ref);
171
		Assert.assertEquals("Expected full title cache has error", "Abies alba subsp. beta, GenericRef", subSpeciesName.getFullTitleCache());
172
		subSpeciesName.setCombinationAuthorTeam(author);
173
		subSpeciesName.setBasionymAuthorTeam(basAuthor);
174
		Assert.assertEquals("Expected full title cache has error", "Abies alba subsp. beta (Basio, A.) L., GenericRef", subSpeciesName.getFullTitleCache());
175
		//cascade name change to fullTitleCache
176
		subSpeciesName.setRank(Rank.SPECIES());
177
		subSpeciesName.setProtectedNameCache(true);
178
		Assert.assertNull("name cache should be null", subSpeciesName.getNameCache());
179
		subSpeciesName.setProtectedNameCache(false);
180
		Assert.assertNotNull("name cache should not be null", subSpeciesName.getNameCache());
181
		Assert.assertEquals("Expected full title cache has error", "Abies alba (Basio, A.) L., GenericRef", subSpeciesName.getFullTitleCache());
182
		Assert.assertEquals("Expected full title cache has error", "Abies alba (Basio, A.) L.", subSpeciesName.getTitleCache());
183
		Assert.assertEquals("Expected full title cache has error", "Abies alba", subSpeciesName.getNameCache());
184
		
185
		subSpeciesName.setProtectedNameCache(true);
186
		subSpeciesName.setSpecificEpithet("gamma");
187
		Assert.assertEquals("Expected full title cache has error", "Abies alba (Basio, A.) L., GenericRef", subSpeciesName.getFullTitleCache());
188
		Assert.assertEquals("Expected full title cache has error", "Abies alba (Basio, A.) L.", subSpeciesName.getTitleCache());
189
		Assert.assertEquals("Expected full title cache has error", "Abies alba", subSpeciesName.getNameCache());
190
		//make original status
191
		subSpeciesName.setRank(Rank.SUBSPECIES());
192
		Assert.assertEquals("Expected full title cache has error", "Abies alba (Basio, A.) L., GenericRef", subSpeciesName.getFullTitleCache());
193
		
194
		//author change
195
		author.setNomenclaturalTitle("M.");
196
		Assert.assertEquals("Expected full title cache has error", "(Basio, A.) M.", subSpeciesName.getAuthorshipCache());
197
		Assert.assertEquals("Expected full title cache has error", "Abies alba (Basio, A.) M., GenericRef", subSpeciesName.getFullTitleCache());
198
		Assert.assertEquals("Expected full title cache has error", "Abies alba (Basio, A.) M.", subSpeciesName.getTitleCache());
199
		
200
		//protectedTitleCache
201
		subSpeciesName.setProtectedTitleCache(true);
202
		subSpeciesName.setProtectedNameCache(false);
203
		subSpeciesName.setGenusOrUninomial("Pinus");
204
		subSpeciesName.setSpecificEpithet("alba");
205
		Assert.assertEquals("Expected full title cache has error", "Pinus alba subsp. beta", subSpeciesName.getNameCache());
206
		Assert.assertEquals("Expected full title cache has error", "Abies alba (Basio, A.) M., GenericRef", subSpeciesName.getFullTitleCache());
207
		Assert.assertEquals("Expected full title cache has error", "Abies alba (Basio, A.) M.", subSpeciesName.getTitleCache());
208

    
209
		subSpeciesName.setTitleCache("Pinus beta C.");
210
		Assert.assertEquals("Expected full title cache has error", "Pinus beta C., GenericRef", subSpeciesName.getFullTitleCache());
211
		subSpeciesName.setProtectedTitleCache(false);
212
		
213
		Assert.assertEquals("Expected full title cache has error", "Pinus alba subsp. beta (Basio, A.) M., GenericRef", subSpeciesName.getFullTitleCache());
214
		
215
		//protected full title cache set
216
		subSpeciesName.setFullTitleCache("ABC");
217
		Assert.assertEquals("Expected full title cache has error", "ABC", subSpeciesName.getFullTitleCache());
218
		subSpeciesName.setProtectedFullTitleCache(false);
219
		Assert.assertEquals("Expected full title cache has error", "Pinus alba subsp. beta (Basio, A.) M., GenericRef", subSpeciesName.getFullTitleCache());
220

    
221
		//protected title cache set
222
		subSpeciesName.setProtectedTitleCache(false);
223
		Assert.assertEquals("Expected full title cache has error", "Pinus alba subsp. beta (Basio, A.) M., GenericRef", subSpeciesName.getFullTitleCache());
224
		
225
		//protectedNameCache set
226
		subSpeciesName.setProtectedNameCache(true);
227
		Assert.assertEquals("Expected full title cache has error", "Pinus alba subsp. beta (Basio, A.) M., GenericRef", subSpeciesName.getFullTitleCache());
228
		subSpeciesName.setNameCache("P. alba subsp. beta");
229
		Assert.assertEquals("Expected full title cache has error", "P. alba subsp. beta (Basio, A.) M., GenericRef", subSpeciesName.getFullTitleCache());
230
		
231
		subSpeciesName.setGenusOrUninomial("A.");
232
		subSpeciesName.setProtectedNameCache(false);
233
		Assert.assertEquals("Expected full title cache has error", "A. alba subsp. beta (Basio, A.) M., GenericRef", subSpeciesName.getFullTitleCache());
234
		subSpeciesName.setNameCache("P. alba subsp. beta");
235
		Assert.assertEquals("Expected full title cache has error", "P. alba subsp. beta (Basio, A.) M., GenericRef", subSpeciesName.getFullTitleCache());
236
	
237
		//protected authorship
238
		subSpeciesName.setProtectedAuthorshipCache(true);
239
		Assert.assertEquals("Expected full title cache has error", "P. alba subsp. beta (Basio, A.) M., GenericRef", subSpeciesName.getFullTitleCache());
240
		subSpeciesName.setAuthorshipCache("Ciard.");
241
		Assert.assertEquals("Expected full title cache has error", "P. alba subsp. beta Ciard., GenericRef", subSpeciesName.getFullTitleCache());
242
		
243
		author.setNomenclaturalTitle("X.");
244
		subSpeciesName.setProtectedAuthorshipCache(false);
245
		Assert.assertEquals("Expected full title cache has error", "P. alba subsp. beta (Basio, A.) X., GenericRef", subSpeciesName.getFullTitleCache());
246
		
247
		//clear
248
		subSpeciesName.setProtectedNameCache(false);
249
		Assert.assertEquals("Expected full title cache has error", "A. alba subsp. beta (Basio, A.) X., GenericRef", subSpeciesName.getFullTitleCache());
250
		
251
		//appended phrase
252
		subSpeciesName.setProtectedNameCache(true);
253
		Assert.assertEquals("Expected full title cache has error", "A. alba subsp. beta (Basio, A.) X., GenericRef", subSpeciesName.getFullTitleCache());
254
		subSpeciesName.setAppendedPhrase("app phrase");
255
		Assert.assertEquals("Expected full title cache has error", "A. alba subsp. beta (Basio, A.) X., GenericRef", subSpeciesName.getFullTitleCache());
256
		subSpeciesName.setProtectedNameCache(false);
257
		Assert.assertEquals("Expected full title cache has error", "A. alba subsp. beta app phrase (Basio, A.) X., GenericRef", subSpeciesName.getFullTitleCache());
258
		subSpeciesName.setAppendedPhrase("app2 phrase2");
259
		subSpeciesName.setProtectedNameCache(true);
260
		Assert.assertNull("NameCache should be null", subSpeciesName.getNameCache());
261
		subSpeciesName.setProtectedNameCache(false);
262
		subSpeciesName.setAppendedPhrase(null);
263
		
264
		
265
		//ref + nomRef
266
		ReferenceBase book = refFactory.newBook();
267
		book.setTitle("Booktitle");
268
		Assert.assertNotNull("TitleCache should not be null", subSpeciesName.getTitleCache());
269
		subSpeciesName.setNomenclaturalReference(book);
270
		subSpeciesName.setNomenclaturalMicroReference("22");
271
		Assert.assertEquals("Expected full title cache has error", "A. alba subsp. beta (Basio, A.) X., Booktitle: 22", subSpeciesName.getFullTitleCache());
272
		subSpeciesName.setProtectedTitleCache(true);
273
		Assert.assertNotNull("TitleCache should not be null", subSpeciesName.getTitleCache());
274
		
275
		//year
276
		ZoologicalName zooName = ZoologicalName.NewInstance(Rank.SPECIES());
277
		zooName.setGenusOrUninomial("Homo");
278
		zooName.setSpecificEpithet("sapiens");
279
		zooName.setBasionymAuthorTeam(basAuthor);
280
		zooName.setCombinationAuthorTeam(author);
281
		zooName.setNomenclaturalReference(book);
282
		zooName.setNomenclaturalMicroReference("22");
283
		Assert.assertEquals("Expected full title cache has error", "Homo sapiens (Basio, A.) X., Booktitle: 22", zooName.getFullTitleCache());
284
		
285
		zooName.setOriginalPublicationYear(1922);
286
		zooName.setPublicationYear(1948);
287
		Assert.assertEquals("Expected full title cache has error", "Homo sapiens (Basio, A., 1922) X., 1948, Booktitle: 22", zooName.getFullTitleCache());
288
		zooName.setOriginalPublicationYear(1923);
289
		zooName.setProtectedAuthorshipCache(true);
290
		Assert.assertNull("AuthorshipCache should be null", zooName.getAuthorshipCache());
291
		zooName.setProtectedAuthorshipCache(false);
292
		Assert.assertNotNull("AuthorshipCache should not be null", zooName.getAuthorshipCache());
293
		zooName.setPublicationYear(1949);
294
		zooName.setProtectedAuthorshipCache(true);
295
		Assert.assertNull("AuthorshipCache should be null", zooName.getAuthorshipCache());
296
		
297
		
298
		
299
		
300
	}
301
	
302
	/**
303
	 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.NonViralNameDefaultCacheStrategy#getTaggedName(eu.etaxonomy.cdm.model.name.NonViralName)}.
304
	 */
305
	@Test
306
	public void testGetTaggedName() {
307
		logger.warn("testGetTaggedName yet implemented");
308
	}
309

    
310
	/**
311
	 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.NonViralNameDefaultCacheStrategy#setNameAuthorSeperator(java.lang.String)}.
312
	 */
313
	@Test
314
	public void testGetSetNameAuthorSeperator() {
315
		String authorSeparator = "authorSeparator";
316
		strategy.setNameAuthorSeperator(authorSeparator);
317
		assertEquals(authorSeparator, strategy.getNameAuthorSeperator());
318
		strategy.setNameAuthorSeperator(null);
319
		assertNull(strategy.getNameAuthorSeperator());
320
	}
321

    
322
	/**
323
	 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.NonViralNameDefaultCacheStrategy#setBasionymStart(java.lang.String)}.
324
	 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.NonViralNameDefaultCacheStrategy#getBasionymStart()}.
325
	 */
326
	@Test
327
	public void testGetSetBasionymStart() {
328
		String basStart = "start";
329
		strategy.setBasionymStart(basStart);
330
		assertEquals(basStart, strategy.getBasionymStart());
331
		strategy.setBasionymStart(null);
332
		assertNull(strategy.getBasionymStart());
333
	}
334

    
335
	/**
336
	 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.NonViralNameDefaultCacheStrategy#setBasionymEnd(java.lang.String)}.
337
	 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.NonViralNameDefaultCacheStrategy#getBasionymEnd()}.
338
	*/
339
	@Test
340
	public void testGetSetBasionymEnd() {
341
		String basEnd = "end";
342
		strategy.setBasionymEnd(basEnd);
343
		assertEquals(basEnd, strategy.getBasionymEnd());
344
		strategy.setBasionymEnd(null);
345
		assertNull(strategy.getBasionymEnd());
346
	}
347

    
348
	/**
349
	 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.NonViralNameDefaultCacheStrategy#setExAuthorSeperator(java.lang.String)}.
350
	 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.NonViralNameDefaultCacheStrategy#getExAuthorSeperator()}.
351
	 */
352
	@Test
353
	public void testGetSetExAuthorSeperator() {
354
		String exAuthorSeparator = "exAuthorSeparator";
355
		strategy.setExAuthorSeperator(exAuthorSeparator);
356
		assertEquals(exAuthorSeparator, strategy.getExAuthorSeperator());
357
		strategy.setExAuthorSeperator(null);
358
		assertNull(strategy.getExAuthorSeperator());
359
	}
360

    
361
	/**
362
	 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.NonViralNameDefaultCacheStrategy#setBasionymAuthorCombinationAuthorSeperator(java.lang.CharSequence)}.
363
	 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.NonViralNameDefaultCacheStrategy#getBasionymAuthorCombinationAuthorSeperator()}.
364
	 */
365
	@Test
366
	public void testSetBasionymAuthorCombinationAuthorSeperator() {
367
		String basComSeparator = "basComSeparator";
368
		strategy.setBasionymAuthorCombinationAuthorSeperator(basComSeparator);
369
		assertEquals(basComSeparator, strategy.getBasionymAuthorCombinationAuthorSeperator());
370
		strategy.setBasionymAuthorCombinationAuthorSeperator(null);
371
		assertNull(strategy.getBasionymAuthorCombinationAuthorSeperator());
372
	}
373
	
374
	@Test
375
	public void testGetInfraGericNames(){
376
		String author = "Anyauthor";
377
		NonViralName nonViralName = NonViralName.NewInstance(Rank.SUBGENUS());
378
		nonViralName.setGenusOrUninomial("Genus");
379
		nonViralName.setInfraGenericEpithet("subgenus");
380
		nonViralName.setAuthorshipCache(author);
381
		//test ordinary infrageneric
382
		String subGenusNameCache = strategy.getInfraGenusNameCache(nonViralName);
383
		assertEquals("Subgenus name should be 'Genus subg. subgenus'.", "Genus subg. subgenus", subGenusNameCache);
384
		String subGenusTitle = strategy.getTitleCache(nonViralName);
385
		assertEquals("Subgenus name should be 'Genus subg. subgenus Anyauthor'.", "Genus subg. subgenus Anyauthor", subGenusTitle);
386
		//test species aggregates and species groups
387
		nonViralName.setRank(Rank.SPECIESAGGREGATE());
388
		nonViralName.setSpecificEpithet("species");
389
		String aggrNameCache = strategy.getInfraGenusNameCache(nonViralName);
390
		assertEquals("Species aggregate name should be 'Genus species aggr.'.", "Genus species aggr.", aggrNameCache);
391
		String aggrNameTitle = strategy.getTitleCache(nonViralName);
392
		Assert.assertTrue("Species aggregate should not include author information.", aggrNameTitle.indexOf(author) == -1);
393
		assertEquals("Species aggregate name should be 'Genus species aggr.'.", "Genus species aggr.", aggrNameTitle);
394
		nonViralName.setRank(Rank.SPECIESGROUP());
395
		String groupNameTitle = strategy.getTitleCache(nonViralName);
396
		assertEquals("Species group name should be 'Genus species group'.", "Genus species group", groupNameTitle);
397
		
398
	}
399

    
400
}
(2-2/3)