Revision 1c7946d9
Added by Andreas Müller about 8 years ago
cdmlib-model/src/test/java/eu/etaxonomy/cdm/model/taxon/HomotypicGroupTaxonComparatorTest.java | ||
---|---|---|
25 | 25 |
import eu.etaxonomy.cdm.model.common.TimePeriod; |
26 | 26 |
import eu.etaxonomy.cdm.model.name.BotanicalName; |
27 | 27 |
import eu.etaxonomy.cdm.model.name.HomotypicalGroup; |
28 |
import eu.etaxonomy.cdm.model.name.NomenclaturalStatus; |
|
29 |
import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType; |
|
28 | 30 |
import eu.etaxonomy.cdm.model.name.NonViralName; |
29 | 31 |
import eu.etaxonomy.cdm.model.name.Rank; |
30 | 32 |
//import eu.etaxonomy.cdm.model.reference.Book; |
... | ... | |
106 | 108 |
|
107 | 109 |
} |
108 | 110 |
|
109 |
|
|
110 |
/** |
|
111 |
* |
|
112 |
*/ |
|
113 | 111 |
private void setNameParts(NonViralName<?> name, String genus, String speciesEpi) { |
114 | 112 |
name.setGenusOrUninomial(genus); |
115 | 113 |
name.setSpecificEpithet(speciesEpi); |
... | ... | |
234 | 232 |
Assert.assertEquals(botName4, list.get(2).getName()); |
235 | 233 |
Assert.assertEquals(botName2, list.get(3).getName()); |
236 | 234 |
|
235 |
//even with nom. illeg. the name with date should come first |
|
236 |
NomenclaturalStatus illegStatus = NomenclaturalStatus.NewInstance(NomenclaturalStatusType.ILLEGITIMATE()); |
|
237 |
botName5.addStatus(illegStatus); |
|
238 |
|
|
239 |
Assert.assertEquals("basionym with date should comes first", botName5, list.get(0).getName()); |
|
240 |
Assert.assertEquals(botName3, list.get(1).getName()); |
|
241 |
Assert.assertEquals(botName4, list.get(2).getName()); |
|
242 |
Assert.assertEquals(botName2, list.get(3).getName()); |
|
243 |
|
|
244 |
|
|
237 | 245 |
//add replaced synonym relation between basionyms |
238 | 246 |
botName5.addReplacedSynonym(botName4, null, null, null); |
239 | 247 |
Collections.sort(list, new HomotypicGroupTaxonComparator(null)); |
... | ... | |
325 | 333 |
|
326 | 334 |
} |
327 | 335 |
|
336 |
@Test |
|
337 |
public void testCompare_BasionymGroupsWithNomIlleg() { |
|
338 |
NomenclaturalStatus illegStatus = NomenclaturalStatus.NewInstance(NomenclaturalStatusType.ILLEGITIMATE()); |
|
339 |
botName4.addStatus(illegStatus); |
|
340 |
|
|
341 |
//2 basionym groups |
|
342 |
|
|
343 |
HomotypicalGroup homotypicalGroup = botName2.getHomotypicalGroup(); |
|
344 |
taxon1.addHeterotypicSynonymName(botName3); |
|
345 |
taxon1.addHeterotypicSynonymName(botName5, homotypicalGroup, null, null); |
|
346 |
botName3.addBasionym(botName5); |
|
347 |
|
|
348 |
synonym2 = taxon1.addHeterotypicSynonymName(botName2).getSynonym(); |
|
349 |
taxon1.addHeterotypicSynonymName(botName4, homotypicalGroup, null, null); |
|
350 |
// botName2.addBasionym(botName4); |
|
351 |
|
|
352 |
|
|
353 |
list.addAll(taxon1.getSynonyms()); |
|
354 |
Collections.sort(list, new HomotypicGroupTaxonComparator(null)); |
|
355 |
|
|
356 |
Assert.assertEquals("basionym for non nom. illeg. group should come first", botName2, list.get(0).getName()); |
|
357 |
Assert.assertEquals(botName5, list.get(1).getName()); |
|
358 |
Assert.assertEquals(botName3, list.get(2).getName()); |
|
359 |
Assert.assertEquals("Nom illeg should come last", botName4, list.get(3).getName()); |
|
360 |
|
|
361 |
//name having a nom. illeg. as basionym should stay in its basionym group |
|
362 |
//NOTE: this is dirty data as nom. illeg. is not allowed as basionym by the code |
|
363 |
botName2.addBasionym(botName4); |
|
364 |
Collections.sort(list, new HomotypicGroupTaxonComparator(null)); |
|
365 |
|
|
366 |
Assert.assertEquals("basionym for non nom. illeg. group should come first", botName5, list.get(0).getName()); |
|
367 |
Assert.assertEquals(botName3, list.get(1).getName()); |
|
368 |
Assert.assertEquals("Nom illeg basionym group should come last", botName4, list.get(2).getName()); |
|
369 |
Assert.assertEquals("Names with nom. illeg. as basionym should stay in basionym group", botName2, list.get(3).getName()); |
|
370 |
|
|
371 |
//non basionym nom. illeg. should not change the order |
|
372 |
botName4.removeStatus(illegStatus); |
|
373 |
botName2.addStatus(illegStatus); |
|
374 |
Collections.sort(list, new HomotypicGroupTaxonComparator(null)); |
|
375 |
|
|
376 |
Assert.assertEquals("basionym for non nom. illeg. group should come first", botName4, list.get(0).getName()); |
|
377 |
Assert.assertEquals(botName2, list.get(1).getName()); |
|
378 |
Assert.assertEquals("Nom illeg basionym group should come last", botName5, list.get(2).getName()); |
|
379 |
Assert.assertEquals("Names with nom. illeg. as basionym should stay in basionym group", botName3, list.get(3).getName()); |
|
380 |
|
|
381 |
} |
|
382 |
|
|
328 | 383 |
@Test |
329 | 384 |
public void testCompare_NoCircularProblemsWithBasionyms() { |
330 | 385 |
|
Also available in: Unified diff
Include nom. illeg. in homotypic group ordering #3338