Project

General

Profile

Download (27.3 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

    
15
import java.util.List;
16

    
17
import org.junit.Assert;
18

    
19
import org.apache.log4j.Logger;
20
import org.junit.Before;
21
import org.junit.BeforeClass;
22
import org.junit.Test;
23

    
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.name.BotanicalName;
28
import eu.etaxonomy.cdm.model.name.HybridRelationshipType;
29
import eu.etaxonomy.cdm.model.name.NonViralName;
30
import eu.etaxonomy.cdm.model.name.Rank;
31
import eu.etaxonomy.cdm.model.name.ZoologicalName;
32
import eu.etaxonomy.cdm.model.reference.Reference;
33
import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
34
import eu.etaxonomy.cdm.strategy.TaggedText;
35

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

    
44
	private NonViralNameDefaultCacheStrategy strategy;
45
	
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";
51

    
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.";
56
	
57
	private static final String referenceTitle = "My Reference";
58

    
59
	private BotanicalName familyName;
60
	private BotanicalName genusName;
61
	private BotanicalName subGenusName;
62
	private BotanicalName speciesName;
63
	private BotanicalName subSpeciesName;
64
	private INomenclaturalAuthor author;
65
	private INomenclaturalAuthor exAuthor;
66
	private INomenclaturalAuthor basAuthor;
67
	private INomenclaturalAuthor exBasAuthor;
68
	private Reference citationRef;
69
	
70
	@BeforeClass
71
	public static void setUpBeforeClass() {
72
		DefaultTermInitializer vocabularyStore = new DefaultTermInitializer();
73
		vocabularyStore.initialize();
74
	}
75

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

    
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);
100
		
101
		citationRef = ReferenceFactory.newGeneric();
102
		citationRef.setTitleCache(referenceTitle, true);
103
		
104
	}
105

    
106
//**************************** TESTS **************************************************
107
	
108
	/**
109
	 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.NonViralNameDefaultCacheStrategy#getTitleCache(eu.etaxonomy.cdm.model.name.NonViralName)}.
110
	 */
111
	@Test
112
	public void testGetTitleCache() {
113
		Assert.assertEquals(speciesNameString, speciesName.getTitleCache());
114
		//TODO not yet completed
115
	}
116

    
117
	/**
118
	 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.NonViralNameDefaultCacheStrategy#getFullTitleCache(eu.etaxonomy.cdm.model.name.NonViralName)}.
119
	 */
120
	@Test
121
	public void testGetFullTitleCache() {
122
		subSpeciesName.setNomenclaturalReference(citationRef);
123
		Assert.assertEquals(subSpeciesNameString + ", " +  referenceTitle, subSpeciesName.getFullTitleCache());
124
		//TODO not yet completed
125
	}
126

    
127

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

    
148
		//unranked taxa
149
		String unrankedCache;
150
		BotanicalName unrankedName = BotanicalName.NewInstance(Rank.INFRASPECIFICTAXON());
151
		unrankedName.setGenusOrUninomial("Genus");
152
		NonViralNameDefaultCacheStrategy<BotanicalName> strategy = NonViralNameDefaultCacheStrategy.NewInstance();
153
			//infraspecific
154
		unrankedName.setInfraSpecificEpithet("infraspecific");
155
		unrankedName.setSpecificEpithet("species");
156
		unrankedCache = strategy.getNameCache(unrankedName);
157
		
158
		Assert.assertEquals("Correct unranked cache expected", "Genus species [infraspec.] infraspecific", unrankedCache);
159
		
160
			//infrageneric
161
		unrankedName.setRank(Rank.INFRAGENERICTAXON());
162
		unrankedName.setInfraSpecificEpithet(null);
163
		unrankedName.setSpecificEpithet(null);
164
		unrankedName.setInfraGenericEpithet("Infrageneric");
165
		unrankedCache = strategy.getNameCache(unrankedName);
166
		Assert.assertEquals("Correct unranked cache expected", "Genus [infragen.] Infrageneric", unrankedCache);
167
		
168
		
169
	}
170
	
171
	/**
172
	 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.NonViralNameDefaultCacheStrategy#getNameCache(eu.etaxonomy.cdm.model.name.NonViralName)}.
173
	 */
174
	@Test
