2 * Copyright (C) 2009 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
.common
;
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
;
17 import org
.junit
.After
;
18 import org
.junit
.AfterClass
;
19 import org
.junit
.Before
;
20 import org
.junit
.BeforeClass
;
21 import org
.junit
.Test
;
23 import eu
.etaxonomy
.cdm
.model
.MockCdmCacher
;
24 import eu
.etaxonomy
.cdm
.model
.agent
.Person
;
25 import eu
.etaxonomy
.cdm
.model
.name
.NonViralName
;
26 import eu
.etaxonomy
.cdm
.model
.name
.Rank
;
27 import eu
.etaxonomy
.cdm
.model
.reference
.Reference
;
28 import eu
.etaxonomy
.cdm
.model
.reference
.ReferenceFactory
;
29 import eu
.etaxonomy
.cdm
.model
.reference
.ReferenceType
;
30 import eu
.etaxonomy
.cdm
.model
.taxon
.Taxon
;
33 * @author a.babadshanjan
37 public class IdentifiableEntityTest
{
39 private NonViralName
<?
> abies
;
40 private NonViralName
<?
> abiesMill
;
41 private NonViralName
<?
> abiesAlba
;
42 private NonViralName
<?
> abiesAlbaMichx
;
43 private NonViralName
<?
> abiesAlbaMill
;
45 private Taxon abiesTaxon
;
46 private Taxon abiesMillTaxon
;
48 private NonViralName
<?
> abiesAutonym
;
49 private Taxon abiesAutonymTaxon
;
51 private NonViralName
<?
> abiesBalsamea
;
52 private Taxon abiesBalsameaTaxon
;
54 * @throws java.lang.Exception
58 public static void setUpBeforeClass() {
59 DefaultTermInitializer vocabularyStore
= new DefaultTermInitializer();
60 vocabularyStore
.initialize();
64 * @throws java.lang.Exception
67 public static void tearDownAfterClass() throws Exception
{
71 * @throws java.lang.Exception
74 public void setUp() throws Exception
{
76 abies
= NonViralName
.NewInstance(Rank
.GENUS(), null);
77 abies
.setNameCache("Abies");
78 abies
.setTitleCache("Abies", true);
79 Reference sec
= ReferenceFactory
.newArticle();
80 sec
.setTitle("Abies alba Ref");
82 abiesTaxon
= Taxon
.NewInstance(abies
, sec
);
84 abiesMill
= NonViralName
.NewInstance(Rank
.GENUS(), null);
85 abiesMill
.setNameCache("Abies");
86 abiesMill
.setTitleCache("Abies Mill.", true);
87 abiesMillTaxon
= Taxon
.NewInstance(abiesMill
, sec
);
89 abiesAlba
= NonViralName
.NewInstance(Rank
.SPECIES(), null);
90 abiesAlba
.setNameCache("Abies alba");
91 abiesAlba
.setTitleCache("Abies alba", true);
93 abiesAlbaMichx
= NonViralName
.NewInstance(Rank
.SPECIES(), null);
94 abiesAlbaMichx
.setNameCache("Abies alba");
95 abiesAlbaMichx
.setTitleCache("Abies alba Michx.", true);
97 abiesAlbaMill
= NonViralName
.NewInstance(Rank
.SPECIES(), null);
98 abiesAlbaMill
.setNameCache("Abies alba");
99 abiesAlbaMill
.setTitleCache("Abies alba Mill.", true);
101 abiesAutonym
= NonViralName
.NewInstance(Rank
.SECTION_BOTANY());
102 abiesAutonym
.setGenusOrUninomial("Abies");
103 abiesAutonym
.setInfraGenericEpithet("Abies");
105 abiesAutonym
.setTitleCache("Abies Mill. sect. Abies", true);
106 abiesAutonym
.getNameCache();
107 abiesAutonymTaxon
= Taxon
.NewInstance(abiesAutonym
, sec
);
109 abiesBalsamea
= NonViralName
.NewInstance(Rank
.SECTION_BOTANY());
110 abiesBalsamea
.setGenusOrUninomial("Abies");
111 abiesBalsamea
.setInfraGenericEpithet("Balsamea");
112 abiesBalsamea
.getNameCache();
113 abiesBalsamea
.setTitleCache("Abies sect. Balsamea L.", true);
114 abiesBalsameaTaxon
= Taxon
.NewInstance(abiesBalsamea
, sec
);
119 * @throws java.lang.Exception
122 public void tearDown() throws Exception
{
126 * Test method for {@link eu.etaxonomy.cdm.model.common.IdentifiableEntity#compareTo(eu.etaxonomy.cdm.model.common.IdentifiableEntity)}.
129 public void testCompareTo() {
132 // "Abies" < "Abies Mill."
133 result
= abies
.compareTo(abiesMill
);
134 assertTrue(result
< 0);
136 abiesTaxon
= abies
.getTaxa().iterator().next();
138 assertTrue(abiesTaxon
.compareTo(abiesTaxon
) == 0);
140 assertTrue(abiesMillTaxon
.compareTo(abiesTaxon
) > 0);
142 assertTrue(abiesTaxon
.compareTo(abiesMillTaxon
) < 0);
144 // "Abies Mill." > "Abies"
145 result
= abiesMill
.compareTo(abies
);
146 assertTrue(result
> 0);
148 // "Abies" < "Abies alba"
149 result
= abies
.compareTo(abiesAlba
);
150 assertTrue(result
< 0);
152 // "Abies alba" > "Abies"
153 result
= abiesAlba
.compareTo(abies
);
154 assertTrue(result
> 0);
156 // "Abies Mill." < "Abies alba Michx."
157 result
= abiesMill
.compareTo(abiesAlbaMichx
);
158 assertTrue(result
< 0);
160 // "Abies alba Michx." > "Abies Mill."
161 result
= abiesAlbaMichx
.compareTo(abiesMill
);
162 assertTrue(result
> 0);
164 //Autonym should sorted without the authorstring
166 result
= abiesAutonym
.compareTo(abiesBalsamea
);
167 assertTrue(result
< 0);
168 // Test consistency of compareTo() with equals():
169 // Is consistent if and only if for every e1 and e2 of class C
170 // e1.compareTo(e2) == 0 has the same boolean value as e1.equals(e2)
172 boolean compareResult
= false;
173 boolean equalsResult
= false;
175 compareResult
= (abies
.compareTo(abies
) == 0);
176 equalsResult
= abies
.equals(abies
);
177 assertEquals(compareResult
, equalsResult
);
179 compareResult
= (abies
.compareTo(abiesAlba
) == 0);
180 equalsResult
= abies
.equals(abiesAlba
);
181 assertEquals(compareResult
, equalsResult
);
183 compareResult
= (abiesMill
.compareTo(abies
) == 0);
184 equalsResult
= abiesMill
.equals(abies
);
185 assertEquals(compareResult
, equalsResult
);
189 * Test method for {@link eu.etaxonomy.cdm.model.common.IdentifiableEntity#addCredit(eu.etaxonomy.cdm.model.common.IdentifiableEntity)}.
192 public void testAddCredit() {
193 assertNotNull("A list should always be returned",abies
.getCredits());
194 assertTrue("No credits should exist",abies
.getCredits().isEmpty());
195 String text1
= "Credit1";
196 String text2
= "Credit2";
197 String text3
= "Credit0"; //for sorting order
198 Person person
= Person
.NewTitledInstance("Me");
199 abies
.addCredit(Credit
.NewInstance(person
, text1
));
200 assertEquals("Number of credits should be 1",1,abies
.getCredits().size());
201 abies
.addCredit(Credit
.NewInstance(person
, text2
));
202 assertEquals("Number of credits should be 2",2,abies
.getCredits().size());
203 abies
.addCredit(Credit
.NewInstance(person
, text3
));
204 assertEquals("Number of credits should be 3",3,abies
.getCredits().size());
205 assertEquals("Credit0 should be last in list", text3
, abies
.getCredits(2).getText());
209 * Test method for {@link eu.etaxonomy.cdm.model.common.IdentifiableEntity#addCredit(eu.etaxonomy.cdm.model.common.IdentifiableEntity)}.
212 public void testRemoveCredit() {
213 assertNotNull("A list should always be returned",abies
.getCredits());
214 String text1
= "Credit1";
215 String text2
= "Credit2";
216 Person person
= Person
.NewTitledInstance("Me");
217 Credit credit1
= Credit
.NewInstance(person
, text1
);
218 Credit credit2
= Credit
.NewInstance(person
, text2
);
219 abies
.addCredit(credit1
);
220 abies
.addCredit(credit2
);
221 assertEquals("Number of credits should be 2",2,abies
.getCredits().size());
222 abies
.removeCredit(credit1
);
223 assertNotNull("A list should always be returned",abies
.getCredits());
224 assertFalse("The list should not be empty",abies
.getCredits().isEmpty());
225 assertEquals("Number of credits should be 1",1,abies
.getCredits().size());
226 assertEquals("Remaining credit should be credit2",credit2
,abies
.getCredits().get(0));
227 abies
.removeCredit(credit2
);
228 assertNotNull("A list should always be returned",abies
.getCredits());
229 assertTrue("No credits should exist",abies
.getCredits().isEmpty());
233 public void testClone(){
234 IdentifiableEntity clone
= (IdentifiableEntity
)abies
.clone();
235 assertNotNull(clone
);
236 assertEquals(clone
.annotations
, abies
.annotations
);
237 assertEquals(clone
.markers
, abies
.markers
);
238 assertFalse(clone
.uuid
.equals(abies
.uuid
));