merge 3.0.2 to trunk
[cdmlib.git] / cdmlib-model / src / test / java / eu / etaxonomy / cdm / model / name / NonViralNameTest.java
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 import junit.framework.Assert;
15
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;
22
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;
33
34 /**
35 * @author a.mueller
36 *
37 */
38 public class NonViralNameTest extends EntityTestBase {
39 private static Logger logger = Logger.getLogger(NonViralNameTest.class);
40
41
42 NonViralName<?> nonViralName1;
43 NonViralName<?> nonViralName2;
44 ReferenceFactory refFactory;
45
46 @BeforeClass
47 public static void setUpBeforeClass() {
48 DefaultTermInitializer vocabularyStore = new DefaultTermInitializer();
49 vocabularyStore.initialize();
50 }
51
52 /**
53 * @throws java.lang.Exception
54 */
55 @Before
56 public void setUp() throws Exception {
57 nonViralName1 = new BotanicalName();
58 nonViralName2 = new BotanicalName();
59 refFactory = ReferenceFactory.newInstance();
60 }
61
62 /**
63 * @throws java.lang.Exception
64 */
65 @After
66 public void tearDown() throws Exception {
67 }
68
69 // ******************* TESTS ***********************************/
70
71 /**
72 * Test method for {@link eu.etaxonomy.cdm.model.name.NonViralName#generateTitle()}.
73 */
74 @Test
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());
82 }
83
84 /**
85 * Test method for {@link eu.etaxonomy.cdm.model.name.NonViralName#isCodeCompliant()}.
86 */
87 @Test
88 public final void testIsCodeCompliant() {
89 logger.warn("Not yet implemented"); // TODO
90 }
91
92 /**
93 * Test method for {@link eu.etaxonomy.cdm.model.name.NonViralName#NonViralName()}.
94 */
95 @Test
96 public final void testNonViralName() {
97 assertNotNull(nonViralName1);
98 }
99
100 /**
101 * Test method for {@link eu.etaxonomy.cdm.model.name.NonViralName#NonViralName(eu.etaxonomy.cdm.model.name.Rank)}.
102 */
103 @Test
104 public final void testNonViralNameRank() {
105 NonViralName<?> nonViralName = NonViralName.NewInstance(Rank.GENUS());
106 assertNotNull(nonViralName);
107 }
108
109 /**
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)}.
111 */
112 @Test
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() );
125 }
126
127 /**
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)}.
130 */
131 @Test
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());
140 }
141
142
143 /**
144 * Test method for {@link eu.etaxonomy.cdm.model.name.NonViralName#getExCombinationAuthorTeam()}.
145 */
146 @Test
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());
155 }
156
157
158 /**
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)}.
161 */
162 @Test
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());
171 }
172
173
174 /**
175 * Test method for {@link eu.etaxonomy.cdm.model.name.NonViralName#getExCombinationAuthorTeam()}.
176 */
177 @Test
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());
186 }
187
188
189 /**
190 * Test method for {@link eu.etaxonomy.cdm.model.name.NonViralName#getGenusOrUninomial()}.
191 */
192 @Test
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());
200 }
201
202 /**
203 * Test method for {@link eu.etaxonomy.cdm.model.name.NonViralName#getInfraGenericEpithet()}.
204 */
205 @Test
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());
213 }
214
215 /**
216 * Test method for {@link eu.etaxonomy.cdm.model.name.NonViralName#getSpecificEpithet()}.
217 */
218 @Test
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());
226 }
227
228 /**
229 * Test method for {@link eu.etaxonomy.cdm.model.name.NonViralName#getInfraSpecificEpithet()}.
230 */
231 @Test
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());
239 }
240
241 /**
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()}.
244 * NOT FINISHED YET
245 */
246 @Test
247
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);
254
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());
263
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());
269
270 nonViralName1.setAuthorshipCache(strTeam2);
271 assertEquals(strTeam2, nonViralName1.getAuthorshipCache());
272 nonViralName1.setGenusOrUninomial("Calendula");
273 Assert.assertEquals("Calendula alba "+strTeam2, nonViralName1.getTitleCache());
274
275 nonViralName1.setAuthorshipCache(strTeam3);
276 Assert.assertEquals("Calendula alba "+strTeam3, nonViralName1.getTitleCache());
277
278 Assert.assertEquals("Calendula alba "+strTeam3+ ", RefTitle", nonViralName1.getFullTitleCache());
279
280 nonViralName1.setCombinationAuthorTeam(null);
281 assertEquals(null, nonViralName1.getCombinationAuthorTeam());
282 }
283
284
285 @Test
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());
295 }
296
297 @Test
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);
304
305 nonViralName1.addHybridParent(femaleParent, HybridRelationshipType.MALE_PARENT(), null);
306 nonViralName1.addHybridParent(maleParent, HybridRelationshipType.MALE_PARENT(), null);
307
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());
314
315 }
316
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);
324 }
325
326 @Test
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);
334
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());
341
342 botanicalName1.removeHybridParent(femaleParent);
343 assertEquals(1, botanicalName1.getChildRelationships().size());
344 assertEquals(1, botanicalName1.getParentRelationships().size());
345
346 botanicalName1.removeHybridParent(maleParent);
347 assertEquals(0, botanicalName1.getChildRelationships().size());
348 assertEquals(1, botanicalName1.getParentRelationships().size());
349
350 botanicalName1.removeHybridChild(child);
351 assertEquals(0, botanicalName1.getParentRelationships().size());
352
353 //null
354 botanicalName1.removeHybridRelationship(null);
355 assertEquals(0, botanicalName1.getChildRelationships().size());
356 }
357 }