175
	public void testNameCacheWithInfraGenericEpithet() {
176
		speciesName.setInfraGenericEpithet("Infraabies");
177
		assertEquals("Species Name should be Abies (Infraabies) alba", "Abies (Infraabies) alba", speciesName.getNameCache());
178
		
179
		BotanicalName botName = BotanicalName.NewInstance(Rank.VARIETY());
180
		botName.setGenusOrUninomial("Lepidocaryum");
181
		botName.setInfraGenericEpithet("Infralepi");
182
		botName.setSpecificEpithet("tenue");
183
		botName.setInfraSpecificEpithet("tenue");
184
		assertEquals("Name cache should be Lepidocaryum (Infralepi) tenue var. tenue", "Lepidocaryum (Infralepi) tenue var. tenue", botName.getNameCache());
185
		
186
		botName.setInfraGenericEpithet(" ");
187
		//Note: This test may fail if aspectj doesn't work correctly
188
		assertEquals("Empty infrageneric epithet must be neglegted", "Lepidocaryum tenue var. tenue", botName.getNameCache());
189
	}
190

    
191
	/**
192
	 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.NonViralNameDefaultCacheStrategy#getAuthorshipCache(eu.etaxonomy.cdm.model.name.NonViralName)}.
193
	 */
194
	@Test
195
	public void testGetAuthorshipCache() {
196
		this.speciesName.setCombinationAuthorTeam(author);
197
		assertEquals(author.getNomenclaturalTitle(), speciesName.getAuthorshipCache());
198
		this.speciesName.setBasionymAuthorTeam(basAuthor);
199
		String expected = strategy.getBasionymStart()+ basAuthor.getNomenclaturalTitle()+strategy.getBasionymEnd()+strategy.getBasionymAuthorCombinationAuthorSeperator()+author.getNomenclaturalTitle();
200
		assertEquals(expected, speciesName.getAuthorshipCache());
201
		String authorshipcache = "authorshipcache";
202
		speciesName.setAuthorshipCache(authorshipcache);
203
		assertEquals(authorshipcache, speciesName.getAuthorshipCache());
204
		speciesName.setCombinationAuthorTeam(exAuthor);
205
		assertEquals(authorshipcache, speciesName.getAuthorshipCache()); //cache is protected
206
		assertEquals(speciesNameString + " " + authorshipcache, speciesName.getFullTitleCache());
207
		//unprotected
208
		speciesName.setProtectedAuthorshipCache(false);
209
		String atomizedAuthorCache = strategy.getBasionymStart()+ basAuthor.getNomenclaturalTitle()+strategy.getBasionymEnd()+strategy.getBasionymAuthorCombinationAuthorSeperator()+exAuthor.getNomenclaturalTitle();
210
		assertEquals(atomizedAuthorCache, speciesName.getAuthorshipCache());
211
		String atomizedTitleCache = speciesNameString + " "+ strategy.getBasionymStart()+ basAuthor.getNomenclaturalTitle()+strategy.getBasionymEnd()+strategy.getBasionymAuthorCombinationAuthorSeperator()+exAuthor.getNomenclaturalTitle();
212
		//Note: This test may fail if aspectj doesn't work correctly
213
		assertEquals(atomizedTitleCache, speciesName.getTitleCache());
214
		assertEquals(atomizedTitleCache, speciesName.getFullTitleCache());	
215
	}
216
	
217
	/**
218
	 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.NonViralNameDefaultCacheStrategy#getAuthorshipCache(eu.etaxonomy.cdm.model.name.NonViralName)}.
219
	 */
220
	@Test
