Project

General

Profile

Download (16.7 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.taxon;
11

    
12
import static org.junit.Assert.assertEquals;
13
import static org.junit.Assert.assertFalse;
14
import static org.junit.Assert.assertNotNull;
15
import static org.junit.Assert.assertTrue;
16

    
17
import java.util.Set;
18

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

    
26
import eu.etaxonomy.cdm.model.agent.Person;
27
import eu.etaxonomy.cdm.model.common.DefaultTermInitializer;
28
import eu.etaxonomy.cdm.model.description.TaxonDescription;
29
import eu.etaxonomy.cdm.model.name.BotanicalName;
30
import eu.etaxonomy.cdm.model.name.Rank;
31
import eu.etaxonomy.cdm.model.name.ZoologicalName;
32
//import eu.etaxonomy.cdm.model.reference.Book;
33
import eu.etaxonomy.cdm.model.reference.ReferenceBase;
34
import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
35
import eu.etaxonomy.cdm.test.unit.EntityTestBase;
36

    
37
public class TaxonTest extends EntityTestBase {
38
	private static final Logger logger = Logger.getLogger(TaxonTest.class);
39

    
40
	
41
	private ReferenceBase sec;
42
	private ReferenceBase misSec;
43
	private ZoologicalName name1;
44
	private BotanicalName name2;
45
	private Taxon rootT;
46
	private Taxon child1;
47
	private Taxon child2;
48
	private Synonym syn1;
49
	private Synonym syn2;
50
	private BotanicalName name3;
51
	private BotanicalName name4;
52
	private Taxon freeT;
53
	private Taxon misTaxon1;
54
	private Taxon misTaxon2;
55
	
56
	@BeforeClass
57
	public static void setUpBeforeClass() {
58
		DefaultTermInitializer vocabularyStore = new DefaultTermInitializer();
59
		vocabularyStore.initialize();
60
	}
61
	
62
	@Before
63
	public void setUp() throws Exception {
64
		ReferenceFactory refFactory = ReferenceFactory.newInstance();
65
		Person linne =new Person("Carl", "Linné", "L.");
66
		sec= refFactory.newBook();
67
		sec.setAuthorTeam(linne);
68
		sec.setTitleCache("Schönes saftiges Allgäu", true);
69
		misSec = refFactory.newBook();
70
		misSec.setTitleCache("Stupid book", true);
71
		
72
		name1 = ZoologicalName.NewInstance(Rank.SPECIES(),"Panthera",null,"onca",null,linne,null,"p.1467", null);
73
		name2 = BotanicalName.NewInstance(Rank.SPECIES(),"Abies",null,"alba",null,linne,null,"p.317", null);
74
		name3 = BotanicalName.NewInstance(Rank.SUBSPECIES(),"Polygala",null,"vulgaris","alpina",linne,null,"p.191", null);
75
		name4 = BotanicalName.NewInstance(Rank.SPECIES(),"Cichoria",null,"carminata",null,linne,null,"p.14", null);
76
		rootT = Taxon.NewInstance(name1,sec);
77
		freeT = Taxon.NewInstance(name4,sec);
78
		// taxonomic children
79
		child1 = Taxon.NewInstance(name2,sec);
80
		child2 = Taxon.NewInstance(name3,sec);
81
		rootT.addTaxonomicChild(child1, sec, "p.998");
82
		rootT.addTaxonomicChild(child2, sec, "p.987");
83
		// synonymy
84
		syn1=Synonym.NewInstance(name1,sec);
85
		syn2=Synonym.NewInstance(name2,sec);
86
		child1.addSynonym(syn1, SynonymRelationshipType.HETEROTYPIC_SYNONYM_OF());
87
		child2.addSynonym(syn2, SynonymRelationshipType.HOMOTYPIC_SYNONYM_OF());
88
		//misaplication
89
		misTaxon1 = Taxon.NewInstance(name4, misSec);
90
		misTaxon2 = Taxon.NewInstance(name4, misSec);
91
		rootT.addMisappliedName(misTaxon1, null, "99");
92
		child1.addMisappliedName(misTaxon2, null, "44");
93
	}
94

    
95
	@Test
96
	public void testGenerateTitle() {
97
		assertTrue(rootT.generateTitle().startsWith(rootT.getName().getTitleCache()));
98
	}
99

    
100
	@Test
101
	public void testAddTaxonomicChild() {
102
		rootT.addTaxonomicChild(freeT, null, null);
103
		Assert.assertEquals(Integer.valueOf(3), Integer.valueOf(rootT.getTaxonomicChildren().size()));
104
	}
105

    
106
	@Test
107
	public void testGetTaxonomicParent() {
108
		assertEquals(rootT, child2.getTaxonomicParent());
109
	}
110

    
111
	@Test
112
	public void testSetTaxonomicParent() {
113
		child2.setTaxonomicParent(child1, null, null);
114
		assertEquals(child1, child2.getTaxonomicParent());
115
	}
116

    
117
	@Test
118
	public void testGetTaxonomicChildren() {
119
		Set<Taxon> kids=rootT.getTaxonomicChildren();
120
		assertTrue(kids.size()==2 && kids.contains(child1) && kids.contains(child2));
121
	}
122

    
123
	@Test
124
	public void testHasTaxonomicChildren() {
125
		assertFalse(child2.hasTaxonomicChildren());
126
		assertTrue(rootT.hasTaxonomicChildren());
127
		rootT.removeTaxonomicChild(child1);
128
		assertTrue(rootT.hasTaxonomicChildren());
129
		rootT.removeTaxonomicChild(child2);
130
		assertFalse(rootT.hasTaxonomicChildren());
131
	}
132

    
133
	@Test
134
	public void testGetTaxonomicChildrenCount() {
135
		assertEquals(0, child2.getTaxonomicChildrenCount());
136
		assertEquals(2, rootT.getTaxonomicChildrenCount());
137
		rootT.removeTaxonomicChild(child1);
138
		assertEquals(1, rootT.getTaxonomicChildrenCount());
139
		rootT.removeTaxonomicChild(child2);
140
		assertEquals(0, rootT.getTaxonomicChildrenCount());
141
	}
142

    
143
	@Test
144
	public void testIsMisappliedName() {
145
		assertFalse(child2.isMisappliedName());
146
		assertFalse(rootT.isMisappliedName());
147
		assertTrue(misTaxon1.isMisappliedName());
148
		assertTrue(misTaxon2.isMisappliedName());
149
	}
150
	
151
	@Test
152
	public void testGetSynonyms() {
153
		assertTrue(child1.getSynonyms().contains(syn1));
154
		assertTrue(child2.getSynonyms().contains(syn2));
155
		assertTrue(rootT.getSynonyms().isEmpty());
156
	}
157

    
158
	@Test
159
	public void testGetSynonymNames() {
160
		assertTrue(child1.getSynonymNames().contains(name1));
161
		assertTrue(child2.getSynonymNames().contains(name2));
162
		assertTrue(rootT.getSynonymNames().isEmpty());
163
	}
164

    
165
	@Test
166
	public void testAddSynonym() {
167
		freeT.addSynonym(syn1, SynonymRelationshipType.HETEROTYPIC_SYNONYM_OF());
168
		assertTrue(freeT.getSynonyms().contains(syn1));
169
		assertTrue(syn1.getAcceptedTaxa().contains(freeT));
170
		assertFalse(freeT.getSynonyms().contains(syn2));
171
	}
172
	
173
	@Test
174
	public void testAddAndRemoveDescriptionTaxonDescription() {
175
		TaxonDescription desc = TaxonDescription.NewInstance();
176
		rootT.addDescription(desc);  //test if reflection method in addDescription() works
177
		assertTrue("The description has not properly been added to the taxon", rootT.getDescriptions().contains(desc));
178
		assertEquals("The taxon has not properly been added to the description", rootT, desc.getTaxon());
179
		rootT.removeDescription(desc); //test if reflection method in removeDescription() works
180
		assertFalse("The description has not properly been removed from the taxon", rootT.getDescriptions().contains(desc));
181
		assertEquals("The taxon has not properly been removed from the description", null, desc.getTaxon());
182
	}
183
	
184
	/**
185
	 * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#NewInstance(eu.etaxonomy.cdm.model.name.TaxonNameBase, eu.etaxonomy.cdm.model.reference.ReferenceBase)}.
186
	 */
187
	@Test
188
	public void testNewInstance() {
189
		logger.warn("Not yet implemented");
190
	}
191

    
192
	/**
193
	 * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#Taxon()}.
194
	 */
195
	@Test
196
	public void testTaxon() {
197
		logger.warn("Not yet implemented");
198
	}
199

    
200
	/**
201
	 * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#Taxon(eu.etaxonomy.cdm.model.name.TaxonNameBase, eu.etaxonomy.cdm.model.reference.ReferenceBase)}.
202
	 */
203
	@Test
204
	public void testTaxonTaxonNameBaseReferenceBase() {
205
		logger.warn("Not yet implemented");
206
	}
207

    
208
	/**
209
	 * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#getDescriptions()}.
210
	 */
211
	@Test
212
	public void testGetDescriptions() {
213
		logger.warn("Not yet implemented");
214
	}
215

    
216
	/**
217
	 * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#setDescriptions(java.util.Set)}.
218
	 */
219
	@Test
220
	public void testSetDescriptions() {
221
		logger.warn("Not yet implemented");
222
	}
223

    
224
	/**
225
	 * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#addDescription(eu.etaxonomy.cdm.model.description.TaxonDescription)}.
226
	 */
227
	@Test
228
	public void testAddDescription() {
229
		logger.warn("Not yet implemented");
230
	}
231

    
232
	/**
233
	 * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#removeDescription(eu.etaxonomy.cdm.model.description.TaxonDescription)}.
234
	 */
235
	@Test
236
	public void testRemoveDescription() {
237
		logger.warn("Not yet implemented");
238
	}
239

    
240
	/**
241
	 * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#getSynonymRelations()}.
242
	 */
243
	@Test
244
	public void testGetSynonymRelations() {
245
		logger.warn("Not yet implemented");
246
	}
247

    
248
	/**
249
	 * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#setSynonymRelations(java.util.Set)}.
250
	 */
251
	@Test
252
	public void testSetSynonymRelations() {
253
		logger.warn("Not yet implemented");
254
	}
255

    
256
	/**
257
	 * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#addSynonymRelation(eu.etaxonomy.cdm.model.taxon.SynonymRelationship)}.
258
	 */
259
	@Test
260
	public void testAddSynonymRelation() {
261
		logger.warn("Not yet implemented");
262
	}
263

    
264
	/**
265
	 * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#removeSynonymRelation(eu.etaxonomy.cdm.model.taxon.SynonymRelationship)}.
266
	 */
267
	@Test
268
	public void testRemoveSynonymRelation() {
269
		logger.warn("Not yet implemented");
270
	}
271

    
272
	/**
273
	 * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#getRelationsFromThisTaxon()}.
274
	 */
275
	@Test
276
	public void testGetRelationsFromThisTaxon() {
277
		logger.warn("Not yet implemented");
278
	}
279

    
280
	/**
281
	 * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#setRelationsFromThisTaxon(java.util.Set)}.
282
	 */
283
	@Test
284
	public void testSetRelationsFromThisTaxon() {
285
		logger.warn("Not yet implemented");
286
	}
287

    
288
	/**
289
	 * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#getRelationsToThisTaxon()}.
290
	 */
291
	@Test
292
	public void testGetRelationsToThisTaxon() {
293
		logger.warn("Not yet implemented");
294
	}
295

    
296
	/**
297
	 * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#setRelationsToThisTaxon(java.util.Set)}.
298
	 */
299
	@Test
300
	public void testSetRelationsToThisTaxon() {
301
		logger.warn("Not yet implemented");
302
	}
303

    
304
	/**
305
	 * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#getTaxonRelations()}.
306
	 */
307
	@Test
308
	public void testGetTaxonRelations() {
309
		Taxon taxon = Taxon.NewInstance(null, null);
310
		taxon.addTaxonRelation(Taxon.NewInstance(null, null), TaxonRelationshipType.CONTRADICTION(), null, null);
311
		Set<TaxonRelationship> relationships = taxon.getTaxonRelations();
312
		assertTrue("There should be exactly one relationship", relationships.size() == 1);
313
	}
314

    
315
	/**
316
	 * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#removeTaxonRelation(eu.etaxonomy.cdm.model.taxon.TaxonRelationship)}.
317
	 */
318
	@Test
319
	public void testRemoveTaxonRelation() {
320
		Taxon taxon = Taxon.NewInstance(null, null);
321
		taxon.addTaxonRelation(Taxon.NewInstance(null, null), TaxonRelationshipType.CONTRADICTION(), null, null);
322
		assertTrue("There should be exactly one taxon relationship", taxon.getTaxonRelations().size() == 1);
323
		TaxonRelationship relationship = (TaxonRelationship) taxon.getTaxonRelations().toArray()[0];
324
		assertNotNull("Relationship should not be null", relationship);
325
		taxon.removeTaxonRelation(relationship);
326
		assertTrue("There should be no taxon relationships", taxon.getTaxonRelations().size() == 0);
327
	}
328

    
329
	/**
330
	 * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#addTaxonRelation(eu.etaxonomy.cdm.model.taxon.TaxonRelationship)}.
331
	 * 
332
	 * FIXME addTaxonRelation(TaxonRelationship) is not working at the moment
333
	 */
334
	//@Ignore
335
	@Test
336
	public void testAddTaxonRelationTaxonRelationship() {
337
		Taxon taxon = Taxon.NewInstance(null, null);
338
		taxon.addTaxonRelation(Taxon.NewInstance(null, null), TaxonRelationshipType.CONTRADICTION(), null, null);
339
		assertTrue("There should be exactly one taxon relationship", taxon.getTaxonRelations().size() == 1);
340
		TaxonRelationship relationship = (TaxonRelationship) taxon.getTaxonRelations().toArray()[0];
341
		assertNotNull("Relationship should not be null", relationship);
342
		taxon.removeTaxonRelation(relationship);
343
		assertTrue("There should be no taxon relationships", taxon.getTaxonRelations().size() == 0);
344
		taxon.addTaxonRelation(relationship);
345
		assertEquals("There should be exactly one taxon relationships", 1, taxon.getTaxonRelations().size());
346
	}
347

    
348
	/**
349
	 * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#addRelationship(eu.etaxonomy.cdm.model.common.RelationshipBase)}.
350
	 */
351
	@Test
352
	public void testAddRelationship() {
353
		logger.warn("Not yet implemented");
354
	}
355

    
356
	/**
357
	 * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#addTaxonRelation(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType, eu.etaxonomy.cdm.model.reference.ReferenceBase, java.lang.String)}.
358
	 */
359
	@Test
360
	public void testAddTaxonRelationTaxonTaxonRelationshipTypeReferenceBaseString() {
361
		logger.warn("Not yet implemented");
362
	}
363

    
364
	/**
365
	 * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#addMisappliedName(eu.etaxonomy.cdm.model.taxon.Taxon, eu.etaxonomy.cdm.model.reference.ReferenceBase, java.lang.String)}.
366
	 */
367
	@Test
368
	public void testAddMisappliedName() {
369
		logger.warn("Not yet implemented");
370
	}
371

    
372

    
373
	/**
374
	 * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#hasSynonyms()}.
375
	 */
376
	@Test
377
	public void testHasSynonyms() {
378
		logger.warn("Not yet implemented");
379
	}
380

    
381
	/**
382
	 * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#getMisappliedNames()}.
383
	 */
384
	@Test
385
	public void testGetMisappliedNames() {
386
		logger.warn("Not yet implemented");
387
	}
388

    
389

    
390
	/**
391
	 * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#getSynonymsSortedByType()}.
392
	 */
393
	@Test
394
	public void testGetSynonymsSortedByType() {
395
		logger.warn("Not yet implemented");
396
	}
397

    
398
	/**
399
	 * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#addSynonym(eu.etaxonomy.cdm.model.taxon.Synonym, eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType)}.
400
	 */
401
	@Test
402
	public void testAddSynonymSynonymSynonymRelationshipType() {
403
		logger.warn("Not yet implemented");
404
	}
405

    
406
	/**
407
	 * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#addSynonym(eu.etaxonomy.cdm.model.taxon.Synonym, eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType, eu.etaxonomy.cdm.model.reference.ReferenceBase, java.lang.String)}.
408
	 */
409
	@Test
410
	public void testAddSynonymSynonymSynonymRelationshipTypeReferenceBaseString() {
411
		logger.warn("Not yet implemented");
412
	}
413

    
414
	/**
415
	 * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#addSynonymName(eu.etaxonomy.cdm.model.name.TaxonNameBase, eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType)}.
416
	 */
417
	@Test
418
	public void testAddSynonymNameTaxonNameBaseSynonymRelationshipType() {
419
		logger.warn("Not yet implemented");
420
	}
421

    
422
	/**
423
	 * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#addSynonymName(eu.etaxonomy.cdm.model.name.TaxonNameBase, eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType, eu.etaxonomy.cdm.model.reference.ReferenceBase, java.lang.String)}.
424
	 */
425
	@Test
426
	public void testAddSynonymNameTaxonNameBaseSynonymRelationshipTypeReferenceBaseString() {
427
		logger.warn("Not yet implemented");
428
	}
429

    
430
	/**
431
	 * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#addHeterotypicSynonymName(eu.etaxonomy.cdm.model.name.TaxonNameBase)}.
432
	 */
433
	@Test
434
	public void testAddHeterotypicSynonymNameTaxonNameBase() {
435
		logger.warn("Not yet implemented");
436
	}
437

    
438
	/**
439
	 * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#addHeterotypicSynonymName(eu.etaxonomy.cdm.model.name.TaxonNameBase, eu.etaxonomy.cdm.model.name.HomotypicalGroup, eu.etaxonomy.cdm.model.reference.ReferenceBase, java.lang.String)}.
440
	 */
441
	@Test
442
	public void testAddHeterotypicSynonymNameTaxonNameBaseHomotypicalGroupReferenceBaseString() {
443
		logger.warn("Not yet implemented");
444
	}
445

    
446
	/**
447
	 * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#addHomotypicSynonymName(eu.etaxonomy.cdm.model.name.TaxonNameBase, eu.etaxonomy.cdm.model.reference.ReferenceBase, java.lang.String)}.
448
	 */
449
	@Test
450
	public void testAddHomotypicSynonymName() {
451
		logger.warn("Not yet implemented");
452
	}
453

    
454
	/**
455
	 * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#addHomotypicSynonym(eu.etaxonomy.cdm.model.taxon.Synonym, eu.etaxonomy.cdm.model.reference.ReferenceBase, java.lang.String)}.
456
	 */
457
	@Test
458
	public void testAddHomotypicSynonym() {
459
		logger.warn("Not yet implemented");
460
	}
461

    
462
	/**
463
	 * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#removeSynonym(eu.etaxonomy.cdm.model.taxon.Synonym)}.
464
	 */
465
	@Test
466
	public void testRemoveSynonym() {
467
		logger.warn("Not yet implemented");
468
	}
469

    
470
	/**
471
	 * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#iterator()}.
472
	 */
473
	@Test
474
	public void testIterator() {
475
		logger.warn("Not yet implemented");
476
	}
477

    
478
	/**
479
	 * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#getHomotypicSynonymsByHomotypicGroup()}.
480
	 */
481
	@Test
482
	public void testGetHomotypicSynonymsByHomotypicGroup() {
483
		logger.warn("Not yet implemented");
484
	}
485

    
486
	/**
487
	 * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#getHomotypicSynonymsByHomotypicRelationship()}.
488
	 */
489
	@Test
490
	public void testGetHomotypicSynonymsByHomotypicRelationship() {
491
		logger.warn("Not yet implemented");
492
	}
493

    
494
	/**
495
	 * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#getHomotypicSynonymyGroups()}.
496
	 */
497
	@Test
498
	public void testGetHomotypicSynonymyGroups() {
499
		logger.warn("Not yet implemented");
500
	}
501

    
502
	/**
503
	 * Test method for {@link eu.etaxonomy.cdm.model.taxon.Taxon#getHeterotypicSynonymyGroups()}.
504
	 */
505
	@Test
506
	public void testGetHeterotypicSynonymyGroups() {
507
		logger.warn("Not yet implemented");
508
	}
509

    
510
}
(5-5/6)