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
.occurrence
;
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
.assertNotSame
;
16 import static org
.junit
.Assert
.assertNull
;
17 import static org
.junit
.Assert
.assertSame
;
18 import static org
.junit
.Assert
.assertTrue
;
20 import java
.util
.Calendar
;
21 import java
.util
.UUID
;
23 import org
.apache
.log4j
.Logger
;
24 import org
.joda
.time
.DateTime
;
25 import org
.junit
.Assert
;
26 import org
.junit
.Before
;
27 import org
.junit
.Test
;
29 import com
.ibm
.lsid
.MalformedLSIDException
;
31 import eu
.etaxonomy
.cdm
.model
.agent
.Person
;
32 import eu
.etaxonomy
.cdm
.model
.common
.Annotation
;
33 import eu
.etaxonomy
.cdm
.model
.common
.Extension
;
34 import eu
.etaxonomy
.cdm
.model
.common
.IdentifiableSource
;
35 import eu
.etaxonomy
.cdm
.model
.common
.LSID
;
36 import eu
.etaxonomy
.cdm
.model
.common
.Language
;
37 import eu
.etaxonomy
.cdm
.model
.common
.LanguageStringBase
;
38 import eu
.etaxonomy
.cdm
.model
.common
.Marker
;
39 import eu
.etaxonomy
.cdm
.model
.common
.MarkerType
;
40 import eu
.etaxonomy
.cdm
.model
.common
.OriginalSourceBase
;
41 import eu
.etaxonomy
.cdm
.model
.description
.Sex
;
42 import eu
.etaxonomy
.cdm
.model
.description
.SpecimenDescription
;
43 import eu
.etaxonomy
.cdm
.model
.description
.Stage
;
44 import eu
.etaxonomy
.cdm
.model
.media
.Media
;
45 import eu
.etaxonomy
.cdm
.model
.media
.Rights
;
46 import eu
.etaxonomy
.cdm
.model
.name
.BotanicalName
;
47 import eu
.etaxonomy
.cdm
.model
.name
.Rank
;
48 import eu
.etaxonomy
.cdm
.model
.name
.SpecimenTypeDesignation
;
49 import eu
.etaxonomy
.cdm
.model
.name
.TaxonNameBase
;
56 public class SpecimenTest
{
57 private static final Logger logger
= Logger
.getLogger(SpecimenTest
.class);
59 private Specimen specimen
;
62 public void setUp() throws Exception
{
63 specimen
= Specimen
.NewInstance();
67 * Test method for {@link eu.etaxonomy.cdm.model.occurrence.Specimen#NewInstance()}.
70 public void testNewInstance() {
71 Specimen specimen
= Specimen
.NewInstance();
72 assertNotNull(specimen
);
73 assertTrue(specimen
instanceof Specimen
);
77 * Test method for {@link eu.etaxonomy.cdm.model.occurrence.Specimen#Specimen()}.
80 public void testSpecimen() {
81 Specimen specimen
= new Specimen();
82 assertNotNull(specimen
);
86 * Test method for {@link eu.etaxonomy.cdm.model.occurrence.Specimen#getPreservation()} and
87 * {@link eu.etaxonomy.cdm.model.occurrence.Specimen#setPreservation(eu.etaxonomy.cdm.model.occurrence.PreservationMethod)}.
90 public void testGetSetPreservation() {
91 PreservationMethod preservation
= PreservationMethod
.NewInstance();
92 specimen
.setPreservation(preservation
);
93 assertSame(preservation
, specimen
.getPreservation());
94 specimen
.setPreservation(null);
98 public void testBidirectionalTypeDesignation(){
99 SpecimenTypeDesignation desig1
= SpecimenTypeDesignation
.NewInstance();
100 SpecimenTypeDesignation desig2
= SpecimenTypeDesignation
.NewInstance();
101 Specimen specimen2
= Specimen
.NewInstance();
103 specimen
.addSpecimenTypeDesignation(desig1
);
104 Assert
.assertEquals("Specimen1 should be the designations specimen", specimen
, desig1
.getTypeSpecimen());
105 Assert
.assertEquals("specimen1 should have exactly 1 designation", 1, specimen
.getSpecimenTypeDesignations().size());
106 Assert
.assertEquals("specimen1's designation should be desig1", desig1
, specimen
.getSpecimenTypeDesignations().iterator().next());
108 specimen
.addSpecimenTypeDesignation(desig2
);
109 Assert
.assertEquals("Specimen1 should be the desig2's specimen", specimen
, desig2
.getTypeSpecimen());
110 Assert
.assertEquals("specimen1 should have exactly 2 designation", 2, specimen
.getSpecimenTypeDesignations().size());
112 specimen2
.addSpecimenTypeDesignation(desig2
);
113 Assert
.assertEquals("Specimen2 should have replaced specimen1 as desig2's specimen", specimen2
, desig2
.getTypeSpecimen());
114 Assert
.assertEquals("Specimen2 should have exactly 1 designation", 1, specimen2
.getSpecimenTypeDesignations().size());
115 Assert
.assertEquals("Specimen1's designation should be desig2", desig2
, specimen2
.getSpecimenTypeDesignations().iterator().next());
116 Assert
.assertEquals("specimen1 should have exactly 1 designation", 1, specimen
.getSpecimenTypeDesignations().size());
118 specimen2
.removeSpecimenTypeDesignation(desig2
);
119 Assert
.assertEquals("Desig2 should not have a specimen anymore", null, desig2
.getTypeSpecimen());
120 Assert
.assertEquals("Specimen2 should have no designation", 0, specimen2
.getSpecimenTypeDesignations().size());
121 Assert
.assertEquals("specimen1 should have exactly 1 designation", 1, specimen
.getSpecimenTypeDesignations().size());
123 specimen
.addSpecimenTypeDesignation(desig2
);
124 Assert
.assertEquals("Specimen1 should be the desig2's specimen", specimen
, desig2
.getTypeSpecimen());
125 Assert
.assertEquals("specimen1 should have exactly 2 designation", 2, specimen
.getSpecimenTypeDesignations().size());
127 desig1
.setTypeSpecimen(null);
128 Assert
.assertEquals("Desig1 should not have a specimen anymore", null, desig1
.getTypeSpecimen());
129 Assert
.assertEquals("Specimen1 should have 1 designation", 1, specimen
.getSpecimenTypeDesignations().size());
130 Assert
.assertEquals("Specimen1's designation should be desig2", desig2
, specimen
.getSpecimenTypeDesignations().iterator().next());
132 desig1
.setTypeSpecimen(specimen
);
133 Assert
.assertEquals("Desig1 should have specimen1 as specimen again", specimen
, desig1
.getTypeSpecimen());
134 Assert
.assertEquals("Specimen1 should have 2 designation", 2, specimen
.getSpecimenTypeDesignations().size());
140 * Test method for {@link eu.etaxonomy.cdm.model.occurrence.Specimen#clone()}.
143 public void testClone() {
144 logger
.debug("Start testClone");
146 //Null test is not full implemented, but an error is thrown if null throws
147 //null pointer exception somewhere
148 Specimen specimenNullClone
= (Specimen
)specimen
.clone();
150 String accessionNumber
= "accNumber";
151 String catalogNumber
= "catNumber";
152 Collection collection
= Collection
.NewInstance();
153 collection
.setCode("code");
154 DateTime created
= new DateTime();
155 Person createdBy
= Person
.NewTitledInstance("creator");
156 DerivationEvent derivedFrom
= DerivationEvent
.NewInstance(null);
158 int individualCount
= 25;
159 Stage lifeStage
= Stage
.NewInstance();
162 lsid
= new LSID("urn:lsid:example.com:foo:1");
163 } catch (MalformedLSIDException e
) {
164 // TODO Auto-generated catch block
167 Specimen nextVersion
= Specimen
.NewInstance();
168 Specimen previousVersion
= Specimen
.NewInstance();
169 PreservationMethod preservation
= PreservationMethod
.NewInstance();
170 boolean protectedTitleCache
= true;
171 Sex sex
= Sex
.FEMALE();
172 TaxonNameBase
<?
, ?
> storedUnder
= BotanicalName
.NewInstance(Rank
.GENUS());
173 String titleCache
= "title";
174 Calendar updated
= Calendar
.getInstance();
175 Person updatedBy
= Person
.NewTitledInstance("updatedPerson");
176 UUID uuid
= UUID
.randomUUID();
178 Annotation annotation
= Annotation
.NewDefaultLanguageInstance("annotation");
179 String definition
= "definition";
181 DerivationEvent derivationEvent
= DerivationEvent
.NewInstance(null);
182 SpecimenDescription description
= SpecimenDescription
.NewInstance();
183 DeterminationEvent determination
= DeterminationEvent
.NewInstance();
184 Extension extension
= Extension
.NewInstance();
185 extension
.setValue("extension");
186 Marker marker
= Marker
.NewInstance(MarkerType
.COMPLETE(), false);
187 Rights right
= Rights
.NewInstance("right", Language
.DEFAULT());
188 Media media
= Media
.NewInstance();
189 IdentifiableSource source
= IdentifiableSource
.NewInstance("12", "idNamespace");
191 specimen
.setAccessionNumber(accessionNumber
);
192 specimen
.setCatalogNumber(catalogNumber
);
193 specimen
.setCollection(collection
);
194 specimen
.setCreated(created
);
195 // specimen.setCreatedBy(createdBy);
196 specimen
.setDerivedFrom(derivedFrom
);
198 specimen
.setIndividualCount(individualCount
);
199 specimen
.setLifeStage(lifeStage
);
200 specimen
.setLsid(lsid
);
201 specimen
.setPreservation(preservation
);
202 specimen
.setProtectedTitleCache(protectedTitleCache
);
203 specimen
.setSex(sex
);
204 specimen
.setStoredUnder(storedUnder
);
205 specimen
.setTitleCache(titleCache
, protectedTitleCache
);
206 // specimen.setUpdated(updated);
207 // specimen.setUpdatedBy(updatedBy);
208 specimen
.setUuid(uuid
);
210 specimen
.addAnnotation(annotation
);
211 specimen
.putDefinition(Language
.DEFAULT(), definition
);
212 specimen
.addDerivationEvent(derivationEvent
);
213 specimen
.addDescription(description
);
214 specimen
.addDetermination(determination
);
215 specimen
.addExtension(extension
);
216 specimen
.addMarker(marker
);
217 specimen
.addMedia(media
);
218 specimen
.addRights(right
);
219 specimen
.addSource(source
);
223 } catch (InterruptedException e
) {
226 Specimen specimenClone
= (Specimen
)specimen
.clone();
228 assertFalse(id
== specimenClone
.getId());
229 assertFalse(created
.equals(specimenClone
.getCreated()));
230 assertFalse(createdBy
.equals(specimenClone
.getCreatedBy()));
231 assertFalse(updated
.equals(specimenClone
.getUpdated()));
232 assertFalse(updatedBy
.equals(specimenClone
.getUpdatedBy()));
233 assertNull(specimenClone
.getUpdatedBy());
234 assertNull(specimenClone
.getCreatedBy());
235 assertFalse(uuid
.equals(specimenClone
.getUuid()));
238 assertEquals(accessionNumber
, specimenClone
.getAccessionNumber());
239 assertEquals(catalogNumber
, specimenClone
.getCatalogNumber());
240 assertEquals(collection
, specimenClone
.getCollection());
241 assertEquals(derivedFrom
, specimenClone
.getDerivedFrom());
242 assertEquals(lifeStage
, specimenClone
.getLifeStage());
243 assertEquals(lsid
, specimenClone
.getLsid());
244 assertEquals(preservation
, specimenClone
.getPreservation());
245 assertEquals(protectedTitleCache
, specimenClone
.isProtectedTitleCache());
246 assertEquals(storedUnder
, specimenClone
.getStoredUnder());
247 assertEquals(sex
, specimenClone
.getSex());
248 assertEquals(titleCache
, specimenClone
.getTitleCache());
250 Annotation clonedAnnotation
= specimenClone
.getAnnotations().iterator().next();
251 assertFalse(annotation
.equals(clonedAnnotation
));
252 assertEquals(annotation
.getText(), ((LanguageStringBase
)specimenClone
.getAnnotations().iterator().next()).getText() );
253 assertNotSame(annotation
, specimenClone
.getAnnotations().iterator().next() );
255 assertEquals(definition
, specimenClone
.getDefinition().get(Language
.DEFAULT()).getText());
257 // assertNotSame(definition, specimenClone.getDefinition().getText(Language.DEFAULT()));
259 assertEquals(derivationEvent
, specimenClone
.getDerivationEvents().iterator().next());
260 assertSame(derivationEvent
, specimenClone
.getDerivationEvents().iterator().next());
262 assertEquals(description
, specimenClone
.getDescriptions().iterator().next());
264 assertSame(description
, specimenClone
.getDescriptions().iterator().next());
266 assertEquals(determination
, specimenClone
.getDeterminations().iterator().next());
268 assertSame(determination
, specimenClone
.getDeterminations().iterator().next());
270 assertFalse(extension
.equals(specimenClone
.getExtensions().iterator().next()));
271 assertEquals(extension
.getValue(), ((Extension
)specimenClone
.getExtensions().iterator().next()).getValue());
272 assertNotSame(extension
, specimenClone
.getExtensions().iterator().next());
273 assertEquals(1, specimen
.getExtensions().size());
275 assertFalse(marker
.equals(specimenClone
.getMarkers().iterator().next()));
276 assertEquals(marker
.getFlag(), ((Marker
)specimenClone
.getMarkers().iterator().next()).getFlag());
277 assertNotSame(marker
, specimenClone
.getMarkers().iterator().next());
278 assertEquals(1, specimenClone
.getMarkers().size());
280 assertEquals(media
, specimenClone
.getMedia().iterator().next());
281 assertEquals(right
, specimenClone
.getRights().iterator().next());
283 assertFalse(source
.equals(specimenClone
.getSources().iterator().next()));
284 assertEquals(source
.getId(), ((OriginalSourceBase
)specimenClone
.getSources().iterator().next()).getId());
285 assertNotSame(source
, specimenClone
.getSources().iterator().next());
286 assertEquals(1, specimenClone
.getSources().size());