221
	public void testHybridNames() {
222
		//Note \u00D7 : hybrid sign (multiplication sign)
223
		this.speciesName.setCombinationAuthorTeam(author);
224
		Assert.assertEquals(author.getNomenclaturalTitle(), speciesName.getAuthorshipCache());
225
		Assert.assertEquals("Should be Abies alba L.", "Abies alba L.", speciesName.getTitleCache());
226
		
227
		speciesName.setBinomHybrid(true);
228
		//Note: This test may fail if aspectj doesn't work correctly
229
		Assert.assertEquals("Should be Abies \u00D7alba L.", "Abies \u00D7alba L.", speciesName.getTitleCache());
230
		speciesName.setMonomHybrid(true);
231
		Assert.assertEquals("Should be '\u00D7Abies \u00D7alba L.'", "\u00D7Abies \u00D7alba L.", speciesName.getTitleCache());
232
		
233
		Assert.assertEquals("Should be 'Genus'", "Genus", genusName.getTitleCache());
234
		genusName.setMonomHybrid(true);
235
		Assert.assertEquals("Should be '\u00D7Genus'", "\u00D7Genus", genusName.getTitleCache());
236
	
237
		Assert.assertEquals("Should be 'Abies alba subsp. beta'", subSpeciesNameString, subSpeciesName.getTitleCache());
238
		subSpeciesName.setTrinomHybrid(true);
239
		Assert.assertEquals("Should be 'Abies alba subsp. \u00D7beta'", "Abies alba subsp. \u00D7beta", subSpeciesName.getTitleCache());
240
		subSpeciesName.setMonomHybrid(true);
241
		Assert.assertEquals("Should be '\u00D7Abies alba subsp. \u00D7beta'", "\u00D7Abies alba subsp. \u00D7beta", subSpeciesName.getTitleCache());
242
	}
243
	
244
	@Test
245
	public void testHybridFormula(){
246
		this.speciesName.setCombinationAuthorTeam(author);
247
		Assert.assertEquals(author.getNomenclaturalTitle(), speciesName.getAuthorshipCache());
248
		Assert.assertEquals("Should be 'Abies alba L.'", "Abies alba L.", speciesName.getTitleCache());
249
		
250
		NonViralName hybridName = NonViralName.NewInstance(Rank.SPECIES());
251
		NonViralName secondParent = NonViralName.NewInstance(Rank.SPECIES());
252
		
253
		secondParent.setTitleCache("Second parent Mill.", true);
254
		hybridName.addHybridParent(speciesName, HybridRelationshipType.FIRST_PARENT(), null);
255
		hybridName.addHybridParent(secondParent, HybridRelationshipType.SECOND_PARENT(), null);
256
		hybridName.setHybridFormula(true);
257
		
258
		Assert.assertEquals("", "Abies alba L. \u00D7 Second parent Mill.", hybridName.getTitleCache());
259
		
260
	}
261
	
262
	@Test
