Project

General

Profile

Download (9.01 KB) Statistics
| Branch: | Tag: | Revision:
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.agent.Person;
24
import eu.etaxonomy.cdm.model.name.BotanicalName;
25
import eu.etaxonomy.cdm.model.name.HybridRelationshipType;
26
import eu.etaxonomy.cdm.model.name.NonViralName;
27
import eu.etaxonomy.cdm.model.name.Rank;
28
import eu.etaxonomy.cdm.model.name.TaxonNameBase;
29
import eu.etaxonomy.cdm.model.name.TaxonNameFactory;
30
import eu.etaxonomy.cdm.model.reference.Reference;
31
import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
32
import eu.etaxonomy.cdm.model.taxon.Taxon;
33

    
34
/**
35
 * @author a.babadshanjan
36
 * @created 02.02.2009
37
 * @version 1.0
38
 */
39
public class IdentifiableEntityTest {
40

    
41
	private NonViralName<?> abies;
42
	private NonViralName<?> abiesMill;
43
	private NonViralName<?> abiesAlba;
44
	private NonViralName<?> abiesAlbaMichx;
45
	private NonViralName<?> abiesAlbaMill;
46
	private NonViralName<?> abiesAlbaxPinusBeta;
47
	private NonViralName<?> pinusBeta;
48

    
49
	private Taxon abiesTaxon;
50
	private Taxon abiesMillTaxon;
51

    
52
	private NonViralName<?> abiesAutonym;
53
	private Taxon abiesAutonymTaxon;
54

    
55
	private NonViralName<?> abiesBalsamea;
56
	private Taxon abiesBalsameaTaxon;
57
	private Taxon abiesAlbaxPinusBetaTaxon;
58
	/**
59
	 * @throws java.lang.Exception
60
	 */
61

    
62
	@BeforeClass
63
	public static void setUpBeforeClass() {
64
		DefaultTermInitializer vocabularyStore = new DefaultTermInitializer();
65
		vocabularyStore.initialize();
66

    
67
	}
68
	/**
69
	 * @throws java.lang.Exception
70
	 */
71
	@AfterClass
72
	public static void tearDownAfterClass() throws Exception {
73
	}
74

    
75
	/**
76
	 * @throws java.lang.Exception
77
	 */
78
	@Before
79
	public void setUp() throws Exception {
80

    
81
		abies = TaxonNameFactory.NewNonViralInstance(Rank.GENUS(), null);
82
		abies.setNameCache("Abies");
83
		abies.setTitleCache("Abies", true);
84
		Reference sec = ReferenceFactory.newArticle();
85
		sec.setTitle("Abies alba Ref");
86

    
87
		abiesTaxon = Taxon.NewInstance(abies, sec);
88

    
89
		abiesMill = TaxonNameFactory.NewNonViralInstance(Rank.GENUS(), null);
90
		abiesMill.setNameCache("Abies");
91
		abiesMill.setTitleCache("Abies Mill.", true);
92
		abiesMillTaxon = Taxon.NewInstance(abiesMill, sec);
93

    
94
		abiesAlba = TaxonNameFactory.NewNonViralInstance(Rank.SPECIES(), null);
95
		abiesAlba.setNameCache("Abies alba");
96
		abiesAlba.setTitleCache("Abies alba", true);
97

    
98
		abiesAlbaMichx = TaxonNameFactory.NewNonViralInstance(Rank.SPECIES(), null);
99
		abiesAlbaMichx.setNameCache("Abies alba");
100
		abiesAlbaMichx.setTitleCache("Abies alba Michx.", true);
101

    
102
		abiesAlbaMill = TaxonNameFactory.NewNonViralInstance(Rank.SPECIES(), null);
103
		abiesAlbaMill.setNameCache("Abies alba");
104
		abiesAlbaMill.setTitleCache("Abies alba Mill.", true);
105

    
106
		abiesAutonym  = TaxonNameFactory.NewNonViralInstance(Rank.SECTION_BOTANY());
107
		abiesAutonym.setGenusOrUninomial("Abies");
108
		abiesAutonym.setInfraGenericEpithet("Abies");
109

    
110
		abiesAutonym.setTitleCache("Abies Mill. sect. Abies", true);
111
		abiesAutonym.getNameCache();
112
		abiesAutonymTaxon = Taxon.NewInstance(abiesAutonym, sec);
113

    
114
		abiesBalsamea  = TaxonNameFactory.NewNonViralInstance(Rank.SECTION_BOTANY());
115
		abiesBalsamea.setGenusOrUninomial("Abies");
116
		abiesBalsamea.setInfraGenericEpithet("Balsamea");
117
		abiesBalsamea.getNameCache();
118
		abiesBalsamea.setTitleCache("Abies sect. Balsamea L.", true);
119
		abiesBalsameaTaxon = Taxon.NewInstance(abiesBalsamea, sec);
120

    
121
		abiesAlbaxPinusBeta = TaxonNameFactory.NewNonViralInstance(Rank.SPECIES());
122
		pinusBeta = TaxonNameFactory.NewNonViralInstance(Rank.SPECIES());
123
		pinusBeta.setGenusOrUninomial("Pinus");
124
		pinusBeta.setSpecificEpithet("beta");
125
		abiesAlbaxPinusBeta.setHybridFormula(true);
126
		abiesAlbaxPinusBeta.addHybridParent(abiesAlba, HybridRelationshipType.FIRST_PARENT(), null);
127
		abiesAlbaxPinusBeta.addHybridParent(pinusBeta, HybridRelationshipType.SECOND_PARENT(), null);
128

    
129
	}
130

    
131
	/**
132
	 * @throws java.lang.Exception
133
	 */
134
	@After
135
	public void tearDown() throws Exception {
136
	}
137

    
138
	/**
139
	 * Test method for {@link eu.etaxonomy.cdm.model.common.IdentifiableEntity#compareTo(eu.etaxonomy.cdm.model.common.IdentifiableEntity)}.
140
	 */
141
	@Test
142
	public void testCompareTo() {
143
		int result = 0;
144

    
145
		// "Abies" < "Abies Mill."
146
		result = abies.compareTo(abiesMill);
147
		assertTrue(result < 0);
148

    
149
		abiesTaxon = abies.getTaxa().iterator().next();
150

    
151
		assertTrue(abiesTaxon.compareTo(abiesTaxon) == 0);
152

    
153
		assertTrue(abiesMillTaxon.compareTo(abiesTaxon) > 0);
154

    
155
		assertTrue(abiesTaxon.compareTo(abiesMillTaxon) < 0);
156

    
157
		// "Abies Mill." > "Abies"
158
		result = abiesMill.compareTo(abies);
159
		assertTrue(result > 0);
160

    
161
		// "Abies" < "Abies alba"
162
		result = abies.compareTo(abiesAlba);
163
		assertTrue(result < 0);
164

    
165
		// "Abies alba" > "Abies"
166
		result = abiesAlba.compareTo(abies);
167
		assertTrue(result > 0);
168

    
169
		// "Abies Mill." < "Abies alba Michx."
170
		result = abiesMill.compareTo(abiesAlbaMichx);
171
		assertTrue(result < 0);
172

    
173
		// "Abies alba Michx." > "Abies Mill."
174
		result = abiesAlbaMichx.compareTo(abiesMill);
175
		assertTrue(result > 0);
176

    
177
		//Autonym should sorted without the authorstring
178

    
179
		result = abiesAutonym.compareTo(abiesBalsamea);
180
		assertTrue(result < 0);
181
	    // Test consistency of compareTo() with equals():
182
		// Is consistent if and only if for every e1 and e2 of class C
183
		// e1.compareTo(e2) == 0 has the same boolean value as e1.equals(e2)
184

    
185
		boolean compareResult = false;
186
		boolean equalsResult = false;
187

    
188
		compareResult = (abies.compareTo(abies) == 0);
189
		equalsResult = abies.equals(abies);
190
		assertEquals(compareResult, equalsResult);
191

    
192
		compareResult = (abies.compareTo(abiesAlba) == 0);
193
		equalsResult = abies.equals(abiesAlba);
194
		assertEquals(compareResult, equalsResult);
195

    
196
		compareResult = (abiesMill.compareTo(abies) == 0);
197
		equalsResult = abiesMill.equals(abies);
198
		assertEquals(compareResult, equalsResult);
199

    
200
		//Abies alba x Pinus beta < Abies alba xinus
201
		BotanicalName abiesAlbaXinus = TaxonNameFactory.NewBotanicalInstance(Rank.SUBSPECIES());
202
		abiesAlbaXinus.setGenusOrUninomial("Abies");
203
		abiesAlbaXinus.setSpecificEpithet("alba");
204
		abiesAlbaXinus.setInfraSpecificEpithet("xinus");
205
		result = abiesAlbaxPinusBeta.compareTo(abiesAlbaXinus);
206
		assertTrue(result < 0);
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 testAddCredit() {
214
		assertNotNull("A list should always be returned",abies.getCredits());
215
		assertTrue("No credits should exist",abies.getCredits().isEmpty());
216
		String text1 = "Credit1";
217
		String text2 = "Credit2";
218
		String text3 = "Credit0"; //for sorting order
219
		Person person = Person.NewTitledInstance("Me");
220
		abies.addCredit(Credit.NewInstance(person, text1));
221
		assertEquals("Number of credits should be 1",1,abies.getCredits().size());
222
		abies.addCredit(Credit.NewInstance(person, text2));
223
		assertEquals("Number of credits should be 2",2,abies.getCredits().size());
224
		abies.addCredit(Credit.NewInstance(person, text3));
225
		assertEquals("Number of credits should be 3",3,abies.getCredits().size());
226
		assertEquals("Credit0 should be last in list", text3, abies.getCredits(2).getText());
227
	}
228

    
229
	/**
230
	 * Test method for {@link eu.etaxonomy.cdm.model.common.IdentifiableEntity#addCredit(eu.etaxonomy.cdm.model.common.IdentifiableEntity)}.
231
	 */
232
	@Test
233
	public void testRemoveCredit() {
234
		assertNotNull("A list should always be returned",abies.getCredits());
235
		String text1 = "Credit1";
236
		String text2 = "Credit2";
237
		Person person = Person.NewTitledInstance("Me");
238
		Credit credit1 = Credit.NewInstance(person, text1);
239
		Credit credit2 = Credit.NewInstance(person, text2);
240
		abies.addCredit(credit1);
241
		abies.addCredit(credit2);
242
		assertEquals("Number of credits should be 2",2,abies.getCredits().size());
243
		abies.removeCredit(credit1);
244
		assertNotNull("A list should always be returned",abies.getCredits());
245
		assertFalse("The list should not be empty",abies.getCredits().isEmpty());
246
		assertEquals("Number of credits should be 1",1,abies.getCredits().size());
247
		assertEquals("Remaining credit should be credit2",credit2,abies.getCredits().get(0));
248
		abies.removeCredit(credit2);
249
		assertNotNull("A list should always be returned",abies.getCredits());
250
		assertTrue("No credits should exist",abies.getCredits().isEmpty());
251
	}
252

    
253
	@Test
254
	public void testClone(){
255
		IdentifiableEntity clone = (IdentifiableEntity)abies.clone();
256
		assertNotNull(clone);
257
		assertEquals(clone.annotations, abies.annotations);
258
		assertEquals(clone.markers, abies.markers);
259
		assertFalse(clone.uuid.equals(abies.uuid));
260
	}
261
}
(8-8/17)