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();
62 MockCdmCacher cdmCacher
= new MockCdmCacher();
65 * @throws java.lang.Exception
68 public static void tearDownAfterClass() throws Exception
{
72 * @throws java.lang.Exception
75 public void setUp() throws Exception
{
77 abies
= NonViralName
.NewInstance(Rank
.GENUS(), null);
78 abies
.setNameCache("Abies");
79 abies
.setTitleCache("Abies", true);
80 Reference sec
= ReferenceFactory
.newArticle();
81 sec
.setTitle("Abies alba Ref");
83 abiesTaxon
= Taxon
.NewInstance(abies
, sec
);
85 abiesMill
= NonViralName
.NewInstance(Rank
.GENUS(), null);
86 abiesMill
.setNameCache("Abies");
87 abiesMill
.setTitleCache("Abies Mill.", true);
88 abiesMillTaxon
= Taxon
.NewInstance(abiesMill
, sec
);
90 abiesAlba
= NonViralName
.NewInstance(Rank
.SPECIES(), null);
91 abiesAlba
.setNameCache("Abies alba");
92 abiesAlba
.setTitleCache("Abies alba", true);
94 abiesAlbaMichx
= NonViralName
.NewInstance(Rank
.SPECIES(), null);
95 abiesAlbaMichx
.setNameCache("Abies alba");
96 abiesAlbaMichx
.setTitleCache("Abies alba Michx.", true);
98 abiesAlbaMill
= NonViralName
.NewInstance(Rank
.SPECIES(), null);
99 abiesAlbaMill
.setNameCache("Abies alba");
100 abiesAlbaMill
.setTitleCache("Abies alba Mill.", true);
102 abiesAutonym
= NonViralName
.NewInstance(Rank
.SECTION_BOTANY());
103 abiesAutonym
.setGenusOrUninomial("Abies");
104 abiesAutonym
.setInfraGenericEpithet("Abies");
106 abiesAutonym
.setTitleCache("Abies Mill. sect. Abies", true);
107 abiesAutonym
.getNameCache();
108 abiesAutonymTaxon
= Taxon
.NewInstance(abiesAutonym
, sec
);
110 abiesBalsamea
= NonViralName
.NewInstance(Rank
.SECTION_BOTANY());
111 abiesBalsamea
.setGenusOrUninomial("Abies");
112 abiesBalsamea
.setInfraGenericEpithet("Balsamea");
113 abiesBalsamea
.getNameCache();
114 abiesBalsamea
.setTitleCache("Abies sect. Balsamea L.", true);
115 abiesBalsameaTaxon
= Taxon
.NewInstance(abiesBalsamea
, sec
);
120 * @throws java.lang.Exception
123 public void tearDown() throws Exception
{
127 * Test method for {@link eu.etaxonomy.cdm.model.common.IdentifiableEntity#compareTo(eu.etaxonomy.cdm.model.common.IdentifiableEntity)}.
130 public void testCompareTo() {
133 // "Abies" < "Abies Mill."
134 result
= abies
.compareTo(abiesMill
);
135 assertTrue(result
< 0);
137 abiesTaxon
= abies
.getTaxa().iterator().next();
139 assertTrue(abiesTaxon
.compareTo(abiesTaxon
) == 0);
141 assertTrue(abiesMillTaxon
.compareTo(abiesTaxon
) > 0);
143 assertTrue(abiesTaxon
.compareTo(abiesMillTaxon
) < 0);
145 // "Abies Mill." > "Abies"
146 result
= abiesMill
.compareTo(abies
);
147 assertTrue(result
> 0);
149 // "Abies" < "Abies alba"
150 result
= abies
.compareTo(abiesAlba
);
151 assertTrue(result
< 0);
153 // "Abies alba" > "Abies"
154 result
= abiesAlba
.compareTo(abies
);
155 assertTrue(result
> 0);
157 // "Abies Mill." < "Abies alba Michx."
158 result
= abiesMill
.compareTo(abiesAlbaMichx
);
159 assertTrue(result
< 0);
161 // "Abies alba Michx." > "Abies Mill."
162 result
= abiesAlbaMichx
.compareTo(abiesMill
);
163 assertTrue(result
> 0);
165 //Autonym should sorted without the authorstring
167 result
= abiesAutonym
.compareTo(abiesBalsamea
);
168 assertTrue(result
< 0);
169 // Test consistency of compareTo() with equals():
170 // Is consistent if and only if for every e1 and e2 of class C
171 // e1.compareTo(e2) == 0 has the same boolean value as e1.equals(e2)
173 boolean compareResult
= false;
174 boolean equalsResult
= false;
176 compareResult
= (abies
.compareTo(abies
) == 0);
177 equalsResult
= abies
.equals(abies
);
178 assertEquals(compareResult
, equalsResult
);
180 compareResult
= (abies
.compareTo(abiesAlba
) == 0);
181 equalsResult
= abies
.equals(abiesAlba
);
182 assertEquals(compareResult
, equalsResult
);
184 compareResult
= (abiesMill
.compareTo(abies
) == 0);
185 equalsResult
= abiesMill
.equals(abies
);
186 assertEquals(compareResult
, equalsResult
);
190 * Test method for {@link eu.etaxonomy.cdm.model.common.IdentifiableEntity#addCredit(eu.etaxonomy.cdm.model.common.IdentifiableEntity)}.
193 public void testAddCredit() {
194 assertNotNull("A list should always be returned",abies
.getCredits());
195 assertTrue("No credits should exist",abies
.getCredits().isEmpty());
196 String text1
= "Credit1";
197 String text2
= "Credit2";
198 String text3
= "Credit0"; //for sorting order
199 Person person
= Person
.NewTitledInstance("Me");
200 abies
.addCredit(Credit
.NewInstance(person
, text1
));
201 assertEquals("Number of credits should be 1",1,abies
.getCredits().size());
202 abies
.addCredit(Credit
.NewInstance(person
, text2
));
203 assertEquals("Number of credits should be 2",2,abies
.getCredits().size());
204 abies
.addCredit(Credit
.NewInstance(person
, text3
));
205 assertEquals("Number of credits should be 3",3,abies
.getCredits().size());
206 assertEquals("Credit0 should be last in list", text3
, abies
.getCredits(2).getText());
210 * Test method for {@link eu.etaxonomy.cdm.model.common.IdentifiableEntity#addCredit(eu.etaxonomy.cdm.model.common.IdentifiableEntity)}.
213 public void testRemoveCredit() {
214 assertNotNull("A list should always be returned",abies
.getCredits());
215 String text1
= "Credit1";
216 String text2
= "Credit2";
217 Person person
= Person
.NewTitledInstance("Me");
218 Credit credit1
= Credit
.NewInstance(person
, text1
);
219 Credit credit2
= Credit
.NewInstance(person
, text2
);
220 abies
.addCredit(credit1
);
221 abies
.addCredit(credit2
);
222 assertEquals("Number of credits should be 2",2,abies
.getCredits().size());
223 abies
.removeCredit(credit1
);
224 assertNotNull("A list should always be returned",abies
.getCredits());
225 assertFalse("The list should not be empty",abies
.getCredits().isEmpty());
226 assertEquals("Number of credits should be 1",1,abies
.getCredits().size());
227 assertEquals("Remaining credit should be credit2",credit2
,abies
.getCredits().get(0));
228 abies
.removeCredit(credit2
);
229 assertNotNull("A list should always be returned",abies
.getCredits());
230 assertTrue("No credits should exist",abies
.getCredits().isEmpty());
234 public void testClone(){
235 IdentifiableEntity clone
= (IdentifiableEntity
)abies
.clone();
236 assertNotNull(clone
);
237 assertEquals(clone
.annotations
, abies
.annotations
);
238 assertEquals(clone
.markers
, abies
.markers
);
239 assertFalse(clone
.uuid
.equals(abies
.uuid
));