263
	public void testCacheListener() {
264
		Reference ref = ReferenceFactory.newGeneric();
265
		ref.setTitleCache("GenericRef",true);
266
		this.subSpeciesName.setNomenclaturalReference(ref);
267
		Assert.assertEquals("Expected full title cache has error", "Abies alba subsp. beta, GenericRef", subSpeciesName.getFullTitleCache());
268
		subSpeciesName.setCombinationAuthorTeam(author);
269
		subSpeciesName.setBasionymAuthorTeam(basAuthor);
270
		Assert.assertEquals("Expected full title cache has error", "Abies alba subsp. beta (Basio, A.) L., GenericRef", subSpeciesName.getFullTitleCache());
271
		//cascade name change to fullTitleCache
272
		subSpeciesName.setRank(Rank.SPECIES());
273
		subSpeciesName.setProtectedNameCache(true);
274
		Assert.assertNull("name cache should be null", subSpeciesName.getNameCache());
275
		subSpeciesName.setProtectedNameCache(false);
276
		Assert.assertNotNull("name cache should not be null", subSpeciesName.getNameCache());
277
		Assert.assertEquals("Expected full title cache has error", "Abies alba (Basio, A.) L., GenericRef", subSpeciesName.getFullTitleCache());
278
		Assert.assertEquals("Expected full title cache has error", "Abies alba (Basio, A.) L.", subSpeciesName.getTitleCache());
279
		Assert.assertEquals("Expected full title cache has error", "Abies alba", subSpeciesName.getNameCache());
280
		
281
		subSpeciesName.setProtectedNameCache(true);
282
		subSpeciesName.setSpecificEpithet("gamma");
283
		Assert.assertEquals("Expected full title cache has error", "Abies alba (Basio, A.) L., GenericRef", subSpeciesName.getFullTitleCache());
284
		Assert.assertEquals("Expected full title cache has error", "Abies alba (Basio, A.) L.", subSpeciesName.getTitleCache());
285
		Assert.assertEquals("Expected full title cache has error", "Abies alba", subSpeciesName.getNameCache());
286
		//make original status
287
		subSpeciesName.setRank(Rank.SUBSPECIES());
288
		Assert.assertEquals("Expected full title cache has error", "Abies alba (Basio, A.) L., GenericRef", subSpeciesName.getFullTitleCache());
289
		
290
		//author change
291
		author.setNomenclaturalTitle("M.");
292
		Assert.assertEquals("Expected full title cache has error", "(Basio, A.) M.", subSpeciesName.getAuthorshipCache());
293
		Assert.assertEquals("Expected full title cache has error", "Abies alba (Basio, A.) M., GenericRef", subSpeciesName.getFullTitleCache());
294
		Assert.assertEquals("Expected full title cache has error", "Abies alba (Basio, A.) M.", subSpeciesName.getTitleCache());
295
		
296
		//protectedTitleCache
297
		subSpeciesName.setProtectedTitleCache(true);
298
		subSpeciesName.setProtectedNameCache(false);
299
		subSpeciesName.setGenusOrUninomial("Pinus");
300
		subSpeciesName.setSpecificEpithet("alba");
301
		Assert.assertEquals("Expected full title cache has error", "Pinus alba subsp. beta", subSpeciesName.getNameCache());
302
		Assert.assertEquals("Expected full title cache has error", "Abies alba (Basio, A.) M., GenericRef", subSpeciesName.getFullTitleCache());
303
		Assert.assertEquals("Expected full title cache has error", "Abies alba (Basio, A.) M.", subSpeciesName.getTitleCache());
304

    
305
		subSpeciesName.setTitleCache("Pinus beta C.", true);
306
		Assert.assertEquals("Expected full title cache has error", "Pinus beta C., GenericRef", subSpeciesName.getFullTitleCache());
307
		subSpeciesName.setProtectedTitleCache(false);
308
		
309
		Assert.assertEquals("Expected full title cache has error", "Pinus alba subsp. beta (Basio, A.) M., GenericRef", subSpeciesName.getFullTitleCache());
310
		
311
		//protected full title cache set
312
		subSpeciesName.setFullTitleCache("ABC");
313
		Assert.assertEquals("Expected full title cache has error", "ABC", subSpeciesName.getFullTitleCache());
314
		subSpeciesName.setProtectedFullTitleCache(false);
315
		Assert.assertEquals("Expected full title cache has error", "Pinus alba subsp. beta (Basio, A.) M., GenericRef", subSpeciesName.getFullTitleCache());
316

    
317
		//protected title cache set
318
		subSpeciesName.setProtectedTitleCache(false);
319
		Assert.assertEquals("Expected full title cache has error", "Pinus alba subsp. beta (Basio, A.) M., GenericRef", subSpeciesName.getFullTitleCache());
320
		
321
		//protectedNameCache set
322
		subSpeciesName.setProtectedNameCache(true);
323
		Assert.assertEquals("Expected full title cache has error", "Pinus alba subsp. beta (Basio, A.) M., GenericRef", subSpeciesName.getFullTitleCache());
324
		subSpeciesName.setNameCache("P. alba subsp. beta");
325
		Assert.assertEquals("Expected full title cache has error", "P. alba subsp. beta (Basio, A.) M., GenericRef", subSpeciesName.getFullTitleCache());
326
		
327
		subSpeciesName.setGenusOrUninomial("A.");
328
		subSpeciesName.setProtectedNameCache(false);
329
		Assert.assertEquals("Expected full title cache has error", "A. alba subsp. beta (Basio, A.) M., GenericRef", subSpeciesName.getFullTitleCache());
330
		subSpeciesName.setNameCache("P. alba subsp. beta");
331
		Assert.assertEquals("Expected full title cache has error", "P. alba subsp. beta (Basio, A.) M., GenericRef", subSpeciesName.getFullTitleCache());
332
	
333
		//protected authorship
334
		subSpeciesName.setProtectedAuthorshipCache(true);
335
		Assert.assertEquals("Expected full title cache has error", "P. alba subsp. beta (Basio, A.) M., GenericRef", subSpeciesName.getFullTitleCache());
336
		subSpeciesName.setAuthorshipCache("Ciard.");
337
		Assert.assertEquals("Expected full title cache has error", "P. alba subsp. beta Ciard., GenericRef", subSpeciesName.getFullTitleCache());
338
		
339
		author.setNomenclaturalTitle("X.");
340
		subSpeciesName.setProtectedAuthorshipCache(false);
341
		Assert.assertEquals("Expected full title cache has error", "P. alba subsp. beta (Basio, A.) X., GenericRef", subSpeciesName.getFullTitleCache());
342
		
343
		//clear
344
		subSpeciesName.setProtectedNameCache(false);
345
		Assert.assertEquals("Expected full title cache has error", "A. alba subsp. beta (Basio, A.) X., GenericRef", subSpeciesName.getFullTitleCache());
346
		
347
		//appended phrase
348
		subSpeciesName.setProtectedNameCache(true);
349
		Assert.assertEquals("Expected full title cache has error", "A. alba subsp. beta (Basio, A.) X., GenericRef", subSpeciesName.getFullTitleCache());
350
		subSpeciesName.setAppendedPhrase("app phrase");
351
		Assert.assertEquals("Expected full title cache has error", "A. alba subsp. beta (Basio, A.) X., GenericRef", subSpeciesName.getFullTitleCache());
352
		subSpeciesName.setProtectedNameCache(false);
353
		Assert.assertEquals("Expected full title cache has error", "A. alba subsp. beta app phrase (Basio, A.) X., GenericRef", subSpeciesName.getFullTitleCache());
354
		subSpeciesName.setAppendedPhrase("app2 phrase2");
355
		subSpeciesName.setProtectedNameCache(true);
356
		Assert.assertNull("NameCache should be null", subSpeciesName.getNameCache());
357
		subSpeciesName.setProtectedNameCache(false);
358
		subSpeciesName.setAppendedPhrase(null);
359
		
360
		
361
		//ref + nomRef
362
		Reference book = ReferenceFactory.newBook();
363
		book.setTitle("Booktitle");
364
		Assert.assertNotNull("TitleCache should not be null", subSpeciesName.getTitleCache());
365
		subSpeciesName.setNomenclaturalReference(book);
366
		subSpeciesName.setNomenclaturalMicroReference("22");
367
		Assert.assertEquals("Expected full title cache has error", "A. alba subsp. beta (Basio, A.) X., Booktitle: 22", subSpeciesName.getFullTitleCache());
368
		subSpeciesName.setProtectedTitleCache(true);
369
		Assert.assertNotNull("TitleCache should not be null", subSpeciesName.getTitleCache());
370
		
371
		//year
372
		ZoologicalName zooName = ZoologicalName.NewInstance(Rank.SPECIES());
373
		zooName.setGenusOrUninomial("Homo");
374
		zooName.setSpecificEpithet("sapiens");
375
		zooName.setBasionymAuthorTeam(basAuthor);
376
		zooName.setCombinationAuthorTeam(author);
377
		zooName.setNomenclaturalReference(book);
378
		zooName.setNomenclaturalMicroReference("22");
379
		Assert.assertEquals("Expected full title cache has error", "Homo sapiens (Basio, A.) X., Booktitle: 22", zooName.getFullTitleCache());
380
		
381
		zooName.setOriginalPublicationYear(1922);
382
		zooName.setPublicationYear(1948);
383
		Assert.assertEquals("Expected full title cache has error", "Homo sapiens (Basio, A., 1922) X., 1948, Booktitle: 22", zooName.getFullTitleCache());
384
		zooName.setOriginalPublicationYear(1923);
385
		zooName.setProtectedAuthorshipCache(true);
386
		Assert.assertNull("AuthorshipCache should be null", zooName.getAuthorshipCache());
387
		zooName.setProtectedAuthorshipCache(false);
388
		Assert.assertNotNull("AuthorshipCache should not be null", zooName.getAuthorshipCache());
389
		zooName.setPublicationYear(1949);
390
		zooName.setProtectedAuthorshipCache(true);
391
		Assert.assertNull("AuthorshipCache should be null", zooName.getAuthorshipCache());
392
		
393
		
394
		
395
		
396
	}
