Project

General

Profile

Download (13.8 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.format.taxon;
10

    
11
import java.util.List;
12

    
13
import org.junit.Assert;
14
import org.junit.Before;
15
import org.junit.Test;
16

    
17
import eu.etaxonomy.cdm.model.agent.Person;
18
import eu.etaxonomy.cdm.model.agent.Team;
19
import eu.etaxonomy.cdm.model.common.Language;
20
import eu.etaxonomy.cdm.model.common.VerbatimTimePeriod;
21
import eu.etaxonomy.cdm.model.name.Rank;
22
import eu.etaxonomy.cdm.model.name.TaxonName;
23
import eu.etaxonomy.cdm.model.name.TaxonNameFactory;
24
import eu.etaxonomy.cdm.model.reference.Reference;
25
import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
26
import eu.etaxonomy.cdm.model.taxon.Taxon;
27
import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
28
import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
29
import eu.etaxonomy.cdm.strategy.cache.TaggedCacheHelper;
30
import eu.etaxonomy.cdm.strategy.cache.TaggedText;
31
import eu.etaxonomy.cdm.test.TermTestBase;
32

    
33
/**
34
 * Test to test the {@link TaxonRelationshipFormatter}.
35
 *
36
 * @author a.mueller
37
 * @since 14.08.2018
38
 */
39
public class TaxonRelationshipFormatterTest extends TermTestBase{
40

    
41
    private static boolean WITHOUT_NAME = true;
42

    
43
    private TaxonRelationship taxonRel;
44
    private Reference relSec;
45

    
46
    private Taxon fromTaxon;
47
    private TaxonName fromName;
48
    private Reference fromSec;
49

    
50
    private Taxon toTaxon;
51
    private TaxonName toName;
52
    private Reference toSec;
53

    
54
    private TaxonRelationshipFormatter formatter;
55
    private boolean reverse;
56

    
57
    private Person toNameAuthor;
58
    private Person macFarlane;
59
    private Person cheek;
60
    private Person toSecAuthor;
61
    private List<Language> languages;
62

    
63
    @Before
64
    public void setUp() throws Exception {
65
        fromName = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());
66
        fromName.setGenusOrUninomial("Abies");
67
        fromName.setSpecificEpithet("alba");
68

    
69
        toName = TaxonNameFactory.NewBotanicalInstance(Rank.SPECIES());
70
        toName.setGenusOrUninomial("Pinus");
71
        toName.setSpecificEpithet("pinova");
72
        toNameAuthor = Person.NewInstance("Mill.", "Miller", "A.", "Andrew");
73
        toName.setCombinationAuthorship(toNameAuthor);
74

    
75
        fromSec = ReferenceFactory.newGeneric();
76
        fromSec.setTitle("From Sec");
77
        String initials = "J.M.";
78
        macFarlane = Person.NewInstance(null, "Macfarlane", initials, null);
79
        fromSec.setAuthorship(macFarlane);
80
        fromSec.setDatePublished(VerbatimTimePeriod.NewVerbatimInstance(1918));
81

    
82
        relSec = ReferenceFactory.newGeneric();
83
        relSec.setTitle("From rel reference");
84
        initials = null; //"M.R.";
85
        cheek = Person.NewInstance(null, "Cheek", initials, null);
86
        relSec.setAuthorship(cheek);
87
        relSec.setDatePublished(VerbatimTimePeriod.NewVerbatimInstance(1919));
88

    
89
        toSec = ReferenceFactory.newGeneric();
90
        toSec.setTitle("To Sec");
91
        toSecAuthor = Person.NewTitledInstance("ToSecAuthor");
92
        toSec.setAuthorship(toSecAuthor);
93
        toSec.setDatePublished(VerbatimTimePeriod.NewVerbatimInstance(1928));
94

    
95
        fromTaxon = Taxon.NewInstance(fromName, fromSec);
96
        toTaxon = Taxon.NewInstance(toName, toSec);
97

    
98
        TaxonRelationshipType type = TaxonRelationshipType.MISAPPLIED_NAME_FOR();
99
        taxonRel = fromTaxon.addTaxonRelation(toTaxon, type, relSec, "123");
100
        reverse = false;
101

    
102
        formatter = new TaxonRelationshipFormatter();
103

    
104
        languages = null;
105
    }
106

    
107
    /**
108
     * Test method for {@link eu.etaxonomy.cdm.format.taxon.TaxonRelationshipFormatter#getTaggedText(eu.etaxonomy.cdm.model.taxon.TaxonRelationship, boolean, java.util.List)}.
109
     */
110
    @Test
111
    public void testGetTaggedTextMisappliedName() {
112

    
113
        reverse = true;
114
        String inverseSymbol = TaxonRelationshipType.MISAPPLIED_NAME_FOR().getInverseSymbol();
115
        String symbol = TaxonRelationshipType.MISAPPLIED_NAME_FOR().getSymbol();
116

    
117
        List<TaggedText> tags = formatter.getTaggedText(taxonRel, reverse, languages);
118
        String str = TaggedCacheHelper.createString(tags);
119
        Assert.assertEquals(inverseSymbol + " \"Abies alba\" sensu Macfarlane 1918, err. sec. Cheek 1919: 123", str);
120

    
121
        //reverse
122
        tags = formatter.getTaggedText(taxonRel, !reverse, languages);
123
        str = TaggedCacheHelper.createString(tags);
124
        Assert.assertEquals(symbol + " Pinus pinova Mill. sec. ToSecAuthor 1928, rel. sec. Cheek 1919: 123", str);
125

    
126
        //auctores
127
        fromTaxon.setAppendedPhrase("auctores");
128
        tags = formatter.getTaggedText(taxonRel, reverse, languages);
129
        str = TaggedCacheHelper.createString(tags);
130
        Assert.assertEquals(inverseSymbol + " \"Abies alba\" auctores sensu Macfarlane 1918, err. sec. Cheek 1919: 123", str);
131

    
132
        fromTaxon.setSec(null);
133
        tags = formatter.getTaggedText(taxonRel, reverse, languages);
134
        str = TaggedCacheHelper.createString(tags);
135
        Assert.assertEquals(inverseSymbol + " \"Abies alba\" auctores, err. sec. Cheek 1919: 123", str);
136

    
137
        fromTaxon.setAppendedPhrase("");
138
        tags = formatter.getTaggedText(taxonRel, reverse, languages);
139
        str = TaggedCacheHelper.createString(tags);
140
        Assert.assertEquals(inverseSymbol + " \"Abies alba\" auct., err. sec. Cheek 1919: 123", str);
141

    
142
        fromTaxon.setDoubtful(true);
143
        tags = formatter.getTaggedText(taxonRel, reverse, languages);
144
        str = TaggedCacheHelper.createString(tags);
145
        System.out.println(str);
146
        Assert.assertEquals(inverseSymbol + " ?\u202F\"Abies alba\" auct., err. sec. Cheek 1919: 123", str);
147

    
148
    }
149

    
150
    @Test
151
    public void testGetTaggedTextConceptRelations() {
152

    
153
        reverse = false;
154

    
155
        TaxonRelationshipType relType = TaxonRelationshipType.INCLUDES();
156

    
157
        final String SYMBOL = relType.getSymbol();
158

    
159
        taxonRel.setType(relType);
160
        List<TaggedText> tags = formatter.getTaggedText(taxonRel, reverse, languages);
161
        String str = TaggedCacheHelper.createString(tags);
162
        Assert.assertEquals(SYMBOL + " Pinus pinova Mill. sec. ToSecAuthor 1928, rel. sec. Cheek 1919: 123", str);
163

    
164
        tags = formatter.getTaggedText(taxonRel, !reverse, languages);
165
        str = TaggedCacheHelper.createString(tags);
166
        Assert.assertEquals(relType.getInverseSymbol() + " Abies alba sec. Macfarlane 1918, rel. sec. Cheek 1919: 123", str);
167

    
168
        toTaxon.setAppendedPhrase("sensu stricto");
169
        tags = formatter.getTaggedText(taxonRel, reverse, languages);
170
        str = TaggedCacheHelper.createString(tags);
171
        Assert.assertEquals(SYMBOL + " Pinus pinova Mill. sensu stricto sec. ToSecAuthor 1928, rel. sec. Cheek 1919: 123", str);
172

    
173

    
174
        toTaxon.setSec(null);
175
        tags = formatter.getTaggedText(taxonRel, reverse, languages);
176
        str = TaggedCacheHelper.createString(tags);
177
        Assert.assertEquals(SYMBOL + " Pinus pinova Mill. sensu stricto, rel. sec. Cheek 1919: 123", str);
178

    
179
        toTaxon.setAppendedPhrase("");
180
        tags = formatter.getTaggedText(taxonRel, reverse, languages);
181
        str = TaggedCacheHelper.createString(tags);
182
        Assert.assertEquals(SYMBOL + " Pinus pinova Mill. sec. ???, rel. sec. Cheek 1919: 123", str);
183

    
184
        taxonRel.setDoubtful(true);
185
        toTaxon.setAppendedPhrase("");
186
        tags = formatter.getTaggedText(taxonRel, reverse, languages);
187
        str = TaggedCacheHelper.createString(tags);
188
        Assert.assertEquals("?" + SYMBOL + " Pinus pinova Mill. sec. ???, rel. sec. Cheek 1919: 123", str);
189

    
190
    }
191

    
192
    @Test
193
    public void testGetTaggedTextSynonymRelations() {
194

    
195
        reverse = false;
196

    
197
        TaxonRelationshipType type = TaxonRelationshipType.PRO_PARTE_SYNONYM_FOR();
198
        final String symbol = type.getSymbol();
199

    
200

    
201
        taxonRel.setType(type);
202
        List<TaggedText> tags = formatter.getTaggedText(taxonRel, reverse, languages);
203
        String str = TaggedCacheHelper.createString(tags);
204
        Assert.assertEquals(symbol + " Pinus pinova Mill. sec. ToSecAuthor 1928, syn. sec. Cheek 1919: 123", str);
205

    
206
        tags = formatter.getTaggedText(taxonRel, !reverse, languages);
207
        str = TaggedCacheHelper.createString(tags);
208
        Assert.assertEquals(type.getInverseSymbol() + " Abies alba sec. Macfarlane 1918, syn. sec. Cheek 1919: 123", str);
209

    
210
        toTaxon.setAppendedPhrase("sensu lato");
211
        tags = formatter.getTaggedText(taxonRel, reverse, languages);
212
        str = TaggedCacheHelper.createString(tags);
213
        Assert.assertEquals(symbol + " Pinus pinova Mill. sensu lato sec. ToSecAuthor 1928, syn. sec. Cheek 1919: 123", str);
214

    
215

    
216
        toTaxon.setSec(null);
217
        tags = formatter.getTaggedText(taxonRel, reverse, languages);
218
        str = TaggedCacheHelper.createString(tags);
219
        Assert.assertEquals(symbol + " Pinus pinova Mill. sensu lato, syn. sec. Cheek 1919: 123", str);
220

    
221
        toTaxon.setAppendedPhrase("");
222
        tags = formatter.getTaggedText(taxonRel, reverse, languages);
223
        str = TaggedCacheHelper.createString(tags);
224
        Assert.assertEquals(symbol + " Pinus pinova Mill. sec. ???, syn. sec. Cheek 1919: 123", str);
225

    
226
    }
227

    
228
    @Test
229
    public void testGetFamilyNames() {
230

    
231
        //Test start condition with single person
232
        List<TaggedText> tags = formatter.getTaggedText(taxonRel, reverse, languages);
233
        String str = TaggedCacheHelper.createString(tags);
234
        Assert.assertFalse("Formatted text should not contain the team correctly formatted", str.contains("Macfarlane & Cheek"));
235

    
236
        //use team
237
        Team secRelTeam = Team.NewInstance();
238
        secRelTeam.addTeamMember(macFarlane);
239
        secRelTeam.addTeamMember(cheek);
240
        relSec.setAuthorship(secRelTeam);
241

    
242
        tags = formatter.getTaggedText(taxonRel, reverse, languages);
243
        str = TaggedCacheHelper.createString(tags);
244
        System.out.println(str);
245
        Assert.assertTrue(str.contains("rel. sec. Macfarlane & Cheek 1919"));
246

    
247
        //add third member
248
        secRelTeam.addTeamMember(toSecAuthor);
249
        tags = formatter.getTaggedText(taxonRel, reverse, languages);
250
        str = TaggedCacheHelper.createString(tags);
251
        System.out.println(str);
252
        Assert.assertTrue(str.contains("rel. sec. Macfarlane, Cheek & ToSecAuthor 1919"));
253

    
254
        //add et al.
255
        secRelTeam.setHasMoreMembers(true);
256
        tags = formatter.getTaggedText(taxonRel, reverse, languages);
257
        str = TaggedCacheHelper.createString(tags);
258
        System.out.println(str);
259
        Assert.assertTrue(str.contains("rel. sec. Macfarlane, Cheek, ToSecAuthor & al. 1919"));
260

    
261
    }
262

    
263
    @Test
264
    public void testGetTaggedTextMisappliedNameWithoutName() {
265

    
266
        reverse = true;
267
        String inverseSymbol = TaxonRelationshipType.MISAPPLIED_NAME_FOR().getInverseSymbol();
268
        String symbol = TaxonRelationshipType.MISAPPLIED_NAME_FOR().getSymbol();
269

    
270
        List<TaggedText> tags = formatter.getTaggedText(taxonRel, reverse, languages, WITHOUT_NAME);
271
        String str = TaggedCacheHelper.createString(tags);
272
        Assert.assertEquals(inverseSymbol + " sensu Macfarlane 1918, err. sec. Cheek 1919: 123", str);
273

    
274
        //reverse
275
        tags = formatter.getTaggedText(taxonRel, !reverse, languages, WITHOUT_NAME);
276
        str = TaggedCacheHelper.createString(tags);
277
        Assert.assertEquals(symbol + " sec. ToSecAuthor 1928, rel. sec. Cheek 1919: 123", str);
278

    
279
        //auctores
280
        fromTaxon.setAppendedPhrase("auctores");
281
        tags = formatter.getTaggedText(taxonRel, reverse, languages, WITHOUT_NAME);
282
        str = TaggedCacheHelper.createString(tags);
283
        Assert.assertEquals(inverseSymbol + " auctores sensu Macfarlane 1918, err. sec. Cheek 1919: 123", str);
284

    
285
        fromTaxon.setSec(null);
286
        fromTaxon.setAppendedPhrase("");
287
        tags = formatter.getTaggedText(taxonRel, reverse, languages, WITHOUT_NAME);
288
        str = TaggedCacheHelper.createString(tags);
289
        Assert.assertEquals(inverseSymbol + " auct., err. sec. Cheek 1919: 123", str);
290

    
291
        fromTaxon.setDoubtful(true);
292
        tags = formatter.getTaggedText(taxonRel, reverse, languages, WITHOUT_NAME);
293
        str = TaggedCacheHelper.createString(tags);
294
        System.out.println(str);
295
        Assert.assertEquals(inverseSymbol + " ?\u202F auct., err. sec. Cheek 1919: 123", str);
296

    
297
    }
298

    
299
    @Test
300
    public void testGetTaggedTextConceptRelationsWithoutName() {
301

    
302
        reverse = false;
303

    
304
        TaxonRelationshipType relType = TaxonRelationshipType.INCLUDES();
305

    
306
        final String SYMBOL = relType.getSymbol();
307

    
308
        taxonRel.setType(relType);
309
        List<TaggedText> tags = formatter.getTaggedText(taxonRel, reverse, languages, WITHOUT_NAME);
310
        String str = TaggedCacheHelper.createString(tags);
311
        Assert.assertEquals(SYMBOL + " sec. ToSecAuthor 1928, rel. sec. Cheek 1919: 123", str);
312

    
313
        tags = formatter.getTaggedText(taxonRel, !reverse, languages, WITHOUT_NAME);
314
        str = TaggedCacheHelper.createString(tags);
315
        Assert.assertEquals(relType.getInverseSymbol() + " sec. Macfarlane 1918, rel. sec. Cheek 1919: 123", str);
316

    
317
        toTaxon.setAppendedPhrase("sensu stricto");
318
        tags = formatter.getTaggedText(taxonRel, reverse, languages, WITHOUT_NAME);
319
        str = TaggedCacheHelper.createString(tags);
320
        Assert.assertEquals(SYMBOL + " sensu stricto sec. ToSecAuthor 1928, rel. sec. Cheek 1919: 123", str);
321

    
322
        toTaxon.setSec(null);
323
        toTaxon.setAppendedPhrase("");
324
        tags = formatter.getTaggedText(taxonRel, reverse, languages, WITHOUT_NAME);
325
        str = TaggedCacheHelper.createString(tags);
326
        Assert.assertEquals(SYMBOL + " sec. ???, rel. sec. Cheek 1919: 123", str);
327

    
328
        taxonRel.setDoubtful(true);
329
        toTaxon.setAppendedPhrase("");
330
        tags = formatter.getTaggedText(taxonRel, reverse, languages, WITHOUT_NAME);
331
        str = TaggedCacheHelper.createString(tags);
332
        Assert.assertEquals("?" + SYMBOL + " sec. ???, rel. sec. Cheek 1919: 123", str);
333

    
334
    }
335

    
336
}
    (1-1/1)