Project

General

Profile

Download (17.2 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.model.name;
11

    
12
import static org.junit.Assert.assertEquals;
13
import static org.junit.Assert.assertNotNull;
14

    
15
import java.util.HashSet;
16
import java.util.Set;
17

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

    
25
import eu.etaxonomy.cdm.model.agent.Team;
26
import eu.etaxonomy.cdm.model.common.DefaultTermInitializer;
27
import eu.etaxonomy.cdm.model.reference.IGeneric;
28
import eu.etaxonomy.cdm.model.reference.INomenclaturalReference;
29
import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
30
import eu.etaxonomy.cdm.test.unit.EntityTestBase;
31

    
32
/**
33
 * @author a.mueller
34
 *
35
 */
36
public class NonViralNameTest extends EntityTestBase {
37
	private static Logger logger = Logger.getLogger(NonViralNameTest.class);
38

    
39

    
40
	INonViralName nonViralName1;
41
	INonViralName nonViralName2;
42

    
43
	@BeforeClass
44
	public static void setUpBeforeClass() {
45
		DefaultTermInitializer vocabularyStore = new DefaultTermInitializer();
46
		vocabularyStore.initialize();
47
	}
48

    
49
	/**
50
	 * @throws java.lang.Exception
51
	 */
52
	@Before
53
	public void setUp() throws Exception {
54
		nonViralName1 = new BotanicalName();
55
		nonViralName2 = new BotanicalName();
56
	}
57

    
58
	/**
59
	 * @throws java.lang.Exception
60
	 */
61
	@After
62
	public void tearDown() throws Exception {
63
	}
64

    
65
// ******************* TESTS ***********************************/
66

    
67
	/**
68
	 * Test method for {@link eu.etaxonomy.cdm.model.name.NonViralName#generateTitle()}.
69
	 */
70
	@Test
71
	public final void testGenerateTitle() {
72
		String fullName = "Abies alba subsp. beta (L.) Mill.";
73
		nonViralName1.setGenusOrUninomial("Genus");
74
		nonViralName1.setSpecificEpithet("spec");
75
		nonViralName1.setRank(Rank.SPECIES());
76
		assertEquals("Genus spec", nonViralName1.generateTitle());
77
		assertEquals("", nonViralName2.generateTitle());
78
	}
79

    
80
	/**
81
	 * Test method for {@link eu.etaxonomy.cdm.model.name.NonViralName#isCodeCompliant()}.
82
	 */
83
	@Test
84
	public final void testIsCodeCompliant() {
85
		logger.warn("Not yet implemented"); // TODO
86
	}
87

    
88
	/**
89
	 * Test method for {@link eu.etaxonomy.cdm.model.name.NonViralName#NonViralName()}.
90
	 */
91
	@Test
92
	public final void testNonViralName() {
93
		assertNotNull(nonViralName1);
94
	}
95

    
96
	/**
97
	 * Test method for {@link eu.etaxonomy.cdm.model.name.NonViralName#NonViralName(eu.etaxonomy.cdm.model.name.Rank)}.
98
	 */
99
	@Test
100
	public final void testNonViralNameRank() {
101
		INonViralName nonViralName = TaxonNameFactory.NewNonViralInstance(Rank.GENUS());
102
		assertNotNull(nonViralName);
103
	}
104

    
105
	/**
106
	 * Test method for {@link eu.etaxonomy.cdm.model.name.NonViralName#NonViralName(eu.etaxonomy.cdm.model.name.Rank, java.lang.String, java.lang.String, java.lang.String, eu.etaxonomy.cdm.model.agent.Agent, eu.etaxonomy.cdm.model.reference.INomenclaturalReference, java.lang.String)}.
107
	 */
108
	@Test
109
	public final void testNonViralNameRankStringStringStringAgentINomenclaturalReferenceString() {
110
		Team agent = Team.NewInstance();
111
		INomenclaturalReference article = ReferenceFactory.newArticle();
112
		HomotypicalGroup homotypicalGroup = HomotypicalGroup.NewInstance();
113
		INonViralName nonViralName = new NonViralName(Rank.GENUS(), "Genus", "infraGen", "species", "infraSpec", agent, article, "mikro", homotypicalGroup);
114
		assertEquals("Genus", nonViralName.getGenusOrUninomial() );
115
		assertEquals("infraGen", nonViralName.getInfraGenericEpithet());
116
		assertEquals("species", nonViralName.getSpecificEpithet() );
117
		assertEquals("infraSpec", nonViralName.getInfraSpecificEpithet());
118
		assertEquals(agent, nonViralName.getCombinationAuthorship() );
119
		assertEquals(article, nonViralName.getNomenclaturalReference() );
120
		assertEquals("mikro", nonViralName.getNomenclaturalMicroReference() );
121
	}
122

    
123
	/**
124
	 * Test method for {@link eu.etaxonomy.cdm.model.name.NonViralName#getCombinationAuthorship()}.
125
	 * Test method for {@link eu.etaxonomy.cdm.model.name.NonViralName#setCombinationAuthorship(eu.etaxonomy.cdm.model.agent.Agent)}.
126
	 */
127
	@Test
128
	public final void testGetSetCombinationAuthorship() {
129
		Team team1 = Team.NewInstance();
130
		nonViralName1.setCombinationAuthorship(team1);
131
		assertEquals(team1, nonViralName1.getCombinationAuthorship());
132
		nonViralName1.setCombinationAuthorship(null);
133
		assertEquals(null, nonViralName1.getCombinationAuthorship());
134
		nonViralName2.setCombinationAuthorship(null);
135
		assertEquals(null, nonViralName2.getCombinationAuthorship());
136
	}
137

    
138

    
139
	/**
140
	 * Test method for {@link eu.etaxonomy.cdm.model.name.NonViralName#getExCombinationAuthorship()}.
141
	 */
142
	@Test
143
	public final void testGetSetExCombinationAuthorship() {
144
		Team team1 = Team.NewInstance();
145
		nonViralName1.setExCombinationAuthorship(team1);
146
		assertEquals(team1, nonViralName1.getExCombinationAuthorship());
147
		nonViralName1.setExCombinationAuthorship(null);
148
		assertEquals(null, nonViralName1.getExCombinationAuthorship());
149
		nonViralName2.setExCombinationAuthorship(null);
150
		assertEquals(null, nonViralName2.getExCombinationAuthorship());
151
	}
152

    
153

    
154
	/**
155
	 * Test method for {@link eu.etaxonomy.cdm.model.name.NonViralName#getCombinationAuthorship()}.
156
	 * Test method for {@link eu.etaxonomy.cdm.model.name.NonViralName#setCombinationAuthorship(eu.etaxonomy.cdm.model.agent.Agent)}.
157
	 */
158
	@Test
159
	public final void testGetSetBasionymAuthorship() {
160
		Team team1 = Team.NewInstance();
161
		nonViralName1.setBasionymAuthorship(team1);
162
		assertEquals(team1, nonViralName1.getBasionymAuthorship());
163
		nonViralName1.setBasionymAuthorship(null);
164
		assertEquals(null, nonViralName1.getBasionymAuthorship());
165
		nonViralName2.setBasionymAuthorship(null);
166
		assertEquals(null, nonViralName2.getBasionymAuthorship());
167
	}
168

    
169

    
170
	/**
171
	 * Test method for {@link eu.etaxonomy.cdm.model.name.NonViralName#getExCombinationAuthorship()}.
172
	 */
173
	@Test
174
	public final void testGetSetExBasionymAuthorship() {
175
		Team team1 = Team.NewInstance();
176
		nonViralName1.setExBasionymAuthorship(team1);
177
		assertEquals(team1, nonViralName1.getExBasionymAuthorship());
178
		nonViralName1.setExBasionymAuthorship(null);
179
		assertEquals(null, nonViralName1.getExBasionymAuthorship());
180
		nonViralName2.setExBasionymAuthorship(null);
181
		assertEquals(null, nonViralName2.getExBasionymAuthorship());
182
	}
183

    
184

    
185
	/**
186
	 * Test method for {@link eu.etaxonomy.cdm.model.name.NonViralName#getGenusOrUninomial()}.
187
	 */
188
	@Test
189
	public final void testGetSetGenusOrUninomial() {
190
		nonViralName1.setGenusOrUninomial("Genus");
191
		assertEquals("Genus", nonViralName1.getGenusOrUninomial());
192
		nonViralName1.setGenusOrUninomial(null);
193
		assertEquals(null, nonViralName1.getGenusOrUninomial());
194
		nonViralName2.setGenusOrUninomial(null);
195
		assertEquals(null, nonViralName2.getGenusOrUninomial());
196
	}
197

    
198
	/**
199
	 * Test method for {@link eu.etaxonomy.cdm.model.name.NonViralName#getInfragenericEpithet()}.
200
	 */
201
	@Test
202
	public final void testGetSetInfraGenericEpithet() {
203
		nonViralName1.setInfraGenericEpithet("InfraGenus");
204
		assertEquals("InfraGenus", nonViralName1.getInfraGenericEpithet());
205
		nonViralName1.setInfraGenericEpithet(null);
206
		assertEquals(null, nonViralName1.getInfraGenericEpithet());
207
		nonViralName2.setInfraGenericEpithet(null);
208
		assertEquals(null, nonViralName2.getInfraGenericEpithet());
209
	}
210

    
211
	/**
212
	 * Test method for {@link eu.etaxonomy.cdm.model.name.NonViralName#getSpecificEpithet()}.
213
	 */
214
	@Test
215
	public final void testGetSetSpecificEpithet() {
216
		nonViralName1.setSpecificEpithet("specEpi");
217
		assertEquals("specEpi", nonViralName1.getSpecificEpithet());
218
		nonViralName1.setSpecificEpithet(null);
219
		assertEquals(null, nonViralName1.getSpecificEpithet());
220
		nonViralName2.setSpecificEpithet(null);
221
		assertEquals(null, nonViralName2.getSpecificEpithet());
222
	}
223

    
224
	/**
225
	 * Test method for {@link eu.etaxonomy.cdm.model.name.NonViralName#getInfraSpecificEpithet()}.
226
	 */
227
	@Test
228
	public final void testGetSetInfraSpecificEpithet() {
229
		nonViralName1.setInfraSpecificEpithet("InfraSpecEpi");
230
		assertEquals("InfraSpecEpi", nonViralName1.getInfraSpecificEpithet());
231
		nonViralName1.setInfraSpecificEpithet(null);
232
		assertEquals(null, nonViralName1.getInfraSpecificEpithet());
233
		nonViralName2.setInfraSpecificEpithet(null);
234
		assertEquals(null, nonViralName2.getInfraSpecificEpithet());
235
	}
236

    
237
	/**
238
	 * Test method for {@link eu.etaxonomy.cdm.model.name.NonViralName#setAuthorshipCache(java.lang.String)}.
239
	 * Test method for {@link eu.etaxonomy.cdm.model.name.NonViralName#getAuthorshipCache()}.
240
	 * NOT FINISHED YET
241
	 */
242
	@Test
243

    
244
	public final void testGetSetAuthorshipCache() {
245
		String strTeam1 = "Team1";
246
		String strTeam2 = "Team2";
247
		String strTeam3 = "Team3";
248
		IGeneric ref1 = ReferenceFactory.newGeneric();
249
		ref1.setTitleCache("RefTitle",true);
250

    
251
		Team team1 = Team.NewInstance();
252
		Team team2 = Team.NewInstance();
253
		team1.setNomenclaturalTitle(strTeam1);
254
		team2.setNomenclaturalTitle(strTeam2);
255
		nonViralName1.setGenusOrUninomial("Abies");
256
		nonViralName1.setSpecificEpithet("alba");
257
		nonViralName1.setNomenclaturalReference(ref1);
258
		Assert.assertEquals("Abies alba", nonViralName1.getNameCache());
259

    
260
		nonViralName1.setCombinationAuthorship(team1);
261
		assertEquals(team1, nonViralName1.getCombinationAuthorship());
262
		assertEquals(strTeam1, nonViralName1.getAuthorshipCache());
263
		Assert.assertEquals("Abies alba "+strTeam1, nonViralName1.getTitleCache());
264
		Assert.assertEquals("Abies alba "+strTeam1+ ", RefTitle", nonViralName1.getFullTitleCache());
265

    
266
		nonViralName1.setAuthorshipCache(strTeam2);
267
		assertEquals(strTeam2, nonViralName1.getAuthorshipCache());
268
		nonViralName1.setGenusOrUninomial("Calendula");
269
		Assert.assertEquals("Calendula alba "+strTeam2, nonViralName1.getTitleCache());
270

    
271
		nonViralName1.setAuthorshipCache(strTeam3);
272
		Assert.assertEquals("Calendula alba "+strTeam3, nonViralName1.getTitleCache());
273

    
274
		Assert.assertEquals("Calendula alba "+strTeam3+ ", RefTitle", nonViralName1.getFullTitleCache());
275

    
276
		nonViralName1.setCombinationAuthorship(null);
277
		assertEquals(null, nonViralName1.getCombinationAuthorship());
278
	}
279

    
280

    
281
	@Test
282
	public final void testGetChildAndParentRelationships() {
283
		INonViralName nonViralName1 = TaxonNameFactory.NewNonViralInstance(null);
284
		assertEquals(0, nonViralName1.getHybridParentRelations().size());
285
		assertEquals(0, nonViralName1.getHybridChildRelations().size());
286
		IBotanicalName femaleParent = TaxonNameFactory.NewBotanicalInstance(null);
287
		HybridRelationship hybridRelationship = new HybridRelationship(nonViralName1, femaleParent, HybridRelationshipType.FEMALE_PARENT(), null );
288
		assertEquals(1, nonViralName1.getHybridChildRelations().size());
289
		assertEquals(hybridRelationship, nonViralName1.getHybridChildRelations().iterator().next());
290
		assertEquals(1, femaleParent.getHybridParentRelations().size());
291
	}
292

    
293
	@Test
294
	public final void testAddHybridRelationships() {
295
		INonViralName nonViralName1 = TaxonNameFactory.NewNonViralInstance(null);
296
		assertEquals(0, nonViralName1.getHybridParentRelations().size());
297
		assertEquals(0, nonViralName1.getHybridChildRelations().size());
298
		IBotanicalName femaleParent = TaxonNameFactory.NewBotanicalInstance(null);
299
		IBotanicalName maleParent = TaxonNameFactory.NewBotanicalInstance(null);
300

    
301
		nonViralName1.addHybridParent(femaleParent, HybridRelationshipType.MALE_PARENT(), null);
302
		nonViralName1.addHybridParent(maleParent, HybridRelationshipType.MALE_PARENT(), null);
303

    
304
		assertEquals(2, nonViralName1.getHybridChildRelations().size());
305
		assertEquals(0, nonViralName1.getHybridParentRelations().size());
306
		assertEquals(1, maleParent.getHybridParentRelations().size());
307
		assertEquals(1, femaleParent.getHybridParentRelations().size());
308
		assertEquals(0, maleParent.getHybridChildRelations().size());
309
		assertEquals(0, femaleParent.getHybridChildRelations().size());
310

    
311
	}
312

    
313
	@Test(expected=IllegalArgumentException.class)
314
	public final void testAddHybridRelationship() {
315
		INonViralName nonViralName1 = TaxonNameFactory.NewNonViralInstance(null);
316
		assertEquals(0, nonViralName1.getHybridParentRelations().size());
317
		assertEquals(0, nonViralName1.getHybridChildRelations().size());
318
		TaxonNameBase<?,?> botanicalName2 = TaxonNameFactory.NewNonViralInstance(null);
319
		botanicalName2.addHybridRelationship(null);
320
	}
321

    
322
	@Test
323
	public final void testRemoveHybridRelationship() {
324
		INonViralName botanicalName1 = TaxonNameFactory.NewNonViralInstance(null);
325
		assertEquals(0, botanicalName1.getHybridParentRelations().size());
326
		assertEquals(0, botanicalName1.getHybridChildRelations().size());
327
		IBotanicalName femaleParent = TaxonNameFactory.NewBotanicalInstance(null);
328
		TaxonNameBase<?,?> maleParent = TaxonNameFactory.NewNonViralInstance(null);
329
		IZoologicalName child = TaxonNameFactory.NewZoologicalInstance(null);
330

    
331
		botanicalName1.addHybridParent(femaleParent, HybridRelationshipType.FEMALE_PARENT(), null);
332
		botanicalName1.addHybridParent(maleParent, HybridRelationshipType.MALE_PARENT(), null);
333
		botanicalName1.addHybridChild(child, HybridRelationshipType.FIRST_PARENT(), null);
334
		assertEquals(2, botanicalName1.getHybridChildRelations().size());
335
		assertEquals(1, botanicalName1.getHybridParentRelations().size());
336
		assertEquals(1, child.getHybridChildRelations().size());
337

    
338
		botanicalName1.removeHybridParent(femaleParent);
339
		assertEquals(1, botanicalName1.getHybridChildRelations().size());
340
		assertEquals(1, botanicalName1.getHybridParentRelations().size());
341

    
342
		botanicalName1.removeHybridParent(maleParent);
343
		assertEquals(0, botanicalName1.getHybridChildRelations().size());
344
		assertEquals(1, botanicalName1.getHybridParentRelations().size());
345

    
346
		botanicalName1.removeHybridChild(child);
347
		assertEquals(0, botanicalName1.getHybridParentRelations().size());
348

    
349
		//null
350
		botanicalName1.removeHybridRelationship(null);
351
		assertEquals(0, botanicalName1.getHybridChildRelations().size());
352
	}
353

    
354

    
355

    
356
	@Test
357
	public void testClone(){
358

    
359
		Team combinationAuthor = Team.NewTitledInstance("CombinationAuthor", "comb. auth.");
360
		nonViralName1.setRank(Rank.SUBSPECIES());
361
		nonViralName1.setCombinationAuthorship(combinationAuthor);
362
		nonViralName1.setGenusOrUninomial("Aus");
363
		nonViralName1.setInfraGenericEpithet("Infaus");
364
		nonViralName1.setSpecificEpithet("bus");
365
		nonViralName1.setInfraSpecificEpithet("infrabus");
366
		nonViralName1.setBinomHybrid(true);
367

    
368
		INonViralName parent = TaxonNameFactory.NewNonViralInstance(Rank.SPECIES());
369
		INonViralName parent2 = TaxonNameFactory.NewNonViralInstance(Rank.SPECIES());
370
		INonViralName child = TaxonNameFactory.NewNonViralInstance(Rank.SPECIES());
371
		INonViralName child2 = TaxonNameFactory.NewNonViralInstance(Rank.SPECIES());
372
		nonViralName1.addHybridParent(parent, HybridRelationshipType.FIRST_PARENT(), "parent rule");
373
		nonViralName1.addHybridParent(parent2, HybridRelationshipType.SECOND_PARENT(), "parent rule2");
374
		nonViralName1.addHybridChild(child, HybridRelationshipType.FEMALE_PARENT(), "child rule");
375

    
376

    
377
		INonViralName clone = (INonViralName)((NonViralName)nonViralName1).clone();
378
		Assert.assertEquals("Genus should be equal", "Aus", clone.getGenusOrUninomial());
379
		Assert.assertEquals("Infragenus should be equal", "Infaus", clone.getInfraGenericEpithet());
380
		Assert.assertEquals("Specific epithet should be equal", "bus", clone.getSpecificEpithet());
381
		Assert.assertEquals("Infraspecific epithet should be equal", "infrabus", clone.getInfraSpecificEpithet());
382
		Assert.assertEquals("BinomHybrid should be equal", true, clone.isBinomHybrid());
383
		Assert.assertSame("Combination author should be the same", combinationAuthor, clone.getCombinationAuthorship());
384
		Assert.assertEquals("NameCache should be equal", nonViralName1.getNameCache(), clone.getNameCache());
385
		Assert.assertEquals("AuthorshipCache should be equal", nonViralName1.getAuthorshipCache(), clone.getAuthorshipCache());
386

    
387
		clone.setSpecificEpithet("sub");
388
		Assert.assertEquals("NameCache should be changed", "Aus (\u00D7Infaus) sub subsp. infrabus", clone.getNameCache());
389

    
390
		//hybrid parents of clone
391
		Assert.assertEquals("There should be exactly 2 hybrid relationships in which the clone takes the child role", 2, clone.getHybridChildRelations().size());
392
		Set<TaxonNameBase> parentSet = new HashSet<>();
393
		Set<TaxonNameBase> childSet = new HashSet<>();
394
		for (Object object : clone.getHybridChildRelations()){
395
			HybridRelationship childRelation = (HybridRelationship)object;
396
			TaxonNameBase<?,?> relatedFrom = childRelation.getRelatedFrom();
397
			parentSet.add(relatedFrom);
398
			TaxonNameBase<?,?> relatedTo = childRelation.getRelatedTo();
399
			childSet.add(relatedTo);
400
		}
401
		Assert.assertTrue("Parent set should contain parent1", parentSet.contains(parent));
402
		Assert.assertTrue("Parent set should contain parent2", parentSet.contains(parent2));
403
		Assert.assertTrue("Child set should contain clone", childSet.contains(clone));
404

    
405
		//hybrid child of clone
406
		Assert.assertEquals("There should be exactly 1 hybrid relationship in which the clone takes the parent role", 1, clone.getHybridParentRelations().size());
407
		HybridRelationship parentRelation = clone.getHybridParentRelations().iterator().next();
408
		Assert.assertSame("Clone should be parent in parentRelationship", clone, parentRelation.getRelatedFrom());
409
		Assert.assertSame("Child should be child in parentRelationship", child, parentRelation.getRelatedTo());
410
		Assert.assertSame("Relationship type should be cloned correctly", HybridRelationshipType.FEMALE_PARENT(), parentRelation.getType());
411
		Assert.assertEquals("Rule should be cloned correctly", "child rule", parentRelation.getRuleConsidered());
412
	}
413
}
(8-8/13)