397
	
398
	/**
399
	 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.NonViralNameDefaultCacheStrategy#setNameAuthorSeperator(java.lang.String)}.
400
	 */
401
	@Test
402
	public void testGetSetNameAuthorSeperator() {
403
		String authorSeparator = "authorSeparator";
404
		strategy.setNameAuthorSeperator(authorSeparator);
405
		assertEquals(authorSeparator, strategy.getNameAuthorSeperator());
406
		strategy.setNameAuthorSeperator(null);
407
		assertNull(strategy.getNameAuthorSeperator());
408
	}
409

    
410
	/**
411
	 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.NonViralNameDefaultCacheStrategy#setBasionymStart(java.lang.String)}.
412
	 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.NonViralNameDefaultCacheStrategy#getBasionymStart()}.
413
	 */
414
	@Test
415
	public void testGetSetBasionymStart() {
416
		String basStart = "start";
417
		strategy.setBasionymStart(basStart);
418
		assertEquals(basStart, strategy.getBasionymStart());
419
		strategy.setBasionymStart(null);
420
		assertNull(strategy.getBasionymStart());
421
	}
422

    
423
	/**
424
	 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.NonViralNameDefaultCacheStrategy#setBasionymEnd(java.lang.String)}.
425
	 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.NonViralNameDefaultCacheStrategy#getBasionymEnd()}.
426
	*/
