Project

General

Profile

Download (22.2 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2018 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
package eu.etaxonomy.cdm.api.service.name;
10

    
11
import static org.junit.Assert.assertEquals;
12
import static org.junit.Assert.assertNotNull;
13

    
14
import java.util.ArrayList;
15
import java.util.Iterator;
16
import java.util.List;
17
import java.util.Map;
18

    
19
import org.junit.Assert;
20
import org.junit.Before;
21
import org.junit.Test;
22

    
23
import eu.etaxonomy.cdm.api.service.exception.RegistrationValidationException;
24
import eu.etaxonomy.cdm.model.agent.Person;
25
import eu.etaxonomy.cdm.model.agent.Team;
26
import eu.etaxonomy.cdm.model.common.IdentifiableSource;
27
import eu.etaxonomy.cdm.model.common.VerbatimTimePeriod;
28
import eu.etaxonomy.cdm.model.common.VersionableEntity;
29
import eu.etaxonomy.cdm.model.media.Media;
30
import eu.etaxonomy.cdm.model.name.NameTypeDesignation;
31
import eu.etaxonomy.cdm.model.name.NameTypeDesignationStatus;
32
import eu.etaxonomy.cdm.model.name.Rank;
33
import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
34
import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;
35
import eu.etaxonomy.cdm.model.name.TaxonName;
36
import eu.etaxonomy.cdm.model.name.TaxonNameFactory;
37
import eu.etaxonomy.cdm.model.name.TypeDesignationBase;
38
import eu.etaxonomy.cdm.model.name.TypeDesignationStatusBase;
39
import eu.etaxonomy.cdm.model.occurrence.Collection;
40
import eu.etaxonomy.cdm.model.occurrence.DerivationEvent;
41
import eu.etaxonomy.cdm.model.occurrence.DerivationEventType;
42
import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
43
import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
44
import eu.etaxonomy.cdm.model.occurrence.MediaSpecimen;
45
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
46
import eu.etaxonomy.cdm.model.reference.Reference;
47
import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
48
import eu.etaxonomy.cdm.strategy.parser.TimePeriodParser;
49
import eu.etaxonomy.cdm.test.TermTestBase;
50

    
51
/**
52
 * @author a.kohlbecker, k.luther, a.mueller
53
 * @since 03.09.2018
54
 */
55
public class TypeDesignationSetManagerTest extends TermTestBase{
56

    
57
        private static final boolean WITH_CITATION = true;
58
        private static final boolean WITH_NAME = true;
59
        private static final boolean WITH_TYPE_LABEL = true;
60

    
61
        private NameTypeDesignation ntd;
62
        private NameTypeDesignation ntd_LT;
63
        private SpecimenTypeDesignation std_IT;
64
        private SpecimenTypeDesignation std_HT;
65
        private SpecimenTypeDesignation std_LT;
66
        private SpecimenTypeDesignation std_IT_2;
67
        private SpecimenTypeDesignation std_IT_3;
68
        private SpecimenTypeDesignation mtd_HT_published;
69
        private SpecimenTypeDesignation mtd_IT_unpublished;
70
        private Reference book;
71
        private Team team;
72

    
73
        @Before
74
        public void init(){
75

    
76
            Person person1 = Person.NewInstance("DC", "Decandolle", "A.", null);
77
            Person person2 = Person.NewInstance("Hab.", "Haber", "M.", null);
78
            Person person3 = Person.NewInstance("Moler", "Moler", "A.P.", null);
79
            team = Team.NewInstance(person1, person2, person3);
80

    
81
            book = ReferenceFactory.newBook();
82
            book.setAuthorship(team);
83
            book.setDatePublished(TimePeriodParser.parseStringVerbatim("11 Apr 1962"));
84

    
85
            ntd = NameTypeDesignation.NewInstance();
86
            ntd.setId(1);
87
            TaxonName typeName = TaxonNameFactory.NewBacterialInstance(Rank.SPECIES());
88
            typeName.setTitleCache("Prionus coriatius L.", true);
89
            ntd.setTypeName(typeName);
90
//            Reference citation = ReferenceFactory.newGeneric();
91
//            citation.setTitleCache("Species Plantarum", true);
92
//            ntd.setCitation(citation);
93
//          ntd.addPrimaryTaxonomicSource(citation, null);
94

    
95
            ntd_LT = NameTypeDesignation.NewInstance();
96
            ntd_LT.setTypeStatus(NameTypeDesignationStatus.LECTOTYPE());
97
            TaxonName typeName2 = TaxonNameFactory.NewBacterialInstance(Rank.SPECIES());
98
            typeName2.setTitleCache("Prionus arealus L.", true);
99
            ntd_LT.setTypeName(typeName2);
100
            ntd_LT.setCitation(book);
101

    
102
            FieldUnit fu_1 = FieldUnit.NewInstance();
103
            fu_1.setId(1);
104
            fu_1.setTitleCache("Testland, near Bughausen, A.Kohlbecker 81989, 2017", true);
105

    
106
            FieldUnit fu_2 = FieldUnit.NewInstance();
107
            fu_2.setId(2);
108
            fu_2.setTitleCache("Dreamland, near Kissingen, A.Kohlbecker 66211, 2017", true);
109

    
110
            std_HT = SpecimenTypeDesignation.NewInstance();
111
            std_HT.setId(1);
112
            DerivedUnit specimen_HT = DerivedUnit.NewInstance(SpecimenOrObservationType.PreservedSpecimen);
113
            specimen_HT.setTitleCache("OHA", true);
114
            createDerivationEvent(fu_1, specimen_HT);
115
            specimen_HT.getOriginals().add(fu_1);
116
            std_HT.setTypeSpecimen(specimen_HT);
117
            std_HT.setTypeStatus(SpecimenTypeDesignationStatus.HOLOTYPE());
118

    
119
            std_IT = SpecimenTypeDesignation.NewInstance();
120
            std_IT.setId(2);
121
            DerivedUnit specimen_IT = DerivedUnit.NewInstance(SpecimenOrObservationType.PreservedSpecimen);
122
            specimen_IT.setTitleCache("BER", true);
123
            createDerivationEvent(fu_1, specimen_IT);
124
            std_IT.setTypeSpecimen(specimen_IT);
125
            std_IT.setTypeStatus(SpecimenTypeDesignationStatus.ISOTYPE());
126

    
127
            std_LT = SpecimenTypeDesignation.NewInstance();
128
            DerivedUnit specimen_LT = DerivedUnit.NewInstance(SpecimenOrObservationType.PreservedSpecimen);
129
            specimen_LT.setTitleCache("LEC", true);
130
            createDerivationEvent(fu_1, specimen_LT);
131
            std_LT.setTypeSpecimen(specimen_LT);
132
            std_LT.setTypeStatus(SpecimenTypeDesignationStatus.LECTOTYPE());
133
            std_LT.setCitation(book);
134

    
135
            std_IT_2 = SpecimenTypeDesignation.NewInstance();
136
            std_IT_2.setId(3);
137
            DerivedUnit specimen_IT_2 = DerivedUnit.NewInstance(SpecimenOrObservationType.PreservedSpecimen);
138
            specimen_IT_2.setTitleCache("KEW", true);
139
            createDerivationEvent(fu_1, specimen_IT_2);
140
            std_IT_2.setTypeSpecimen(specimen_IT_2);
141
            std_IT_2.setTypeStatus(SpecimenTypeDesignationStatus.ISOTYPE());
142

    
143
            std_IT_3 = SpecimenTypeDesignation.NewInstance();
144
            std_IT_3.setId(4);
145
            DerivedUnit specimen_IT_3 = DerivedUnit.NewInstance(SpecimenOrObservationType.PreservedSpecimen);
146
            specimen_IT_3.setTitleCache("M", true);
147
            createDerivationEvent(fu_2, specimen_IT_3);
148
            std_IT_3.setTypeSpecimen(specimen_IT_3);
149
            std_IT_3.setTypeStatus(SpecimenTypeDesignationStatus.ISOTYPE());
150

    
151
            mtd_HT_published = SpecimenTypeDesignation.NewInstance();
152
            mtd_HT_published.setId(5);
153
            MediaSpecimen mediaSpecimen_published = (MediaSpecimen)DerivedUnit.NewInstance(SpecimenOrObservationType.Media);
154
            Media media = Media.NewInstance();
155
            Reference ref = ReferenceFactory.newBook();
156
            ref.setTitle("Algae of the BGBM");
157
            ref.setDatePublished(VerbatimTimePeriod.NewVerbatimInstance(2008));
158
            ref.setAuthorship(Team.NewInstance(Person.NewInstance(null, "Kohlbecker", "A.", null), Person.NewInstance(null, "Kusber", "W.-H.", null)));
159
            media.addSource(IdentifiableSource.NewPrimaryMediaSourceInstance(ref, "33"));
160
            mediaSpecimen_published.setMediaSpecimen(media);
161
            createDerivationEvent(fu_1, mediaSpecimen_published);
162
            mtd_HT_published.setTypeSpecimen(mediaSpecimen_published);
163
            mtd_HT_published.setTypeStatus(SpecimenTypeDesignationStatus.HOLOTYPE());
164

    
165
            mtd_IT_unpublished = SpecimenTypeDesignation.NewInstance();
166
            mtd_IT_unpublished.setId(6);
167
            MediaSpecimen mediaSpecimen_unpublished = (MediaSpecimen)DerivedUnit.NewInstance(SpecimenOrObservationType.Media);
168
            eu.etaxonomy.cdm.model.occurrence.Collection collection = eu.etaxonomy.cdm.model.occurrence.Collection.NewInstance();
169
            collection.setCode("B");
170
            mediaSpecimen_unpublished.setCollection(collection);
171
            mediaSpecimen_unpublished.setAccessionNumber("Slide A565656");
172
            createDerivationEvent(fu_1, mediaSpecimen_unpublished);
173
            mtd_IT_unpublished.setTypeSpecimen(mediaSpecimen_unpublished);
174
            mtd_IT_unpublished.setTypeStatus(SpecimenTypeDesignationStatus.ISOTYPE());
175
        }
176

    
177
        protected void createDerivationEvent(FieldUnit fu_1, DerivedUnit specimen_IT_2) {
178
            DerivationEvent derivationEvent_3 = DerivationEvent.NewInstance(DerivationEventType.ACCESSIONING());
179
            derivationEvent_3.addOriginal(fu_1);
180
            derivationEvent_3.addDerivative(specimen_IT_2);
181
        }
182

    
183
        @Test
184
        public void test1() throws RegistrationValidationException{
185

    
186
            @SuppressWarnings("rawtypes")
187
            List<TypeDesignationBase> tds = new ArrayList<>();
188
            tds.add(ntd);
189
            tds.add(std_IT);
190
            tds.add(std_HT);
191
            tds.add(std_IT_2);
192
            tds.add(std_IT_3);
193

    
194
            TaxonName typifiedName = TaxonNameFactory.NewBacterialInstance(Rank.GENUS());
195
            typifiedName.setTitleCache("Prionus L.", true);
196

    
197
            typifiedName.addTypeDesignation(ntd, false);
198
            typifiedName.addTypeDesignation(std_HT, false);
199
            typifiedName.addTypeDesignation(std_IT, false);
200
            typifiedName.addTypeDesignation(std_IT_2, false);
201
            typifiedName.addTypeDesignation(std_IT_3, false);
202

    
203
            TypeDesignationSetManager typeDesignationManager = new TypeDesignationSetManager(tds);
204
            String result = typeDesignationManager.print(WITH_CITATION, WITH_TYPE_LABEL, WITH_NAME);
205

    
206
//            Logger.getLogger(this.getClass()).debug(result);
207
            assertNotNull(result);
208
            assertEquals(
209
                    "Prionus L.\u202F\u2013\u202FTypes: Dreamland, near Kissingen, A.Kohlbecker 66211, 2017 (isotype: M);"
210
                    + " Testland, near Bughausen, A.Kohlbecker 81989, 2017 (holotype: OHA; isotypes: BER, KEW);"
211
                    + " nametype: Prionus coriatius L."
212
                    , result
213
                    );
214

    
215
            Map<VersionableEntity,TypeDesignationWorkingSet> orderedTypeDesignations =
216
                    typeDesignationManager.getOrderedTypeDesignationWorkingSets();
217
            Iterator<TypeDesignationWorkingSet> byStatusMapIterator = orderedTypeDesignations.values().iterator();
218
            Iterator<TypeDesignationStatusBase<?>> keyIt_1 = byStatusMapIterator.next().keySet().iterator();
219
            Iterator<TypeDesignationStatusBase<?>> keyIt_2 = byStatusMapIterator.next().keySet().iterator();
220
            assertEquals("isotype", keyIt_1.next().getLabel());
221
            assertEquals("holotype", keyIt_2.next().getLabel());
222
            assertEquals("isotype", keyIt_2.next().getLabel());
223
        }
224

    
225
        @Test
226
        public void test2() {
227

    
228
            TaxonName typifiedName = TaxonNameFactory.NewBacterialInstance(Rank.GENUS());
229
            typifiedName.setTitleCache("Prionus L.", true);
230

    
231
            TypeDesignationSetManager typeDesignationManager = new TypeDesignationSetManager(typifiedName);
232
            String result = typeDesignationManager.print(WITH_CITATION, WITH_TYPE_LABEL, WITH_NAME);
233
            assertEquals(
234
                    "Prionus L."
235
                    , result
236
                    );
237

    
238
            typifiedName.addTypeDesignation(ntd, false);
239
            typeDesignationManager.addTypeDesigations(ntd);
240

    
241
            assertEquals(
242
                    "Prionus L.\u202F\u2013\u202FNametype: Prionus coriatius L."
243
                    , typeDesignationManager.print(WITH_CITATION, WITH_TYPE_LABEL, WITH_NAME)
244
                    );
245

    
246
            typifiedName.addTypeDesignation(std_HT, false);
247
            typeDesignationManager.addTypeDesigations(std_HT);
248

    
249
            assertEquals(
250
                    "Prionus L.\u202F\u2013\u202FTypes: Testland, near Bughausen, A.Kohlbecker 81989, 2017 (holotype: OHA); nametype: Prionus coriatius L."
251
                    , typeDesignationManager.print(WITH_CITATION, WITH_TYPE_LABEL, WITH_NAME)
252
                    );
253

    
254
            DerivedUnit specimen = std_HT.getTypeSpecimen();
255
            specimen.setProtectedTitleCache(false);
256
            Collection collection = Collection.NewInstance();
257
            collection.setName("My collection");
258
            specimen.setCollection(collection);
259

    
260
            assertEquals(
261
                    "Prionus L.\u202F\u2013\u202FTypes: Testland, near Bughausen, A.Kohlbecker 81989, 2017 (holotype: My collection); nametype: Prionus coriatius L."
262
                    , typeDesignationManager.print(WITH_CITATION, WITH_TYPE_LABEL, WITH_NAME)
263
                    );
264
        }
265

    
266
        //see #9262
267
        @Test
268
        public void test_desigby_fide(){
269
            //specimen types
270
            TaxonName typifiedName = TaxonNameFactory.NewBacterialInstance(Rank.SPECIES());
271
            typifiedName.setTitleCache("Prionus coriatius L.", true);
272
            TypeDesignationSetManager typeDesignationManager = new TypeDesignationSetManager(typifiedName);
273
            typeDesignationManager.addTypeDesigations(std_LT);
274
            Reference citation = ReferenceFactory.newBook();
275
            Reference inRef = ReferenceFactory.newBookSection();
276
            inRef.setInBook(citation);
277
            citation.setDatePublished(TimePeriodParser.parseStringVerbatim("1989"));
278
            inRef.setAuthorship(Team.NewTitledInstance("Miller", "Mill."));
279
            std_LT.addPrimaryTaxonomicSource(inRef, "55");
280
            assertEquals("Prionus coriatius L.\u202F\u2013\u202FTestland, near Bughausen, A.Kohlbecker 81989, 2017 (lectotype: LEC designated by Decandolle & al. 1962 [fide Miller 1989: 55])",
281
                    typeDesignationManager.print(WITH_CITATION, !WITH_TYPE_LABEL, WITH_NAME));
282
            assertEquals("Prionus coriatius L.\u202F\u2013\u202FTestland, near Bughausen, A.Kohlbecker 81989, 2017 (lectotype: LEC)",
283
                    typeDesignationManager.print(!WITH_CITATION,!WITH_TYPE_LABEL, WITH_NAME));
284
            assertEquals("Testland, near Bughausen, A.Kohlbecker 81989, 2017 (lectotype: LEC)",
285
                    typeDesignationManager.print(!WITH_CITATION, !WITH_TYPE_LABEL, !WITH_NAME));
286

    
287
            //name types
288
            typifiedName = TaxonNameFactory.NewBacterialInstance(Rank.GENUS());
289
            typifiedName.setTitleCache("Prionus L.", true);
290
            typeDesignationManager = new TypeDesignationSetManager(typifiedName);
291
            typeDesignationManager.addTypeDesigations(ntd_LT);
292
            ntd_LT.addPrimaryTaxonomicSource(inRef, "66");
293
            assertEquals("Prionus L.\u202F\u2013\u202FLectotype: Prionus arealus L. designated by Decandolle & al. 1962 [fide Miller 1989: 66]",
294
                    typeDesignationManager.print(WITH_CITATION, !WITH_TYPE_LABEL, WITH_NAME));
295
            assertEquals("Prionus L.\u202F\u2013\u202FLectotype: Prionus arealus L.",
296
                    typeDesignationManager.print(!WITH_CITATION, !WITH_TYPE_LABEL, WITH_NAME));
297
        }
298

    
299
        @Test
300
        public void test_mediaType(){
301

    
302
            for(int i = 0; i < 10; i++ ){
303
                init();
304
                // repeat 10 times to assure the order of typedesignations is fix in the representations
305
                TaxonName typifiedName = TaxonNameFactory.NewBacterialInstance(Rank.SPECIES());
306
                typifiedName.setTitleCache("Prionus coriatius L.", true);
307
                typifiedName.addTypeDesignation(mtd_HT_published, false);
308
                typifiedName.addTypeDesignation(mtd_IT_unpublished, false);
309

    
310
                TypeDesignationSetManager typeDesignationManager = new TypeDesignationSetManager(typifiedName);
311
                typeDesignationManager.addTypeDesigations(mtd_HT_published);
312
                typeDesignationManager.addTypeDesigations(mtd_IT_unpublished);
313

    
314
                assertEquals("failed after repeating " + i + " times",
315
                        "Prionus coriatius L.\u202F\u2013\u202FTypes: Testland, near Bughausen, A.Kohlbecker 81989, 2017 (holotype: [icon] in Kohlbecker & Kusber 2008: 33; isotype: [icon] B Slide A565656)"
316
                        , typeDesignationManager.print(WITH_CITATION, WITH_TYPE_LABEL, WITH_NAME)
317
                        );
318

    
319
                Media media = ((MediaSpecimen)mtd_HT_published.getTypeSpecimen()).getMediaSpecimen();
320
                Reference ref2 = ReferenceFactory.newBook();
321
                ref2.setDatePublished(VerbatimTimePeriod.NewVerbatimInstance(2009));
322
                ref2.setAuthorship(Person.NewInstance(null, "Mueller", "A.", null));
323
                IdentifiableSource newSource = IdentifiableSource.NewPrimaryMediaSourceInstance(ref2, "tab. 4");
324
                media.addSource(newSource);
325
                String with2Sources = typeDesignationManager.print(WITH_CITATION, WITH_TYPE_LABEL, WITH_NAME);
326
                Assert.assertTrue("failed after repeating " + i + " times",
327
                        //the order of the sources is currently not yet defined (rare case), therefore 2 possibilities
328
                        with2Sources.equals("Prionus coriatius L.\u202F\u2013\u202FTypes: Testland, near Bughausen, A.Kohlbecker 81989, 2017 (holotype: [icon] in Mueller 2009: tab. 4, Kohlbecker & Kusber 2008: 33; isotype: [icon] B Slide A565656)")
329
                        || with2Sources.equals("Prionus coriatius L.\u202F\u2013\u202FTypes: Testland, near Bughausen, A.Kohlbecker 81989, 2017 (holotype: [icon] in Kohlbecker & Kusber 2008: 33, Mueller 2009: tab. 4; isotype: [icon] B Slide A565656)"))
330
                        ;
331
            }
332
        }
333

    
334
        @Test
335
        public void test_withoutFieldUnit(){
336
            TaxonName typifiedName = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());
337
            typifiedName.setTitleCache("Prionus coriatius L.", true);
338
            DerivedUnit protectedSpecimen = DerivedUnit.NewPreservedSpecimenInstance();
339
            protectedSpecimen.setTitleCache("Mexico. Oaxaca: Coixtlahuaca, Tepelmeme Villa de Morelos, aproximadamente 1 km S del Río Santa Lucía, 1285 m, 27 March 1994, U. Guzmán Cruz 1065 (MEXU 280206)", true);
340
            Reference citation = ReferenceFactory.newBook();
341
            citation.setTitle("The book of types");
342
            SpecimenTypeDesignation protectedDesignation = typifiedName.addSpecimenTypeDesignation(protectedSpecimen, SpecimenTypeDesignationStatus.NEOTYPE(), citation, "55", null, false, false);
343

    
344
            TypeDesignationSetManager typeDesignationManager = new TypeDesignationSetManager(typifiedName);
345
            typeDesignationManager.addTypeDesigations(protectedDesignation);
346

    
347
            assertEquals("Prionus coriatius L.\u202F\u2013\u202FNeotype: Mexico. Oaxaca: Coixtlahuaca, Tepelmeme Villa de Morelos, aproximadamente 1 km S del Río Santa Lucía, 1285 m, 27 March 1994, U. Guzmán Cruz 1065 (MEXU 280206) designated by The book of types: 55"
348
                    , typeDesignationManager.print(WITH_CITATION, !WITH_TYPE_LABEL, WITH_NAME)
349
                    );
350
            protectedDesignation.setTypeStatus(null);
351
            typeDesignationManager.addTypeDesigations(protectedDesignation);
352
            assertEquals("Prionus coriatius L.\u202F\u2013\u202FMexico. Oaxaca: Coixtlahuaca, Tepelmeme Villa de Morelos, aproximadamente 1 km S del Río Santa Lucía, 1285 m, 27 March 1994, U. Guzmán Cruz 1065 (MEXU 280206) designated by The book of types: 55"
353
                    , typeDesignationManager.print(WITH_CITATION, !WITH_TYPE_LABEL, WITH_NAME)
354
                    );
355

    
356
            DerivedUnit withoutFieldUnit = DerivedUnit.NewPreservedSpecimenInstance();
357
            withoutFieldUnit.setAccessionNumber("280207");
358
            withoutFieldUnit.setCollection(Collection.NewInstance("B", "Herbarium Berolinense"));
359
            SpecimenTypeDesignation withoutFieldUnitDesignation = typifiedName.addSpecimenTypeDesignation(withoutFieldUnit, SpecimenTypeDesignationStatus.HOLOTYPE(), null, null, null, false, false);
360
            typeDesignationManager.addTypeDesigations(withoutFieldUnitDesignation);
361
            assertEquals("Prionus coriatius L.\u202F\u2013\u202FMexico. Oaxaca: Coixtlahuaca, Tepelmeme Villa de Morelos, aproximadamente 1 km S del Río Santa Lucía, 1285 m, 27 March 1994, U. Guzmán Cruz 1065 (MEXU 280206) designated by The book of types: 55; holotype: B 280207"
362
                    , typeDesignationManager.print(WITH_CITATION, !WITH_TYPE_LABEL, WITH_NAME)
363
                    );
364
        }
365

    
366
        @Test
367
        public void test_withoutStatus(){
368
            //for another important test without status see also test_withoutFieldUnit()
369

    
370
            TaxonName typifiedName = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());
371
            typifiedName.setTitleCache("Prionus coriatius L.", true);
372
            TypeDesignationSetManager typeDesignationManager = new TypeDesignationSetManager(typifiedName);
373
            std_LT.setTypeStatus(null);
374
            typeDesignationManager.addTypeDesigations(std_LT);
375
            assertEquals("Prionus coriatius L.\u202F\u2013\u202FType: Testland, near Bughausen, A.Kohlbecker 81989, 2017 (LEC designated by Decandolle & al. 1962)",
376
                    typeDesignationManager.print(WITH_CITATION, WITH_TYPE_LABEL, WITH_NAME));
377
            assertEquals("Prionus coriatius L.\u202F\u2013\u202FTestland, near Bughausen, A.Kohlbecker 81989, 2017 (LEC)",
378
                    typeDesignationManager.print(!WITH_CITATION, !WITH_TYPE_LABEL, WITH_NAME));
379
            assertEquals("Testland, near Bughausen, A.Kohlbecker 81989, 2017 (LEC)",
380
                    typeDesignationManager.print(!WITH_CITATION, !WITH_TYPE_LABEL, !WITH_NAME));
381

    
382
            //name types
383
            typifiedName = TaxonNameFactory.NewBacterialInstance(Rank.GENUS());
384
            typifiedName.setTitleCache("Prionus L.", true);
385
            typeDesignationManager = new TypeDesignationSetManager(typifiedName);
386
            typeDesignationManager.addTypeDesigations(ntd_LT);
387
//            ntd_LT.addPrimaryTaxonomicSource(inRef, "66");
388
            assertEquals("Prionus L.\u202F\u2013\u202FLectotype: Prionus arealus L. designated by Decandolle & al. 1962",
389
                    typeDesignationManager.print(WITH_CITATION, !WITH_TYPE_LABEL, WITH_NAME));
390
            assertEquals("Prionus L.\u202F\u2013\u202FLectotype: Prionus arealus L.",
391
                    typeDesignationManager.print(!WITH_CITATION, !WITH_TYPE_LABEL, WITH_NAME));
392
        }
393
}
(2-2/2)