MockCdmCacher : added mock cdm cacher for tests in cdmlib-model
[cdmlib.git] / cdmlib-model / src / test / java / eu / etaxonomy / cdm / model / common / IdentifiableEntityTest.java
1 /**
2 * Copyright (C) 2009 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.common;
11
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;
16
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;
22
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;
31
32 /**
33 * @author a.babadshanjan
34 * @created 02.02.2009
35 * @version 1.0
36 */
37 public class IdentifiableEntityTest {
38
39 private NonViralName<?> abies;
40 private NonViralName<?> abiesMill;
41 private NonViralName<?> abiesAlba;
42 private NonViralName<?> abiesAlbaMichx;
43 private NonViralName<?> abiesAlbaMill;
44
45 private Taxon abiesTaxon;
46 private Taxon abiesMillTaxon;
47
48 private NonViralName<?> abiesAutonym;
49 private Taxon abiesAutonymTaxon;
50
51 private NonViralName<?> abiesBalsamea;
52 private Taxon abiesBalsameaTaxon;
53 /**
54 * @throws java.lang.Exception
55 */
56
57 @BeforeClass
58 public static void setUpBeforeClass() {
59 DefaultTermInitializer vocabularyStore = new DefaultTermInitializer();
60 vocabularyStore.initialize();
61
62 MockCdmCacher cdmCacher = new MockCdmCacher();
63 }
64 /**
65 * @throws java.lang.Exception
66 */
67 @AfterClass
68 public static void tearDownAfterClass() throws Exception {
69 }
70
71 /**
72 * @throws java.lang.Exception
73 */
74 @Before
75 public void setUp() throws Exception {
76
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");
82
83 abiesTaxon = Taxon.NewInstance(abies, sec);
84
85 abiesMill = NonViralName.NewInstance(Rank.GENUS(), null);
86 abiesMill.setNameCache("Abies");
87 abiesMill.setTitleCache("Abies Mill.", true);
88 abiesMillTaxon = Taxon.NewInstance(abiesMill, sec);
89
90 abiesAlba = NonViralName.NewInstance(Rank.SPECIES(), null);
91 abiesAlba.setNameCache("Abies alba");
92 abiesAlba.setTitleCache("Abies alba", true);
93
94 abiesAlbaMichx = NonViralName.NewInstance(Rank.SPECIES(), null);
95 abiesAlbaMichx.setNameCache("Abies alba");
96 abiesAlbaMichx.setTitleCache("Abies alba Michx.", true);
97
98 abiesAlbaMill = NonViralName.NewInstance(Rank.SPECIES(), null);
99 abiesAlbaMill.setNameCache("Abies alba");
100 abiesAlbaMill.setTitleCache("Abies alba Mill.", true);
101
102 abiesAutonym = NonViralName.NewInstance(Rank.SECTION_BOTANY());
103 abiesAutonym.setGenusOrUninomial("Abies");
104 abiesAutonym.setInfraGenericEpithet("Abies");
105
106 abiesAutonym.setTitleCache("Abies Mill. sect. Abies", true);
107 abiesAutonym.getNameCache();
108 abiesAutonymTaxon = Taxon.NewInstance(abiesAutonym, sec);
109
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);
116
117 }
118
119 /**
120 * @throws java.lang.Exception
121 */
122 @After
123 public void tearDown() throws Exception {
124 }
125
126 /**
127 * Test method for {@link eu.etaxonomy.cdm.model.common.IdentifiableEntity#compareTo(eu.etaxonomy.cdm.model.common.IdentifiableEntity)}.
128 */
129 @Test
130 public void testCompareTo() {
131 int result = 0;
132
133 // "Abies" < "Abies Mill."
134 result = abies.compareTo(abiesMill);
135 assertTrue(result < 0);
136
137 abiesTaxon = abies.getTaxa().iterator().next();
138
139 assertTrue(abiesTaxon.compareTo(abiesTaxon) == 0);
140
141 assertTrue(abiesMillTaxon.compareTo(abiesTaxon) > 0);
142
143 assertTrue(abiesTaxon.compareTo(abiesMillTaxon) < 0);
144
145 // "Abies Mill." > "Abies"
146 result = abiesMill.compareTo(abies);
147 assertTrue(result > 0);
148
149 // "Abies" < "Abies alba"
150 result = abies.compareTo(abiesAlba);
151 assertTrue(result < 0);
152
153 // "Abies alba" > "Abies"
154 result = abiesAlba.compareTo(abies);
155 assertTrue(result > 0);
156
157 // "Abies Mill." < "Abies alba Michx."
158 result = abiesMill.compareTo(abiesAlbaMichx);
159 assertTrue(result < 0);
160
161 // "Abies alba Michx." > "Abies Mill."
162 result = abiesAlbaMichx.compareTo(abiesMill);
163 assertTrue(result > 0);
164
165 //Autonym should sorted without the authorstring
166
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)
172
173 boolean compareResult = false;
174 boolean equalsResult = false;
175
176 compareResult = (abies.compareTo(abies) == 0);
177 equalsResult = abies.equals(abies);
178 assertEquals(compareResult, equalsResult);
179
180 compareResult = (abies.compareTo(abiesAlba) == 0);
181 equalsResult = abies.equals(abiesAlba);
182 assertEquals(compareResult, equalsResult);
183
184 compareResult = (abiesMill.compareTo(abies) == 0);
185 equalsResult = abiesMill.equals(abies);
186 assertEquals(compareResult, equalsResult);
187 }
188
189 /**
190 * Test method for {@link eu.etaxonomy.cdm.model.common.IdentifiableEntity#addCredit(eu.etaxonomy.cdm.model.common.IdentifiableEntity)}.
191 */
192 @Test
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());
207 }
208
209 /**
210 * Test method for {@link eu.etaxonomy.cdm.model.common.IdentifiableEntity#addCredit(eu.etaxonomy.cdm.model.common.IdentifiableEntity)}.
211 */
212 @Test
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());
231 }
232
233 @Test
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));
240 }
241 }