427
	@Test
428
	public void testGetSetBasionymEnd() {
429
		String basEnd = "end";
430
		strategy.setBasionymEnd(basEnd);
431
		assertEquals(basEnd, strategy.getBasionymEnd());
432
		strategy.setBasionymEnd(null);
433
		assertNull(strategy.getBasionymEnd());
434
	}
435

    
436
	/**
437
	 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.NonViralNameDefaultCacheStrategy#setExAuthorSeperator(java.lang.String)}.
438
	 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.NonViralNameDefaultCacheStrategy#getExAuthorSeperator()}.
439
	 */
440
	@Test
441
	public void testGetSetExAuthorSeperator() {
442
		String exAuthorSeparator = "exAuthorSeparator";
443
		strategy.setExAuthorSeperator(exAuthorSeparator);
444
		assertEquals(exAuthorSeparator, strategy.getExAuthorSeperator());
445
		strategy.setExAuthorSeperator(null);
446
		assertNull(strategy.getExAuthorSeperator());
447
	}
448

    
449
	/**
450
	 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.NonViralNameDefaultCacheStrategy#setBasionymAuthorCombinationAuthorSeperator(java.lang.CharSequence)}.
451
	 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.NonViralNameDefaultCacheStrategy#getBasionymAuthorCombinationAuthorSeperator()}.
452
	 */
453
	@Test
454
	public void testSetBasionymAuthorCombinationAuthorSeperator() {
455
		String basComSeparator = "basComSeparator";
456
		strategy.setBasionymAuthorCombinationAuthorSeperator(basComSeparator);
457
		assertEquals(basComSeparator, strategy.getBasionymAuthorCombinationAuthorSeperator());
458
		strategy.setBasionymAuthorCombinationAuthorSeperator(null);
459
		assertNull(strategy.getBasionymAuthorCombinationAuthorSeperator());
460
	}
461
	
462
	@Test
