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
.model
.name
;
12 import static org
.junit
.Assert
.assertEquals
;
13 import static org
.junit
.Assert
.assertNotNull
;
14 import junit
.framework
.Assert
;
16 import org
.apache
.log4j
.Logger
;
17 import org
.junit
.After
;
18 import org
.junit
.Before
;
19 import org
.junit
.BeforeClass
;
20 import org
.junit
.Ignore
;
21 import org
.junit
.Test
;
23 import eu
.etaxonomy
.cdm
.model
.agent
.Team
;
24 import eu
.etaxonomy
.cdm
.model
.common
.DefaultTermInitializer
;
25 //import eu.etaxonomy.cdm.model.reference.Article;
26 //import eu.etaxonomy.cdm.model.reference.Generic;
27 import eu
.etaxonomy
.cdm
.model
.reference
.IArticle
;
28 import eu
.etaxonomy
.cdm
.model
.reference
.IGeneric
;
29 import eu
.etaxonomy
.cdm
.model
.reference
.INomenclaturalReference
;
30 import eu
.etaxonomy
.cdm
.model
.reference
.IReference
;
31 import eu
.etaxonomy
.cdm
.model
.reference
.ReferenceFactory
;
32 import eu
.etaxonomy
.cdm
.test
.unit
.EntityTestBase
;
38 public class NonViralNameTest
extends EntityTestBase
{
39 private static Logger logger
= Logger
.getLogger(NonViralNameTest
.class);
42 NonViralName
<?
> nonViralName1
;
43 NonViralName
<?
> nonViralName2
;
44 ReferenceFactory refFactory
;
47 public static void setUpBeforeClass() {
48 DefaultTermInitializer vocabularyStore
= new DefaultTermInitializer();
49 vocabularyStore
.initialize();
53 * @throws java.lang.Exception
56 public void setUp() throws Exception
{
57 nonViralName1
= new BotanicalName();
58 nonViralName2
= new BotanicalName();
59 refFactory
= ReferenceFactory
.newInstance();
63 * @throws java.lang.Exception
66 public void tearDown() throws Exception
{
69 // ******************* TESTS ***********************************/
72 * Test method for {@link eu.etaxonomy.cdm.model.name.NonViralName#generateTitle()}.
75 public final void testGenerateTitle() {
76 String fullName
= "Abies alba subsp. beta (L.) Mill.";
77 nonViralName1
.setGenusOrUninomial("Genus");
78 nonViralName1
.setSpecificEpithet("spec");
79 nonViralName1
.setRank(Rank
.SPECIES());
80 assertEquals("Genus spec", nonViralName1
.generateTitle());
81 assertEquals("", nonViralName2
.generateTitle());
85 * Test method for {@link eu.etaxonomy.cdm.model.name.NonViralName#isCodeCompliant()}.
88 public final void testIsCodeCompliant() {
89 logger
.warn("Not yet implemented"); // TODO
93 * Test method for {@link eu.etaxonomy.cdm.model.name.NonViralName#NonViralName()}.
96 public final void testNonViralName() {
97 assertNotNull(nonViralName1
);
101 * Test method for {@link eu.etaxonomy.cdm.model.name.NonViralName#NonViralName(eu.etaxonomy.cdm.model.name.Rank)}.
104 public final void testNonViralNameRank() {
105 NonViralName
<?
> nonViralName
= NonViralName
.NewInstance(Rank
.GENUS());
106 assertNotNull(nonViralName
);
110 * 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)}.
113 public final void testNonViralNameRankStringStringStringAgentINomenclaturalReferenceString() {
114 Team agent
= Team
.NewInstance();
115 INomenclaturalReference article
= refFactory
.newArticle();
116 HomotypicalGroup homotypicalGroup
= HomotypicalGroup
.NewInstance();
117 NonViralName
<?
> nonViralName
= new NonViralName(Rank
.GENUS(), "Genus", "infraGen", "species", "infraSpec", agent
, article
, "mikro", homotypicalGroup
);
118 assertEquals("Genus", nonViralName
.getGenusOrUninomial() );
119 assertEquals("infraGen", nonViralName
.getInfraGenericEpithet());
120 assertEquals("species", nonViralName
.getSpecificEpithet() );
121 assertEquals("infraSpec", nonViralName
.getInfraSpecificEpithet());
122 assertEquals(agent
, nonViralName
.getCombinationAuthorTeam() );
123 assertEquals(article
, nonViralName
.getNomenclaturalReference() );
124 assertEquals("mikro", nonViralName
.getNomenclaturalMicroReference() );
128 * Test method for {@link eu.etaxonomy.cdm.model.name.NonViralName#getCombinationAuthorTeam()}.
129 * Test method for {@link eu.etaxonomy.cdm.model.name.NonViralName#setCombinationAuthorTeam(eu.etaxonomy.cdm.model.agent.Agent)}.
132 public final void testGetSetCombinationAuthorTeam() {
133 Team team1
= Team
.NewInstance();
134 nonViralName1
.setCombinationAuthorTeam(team1
);
135 assertEquals(team1
, nonViralName1
.getCombinationAuthorTeam());
136 nonViralName1
.setCombinationAuthorTeam(null);
137 assertEquals(null, nonViralName1
.getCombinationAuthorTeam());
138 nonViralName2
.setCombinationAuthorTeam(null);
139 assertEquals(null, nonViralName2
.getCombinationAuthorTeam());
144 * Test method for {@link eu.etaxonomy.cdm.model.name.NonViralName#getExCombinationAuthorTeam()}.
147 public final void testGetSetExCombinationAuthorTeam() {
148 Team team1
= Team
.NewInstance();
149 nonViralName1
.setExCombinationAuthorTeam(team1
);
150 assertEquals(team1
, nonViralName1
.getExCombinationAuthorTeam());
151 nonViralName1
.setExCombinationAuthorTeam(null);
152 assertEquals(null, nonViralName1
.getExCombinationAuthorTeam());
153 nonViralName2
.setExCombinationAuthorTeam(null);
154 assertEquals(null, nonViralName2
.getExCombinationAuthorTeam());
159 * Test method for {@link eu.etaxonomy.cdm.model.name.NonViralName#getCombinationAuthorTeam()}.
160 * Test method for {@link eu.etaxonomy.cdm.model.name.NonViralName#setCombinationAuthorTeam(eu.etaxonomy.cdm.model.agent.Agent)}.
163 public final void testGetSetBasionymAuthorTeam() {
164 Team team1
= Team
.NewInstance();
165 nonViralName1
.setBasionymAuthorTeam(team1
);
166 assertEquals(team1
, nonViralName1
.getBasionymAuthorTeam());
167 nonViralName1
.setBasionymAuthorTeam(null);
168 assertEquals(null, nonViralName1
.getBasionymAuthorTeam());
169 nonViralName2
.setBasionymAuthorTeam(null);
170 assertEquals(null, nonViralName2
.getBasionymAuthorTeam());
175 * Test method for {@link eu.etaxonomy.cdm.model.name.NonViralName#getExCombinationAuthorTeam()}.
178 public final void testGetSetExBasionymAuthorTeam() {
179 Team team1
= Team
.NewInstance();
180 nonViralName1
.setExBasionymAuthorTeam(team1
);
181 assertEquals(team1
, nonViralName1
.getExBasionymAuthorTeam());
182 nonViralName1
.setExBasionymAuthorTeam(null);
183 assertEquals(null, nonViralName1
.getExBasionymAuthorTeam());
184 nonViralName2
.setExBasionymAuthorTeam(null);
185 assertEquals(null, nonViralName2
.getExBasionymAuthorTeam());
190 * Test method for {@link eu.etaxonomy.cdm.model.name.NonViralName#getGenusOrUninomial()}.
193 public final void testGetSetGenusOrUninomial() {
194 nonViralName1
.setGenusOrUninomial("Genus");
195 assertEquals("Genus", nonViralName1
.getGenusOrUninomial());
196 nonViralName1
.setGenusOrUninomial(null);
197 assertEquals(null, nonViralName1
.getGenusOrUninomial());
198 nonViralName2
.setGenusOrUninomial(null);
199 assertEquals(null, nonViralName2
.getGenusOrUninomial());
203 * Test method for {@link eu.etaxonomy.cdm.model.name.NonViralName#getInfraGenericEpithet()}.
206 public final void testGetSetInfraGenericEpithet() {
207 nonViralName1
.setInfraGenericEpithet("InfraGenus");
208 assertEquals("InfraGenus", nonViralName1
.getInfraGenericEpithet());
209 nonViralName1
.setInfraGenericEpithet(null);
210 assertEquals(null, nonViralName1
.getInfraGenericEpithet());
211 nonViralName2
.setInfraGenericEpithet(null);
212 assertEquals(null, nonViralName2
.getInfraGenericEpithet());
216 * Test method for {@link eu.etaxonomy.cdm.model.name.NonViralName#getSpecificEpithet()}.
219 public final void testGetSetSpecificEpithet() {
220 nonViralName1
.setSpecificEpithet("specEpi");
221 assertEquals("specEpi", nonViralName1
.getSpecificEpithet());
222 nonViralName1
.setSpecificEpithet(null);
223 assertEquals(null, nonViralName1
.getSpecificEpithet());
224 nonViralName2
.setSpecificEpithet(null);
225 assertEquals(null, nonViralName2
.getSpecificEpithet());
229 * Test method for {@link eu.etaxonomy.cdm.model.name.NonViralName#getInfraSpecificEpithet()}.
232 public final void testGetSetInfraSpecificEpithet() {
233 nonViralName1
.setInfraSpecificEpithet("InfraSpecEpi");
234 assertEquals("InfraSpecEpi", nonViralName1
.getInfraSpecificEpithet());
235 nonViralName1
.setInfraSpecificEpithet(null);
236 assertEquals(null, nonViralName1
.getInfraSpecificEpithet());
237 nonViralName2
.setInfraSpecificEpithet(null);
238 assertEquals(null, nonViralName2
.getInfraSpecificEpithet());
242 * Test method for {@link eu.etaxonomy.cdm.model.name.NonViralName#setAuthorshipCache(java.lang.String)}.
243 * Test method for {@link eu.etaxonomy.cdm.model.name.NonViralName#getAuthorshipCache()}.
248 public final void testGetSetAuthorshipCache() {
249 String strTeam1
= "Team1";
250 String strTeam2
= "Team2";
251 String strTeam3
= "Team3";
252 IGeneric ref1
= refFactory
.newGeneric();
253 ref1
.setTitleCache("RefTitle",true);
255 Team team1
= Team
.NewInstance();
256 Team team2
= Team
.NewInstance();
257 team1
.setNomenclaturalTitle(strTeam1
);
258 team2
.setNomenclaturalTitle(strTeam2
);
259 nonViralName1
.setGenusOrUninomial("Abies");
260 nonViralName1
.setSpecificEpithet("alba");
261 nonViralName1
.setNomenclaturalReference(ref1
);
262 Assert
.assertEquals("Abies alba", nonViralName1
.getNameCache());
264 nonViralName1
.setCombinationAuthorTeam(team1
);
265 assertEquals(team1
, nonViralName1
.getCombinationAuthorTeam());
266 assertEquals(strTeam1
, nonViralName1
.getAuthorshipCache());
267 Assert
.assertEquals("Abies alba "+strTeam1
, nonViralName1
.getTitleCache());
268 Assert
.assertEquals("Abies alba "+strTeam1
+ ", RefTitle", nonViralName1
.getFullTitleCache());
270 nonViralName1
.setAuthorshipCache(strTeam2
);
271 assertEquals(strTeam2
, nonViralName1
.getAuthorshipCache());
272 nonViralName1
.setGenusOrUninomial("Calendula");
273 Assert
.assertEquals("Calendula alba "+strTeam2
, nonViralName1
.getTitleCache());
275 nonViralName1
.setAuthorshipCache(strTeam3
);
276 Assert
.assertEquals("Calendula alba "+strTeam3
, nonViralName1
.getTitleCache());
278 Assert
.assertEquals("Calendula alba "+strTeam3
+ ", RefTitle", nonViralName1
.getFullTitleCache());
280 nonViralName1
.setCombinationAuthorTeam(null);
281 assertEquals(null, nonViralName1
.getCombinationAuthorTeam());
286 public final void testGetChildAndParentRelationships() {
287 NonViralName nonViralName1
= new NonViralName();
288 assertEquals(0, nonViralName1
.getParentRelationships().size());
289 assertEquals(0, nonViralName1
.getChildRelationships().size());
290 BotanicalName femaleParent
= BotanicalName
.NewInstance(null);
291 HybridRelationship hybridRelationship
= new HybridRelationship(nonViralName1
, femaleParent
, HybridRelationshipType
.FEMALE_PARENT(), null );
292 assertEquals(1, nonViralName1
.getChildRelationships().size());
293 assertEquals(hybridRelationship
, nonViralName1
.getChildRelationships().iterator().next());
294 assertEquals(1, femaleParent
.getParentRelationships().size());
298 public final void testAddHybridRelationships() {
299 NonViralName nonViralName1
= new NonViralName();
300 assertEquals(0, nonViralName1
.getParentRelationships().size());
301 assertEquals(0, nonViralName1
.getChildRelationships().size());
302 BotanicalName femaleParent
= BotanicalName
.NewInstance(null);
303 BotanicalName maleParent
= BotanicalName
.NewInstance(null);
305 nonViralName1
.addHybridParent(femaleParent
, HybridRelationshipType
.MALE_PARENT(), null);
306 nonViralName1
.addHybridParent(maleParent
, HybridRelationshipType
.MALE_PARENT(), null);
308 assertEquals(2, nonViralName1
.getChildRelationships().size());
309 assertEquals(0, nonViralName1
.getParentRelationships().size());
310 assertEquals(1, maleParent
.getParentRelationships().size());
311 assertEquals(1, femaleParent
.getParentRelationships().size());
312 assertEquals(0, maleParent
.getChildRelationships().size());
313 assertEquals(0, femaleParent
.getChildRelationships().size());
317 @Test(expected
=IllegalArgumentException
.class)
318 public final void testAddHybridRelationship() {
319 NonViralName nonViralName1
= new NonViralName();
320 assertEquals(0, nonViralName1
.getParentRelationships().size());
321 assertEquals(0, nonViralName1
.getChildRelationships().size());
322 NonViralName botanicalName2
= new NonViralName();
323 botanicalName2
.addHybridRelationship(null);
327 public final void testRemoveHybridRelationship() {
328 NonViralName botanicalName1
= new NonViralName();
329 assertEquals(0, botanicalName1
.getParentRelationships().size());
330 assertEquals(0, botanicalName1
.getChildRelationships().size());
331 BotanicalName femaleParent
= BotanicalName
.NewInstance(null);
332 NonViralName maleParent
= NonViralName
.NewInstance(null);
333 ZoologicalName child
= ZoologicalName
.NewInstance(null);
335 botanicalName1
.addHybridParent(femaleParent
, HybridRelationshipType
.FEMALE_PARENT(), null);
336 botanicalName1
.addHybridParent(maleParent
, HybridRelationshipType
.MALE_PARENT(), null);
337 botanicalName1
.addHybridChild(child
, HybridRelationshipType
.FIRST_PARENT(), null);
338 assertEquals(2, botanicalName1
.getChildRelationships().size());
339 assertEquals(1, botanicalName1
.getParentRelationships().size());
340 assertEquals(1, child
.getChildRelationships().size());
342 botanicalName1
.removeHybridParent(femaleParent
);
343 assertEquals(1, botanicalName1
.getChildRelationships().size());
344 assertEquals(1, botanicalName1
.getParentRelationships().size());
346 botanicalName1
.removeHybridParent(maleParent
);
347 assertEquals(0, botanicalName1
.getChildRelationships().size());
348 assertEquals(1, botanicalName1
.getParentRelationships().size());
350 botanicalName1
.removeHybridChild(child
);
351 assertEquals(0, botanicalName1
.getParentRelationships().size());
354 botanicalName1
.removeHybridRelationship(null);
355 assertEquals(0, botanicalName1
.getChildRelationships().size());