463
	public void testGetInfraGenericNames(){
464
		String author = "Anyauthor";
465
		NonViralName<?> nonViralName = NonViralName.NewInstance(Rank.SUBGENUS());
466
		nonViralName.setGenusOrUninomial("Genus");
467
		nonViralName.setInfraGenericEpithet("subgenus");
468
		nonViralName.setAuthorshipCache(author);
469
		
470
		//test ordinary infrageneric
471
		List<TaggedText> subGenusNameCacheTagged = strategy.getInfraGenusTaggedNameCache(nonViralName);
472
		String subGenusNameCache = strategy.createString(subGenusNameCacheTagged);
473
		assertEquals("Subgenus name should be 'Genus subg. subgenus'.", "Genus subg. subgenus", subGenusNameCache);
474
		String subGenusTitle = strategy.getTitleCache(nonViralName);
475
		assertEquals("Subgenus name should be 'Genus subg. subgenus Anyauthor'.", "Genus subg. subgenus Anyauthor", subGenusTitle);
476
		
477
		//test species aggregates and species groups
478
		nonViralName.setRank(Rank.SPECIESAGGREGATE());
479
		nonViralName.setSpecificEpithet("myspecies");
480
		nonViralName.setInfraGenericEpithet(null);
481
		
482
		List<TaggedText> aggrNameCacheTagged = strategy.getInfraGenusTaggedNameCache(nonViralName);
483
		
484
		String aggrNameCache = strategy.createString(aggrNameCacheTagged);
485
		assertEquals("Species aggregate name should be 'Genus myspecies aggr.'.", "Genus myspecies aggr.", aggrNameCache);
486
		String aggrNameTitle = strategy.getTitleCache(nonViralName);
487
		Assert.assertTrue("Species aggregate should not include author information.", aggrNameTitle.indexOf(author) == -1);
488
		assertEquals("Species aggregate name should be 'Genus myspecies aggr.'.", "Genus myspecies aggr.", aggrNameTitle);
489
		nonViralName.setRank(Rank.SPECIESGROUP());
490
		String groupNameTitle = strategy.getTitleCache(nonViralName);
491
		assertEquals("Species group name should be 'Genus myspecies species group'.", "Genus myspecies species group", groupNameTitle);
492
		
493
		//test species aggregates and species groups with infrageneric information
494
		//TODO check if groups do ever have infrageneric epithets
495
		nonViralName.setRank(Rank.SPECIESAGGREGATE());
496
		nonViralName.setSpecificEpithet("myspecies");
497
		nonViralName.setInfraGenericEpithet("Infragenus");
498
		
499
		
500
		aggrNameCacheTagged = strategy.getInfraGenusTaggedNameCache(nonViralName);
501
		aggrNameCache = strategy.createString(aggrNameCacheTagged);
502
		assertEquals("Species aggregate name should be 'Genus (Infragenus) myspecies aggr.'.", "Genus (Infragenus) myspecies aggr.", aggrNameCache);
503
		
504
		aggrNameTitle = strategy.getTitleCache(nonViralName);
505
		Assert.assertTrue("Species aggregate should not include author information.", aggrNameTitle.indexOf(author) == -1);
506
		assertEquals("Species aggregate name should be 'Genus (Infragenus) myspecies aggr.'.", "Genus (Infragenus) myspecies aggr.", aggrNameTitle);
507
		
508
		nonViralName.setRank(Rank.SPECIESGROUP());
509
		groupNameTitle = strategy.getTitleCache(nonViralName);
510
		assertEquals("Species group name should be 'Genus (Infragenus) myspecies species group'.", "Genus (Infragenus) myspecies species group", groupNameTitle);
511
		
512
		
513
	}
514

    
515
	/**
516
	 * Test method for {@link eu.etaxonomy.cdm.strategy.cache.name.NonViralNameDefaultCacheStrategy#getTaggedNameDeprecated(eu.etaxonomy.cdm.model.name.NonViralName)}.
517
	 */
518
	@Test
519
	public void testGetTaggedNameSpeciesAggregate() {
520
		BotanicalName speciesAggregate = BotanicalName.NewInstance(Rank.SPECIESAGGREGATE());
521
		speciesAggregate.setGenusOrUninomial("Mygenus");
522
		speciesAggregate.setSpecificEpithet("myspecies");
523
		List<Object> taggedName = strategy.getTaggedNameDeprecated(speciesAggregate);
524
		Assert.assertEquals("1rd tag must be genus epithet", "Mygenus", taggedName.get(0));
525
		Assert.assertEquals("2rd tag must be species epithet", "myspecies", taggedName.get(1));
526
		Assert.assertEquals("3rd tag must be aggregate marker", "aggr.",taggedName.get(2));
527
	}
528

    
529
	
530
	@Test 
531
	public void testGetTaggedNameSubspecies(){
532
		List taggedName = strategy.getTaggedNameDeprecated(subSpeciesName);
533
		Assert.assertEquals("First tag should be 'Abies'", "Abies", taggedName.get(0));
534
		Assert.assertEquals("Second tag should be 'alba'", "alba", taggedName.get(1));
535
		Assert.assertEquals("Third tag should be subspecies rank", Rank.SUBSPECIES(), taggedName.get(2));
536
		Assert.assertEquals("Third tag should be subspecies rank, and rank abbreviatioin should be subsp.", "subsp.", ((Rank)taggedName.get(2)).getAbbreviation() );
537
		Assert.assertEquals("Fourth tag should be 'beta'", "beta", taggedName.get(3));
538
		//to be continued
539

    
540
	}
541

    
542

    
543
}
(2-2/3)