Project

General

Profile

Download (11.7 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2007 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.strategy.cache.agent;
10

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

    
13
import org.apache.commons.lang3.StringUtils;
14
import org.apache.log4j.Logger;
15
import org.junit.Assert;
16
import org.junit.Before;
17
import org.junit.Test;
18

    
19
import eu.etaxonomy.cdm.model.agent.Person;
20

    
21
/**
22
 * @author a.mueller
23
 * @since 29.09.2009
24
 */
25
public class PersonDefaultCacheStrategyTest {
26

    
27
    @SuppressWarnings("unused")
28
	private static final Logger logger = Logger.getLogger(PersonDefaultCacheStrategyTest.class);
29

    
30
	private static Person person1;
31
	private static Person person2;
32
	private static Person person3;
33

    
34
	@Before
35
	public void setUp() throws Exception {
36
		person1 = Person.NewInstance();
37

    
38
		person1.setGivenName("P1FN");
39
		person1.setFamilyName("P1LN");
40
		person1.setPrefix("Dr1.");
41
		person1.setSuffix("Suff1");
42

    
43
		person2 = Person.NewInstance();
44
		person2.setNomenclaturalTitle("P2NomT");
45
		person2.setFamilyName("P2LN");
46
		person2.setGivenName("P2FN");
47
		person2.setSuffix("P2Suff");
48

    
49
		person3 = Person.NewInstance(); //empty person
50
	}
51

    
52
//**************************************** TESTS **************************************
53

    
54
	@Test
55
	public final void testNewInstance() {
56
		PersonDefaultCacheStrategy cacheStrategy = PersonDefaultCacheStrategy.NewInstance();
57
		assertNotNull(cacheStrategy);
58
	}
59

    
60
	@Test
61
	public final void testGetNomenclaturalTitleCache(){
62
		Assert.assertNotNull("person1 nomenclatural title must not to be null", person1.getNomenclaturalTitle());
63
		Assert.assertEquals("Person1 nomenclatural title should be taken from titleCache", "P1LN, P.", person1.getNomenclaturalTitle());
64
		person1.setSuffix(null);
65
		Assert.assertEquals("Person1 title should be taken from titleCache", "P1LN, P.", person1.getNomenclaturalTitle());
66
		//peson2
67
		Assert.assertEquals("Person2 title should be P2NomT", "P2NomT", person2.getNomenclaturalTitle());
68
		//person3
69
		Assert.assertNotNull("person3 nomenclatural title must not to be null", person3.getNomenclaturalTitle());
70
		Assert.assertTrue("Person3 nomenclatural title must not be empty", StringUtils.isNotBlank(person3.getNomenclaturalTitle()));
71
		//don't take to serious, may be also something different, but not empty
72
		Assert.assertEquals("Person3 title should start with Person#0", "Person#0", person3.getNomenclaturalTitle().substring(0, 8));
73
	}
74

    
75
	@Test
76
	public final void testGetTitleCacheAdaptedFromOldVersion(){
77
	    Assert.assertNotNull("person1 title cache must not to be null", person1.getTitleCache());
78
		Assert.assertEquals("Person1 title cache should be created by familyname and computed initials", "P1LN, P.", person1.getTitleCache());
79
		person1.setSuffix(null);
80
		Assert.assertEquals("Person1 title cache should be Dr1. P1FN P1LN", "P1LN, P.", person1.getTitleCache());
81
		//peson2
82
		Assert.assertEquals("Person2 title cache should be P2NomT", "P2LN, P.", person2.getTitleCache());
83
		//person3
84
		Assert.assertNotNull("person3 title cache must not to be null", person3.getTitleCache());
85
		Assert.assertTrue("Person3 title cache must not be empty", StringUtils.isNotBlank(person3.getTitleCache()));
86
		//don't take to serious, may be also something different, but not empty
87
		Assert.assertEquals("Person3 title cache should start with Person#0", "Person#0", person3.getTitleCache().substring(0, 8));
88
		person3.setGivenName("Klaus");
89
		Assert.assertEquals("Person3 title cache should be Klaus", "K.", person3.getTitleCache());
90
	}
91

    
92
	@Test
93
    public final void testGetTitleCache(){
94
        Person pers = Person.NewInstance();
95
        pers.setFamilyName("Last");
96
        pers.setInitials("E.M.");
97

    
98
        String expected = "Last, E.M.";
99
	    Assert.assertNotNull("pers title cache must not to be null", pers.getTitleCache());
100
        Assert.assertEquals("pers title cache should be created by familyname and initials",
101
                expected, pers.getTitleCache());
102

    
103
        pers.setSuffix("xyz");
104
        Assert.assertEquals("Suffix should not influence title cache",
105
                expected, pers.getTitleCache());
106
        pers.setPrefix("abc");
107
        Assert.assertEquals("Prefix should not influence title cache",
108
                expected, pers.getTitleCache());
109

    
110
        pers.setGivenName("First");
111
        Assert.assertEquals("Given name should not influence title cache if initials are set",
112
                expected, pers.getTitleCache());
113

    
114
        pers.setInitials(null);
115
        expected = "Last, F.";
116
        Assert.assertEquals("Initials should be computed from givenname if not set manually",
117
                expected, pers.getTitleCache());
118
    }
119

    
120
    @Test
121
    public final void testGetFullTitle(){
122
        Assert.assertNotNull("person1 full titlemust not to be null", person1.getFullTitle());
123
        Assert.assertEquals("Person1 full title should be created by elements",
124
                "Dr1. P1FN P1LN Suff1", person1.getFullTitle());
125
        person1.setSuffix(null);
126
        Assert.assertEquals("Person1 full title should be Dr1. P1FN P1LN",
127
                "Dr1. P1FN P1LN", person1.getFullTitle());
128
        //peson2
129
        Assert.assertEquals("Person2 full title should be P2NomT",
130
                "P2FN P2LN P2Suff", person2.getFullTitle());
131
        //person3
132
        Assert.assertNotNull("person3 full title must not to be null",
133
                person3.getFullTitle());
134
        Assert.assertTrue("Person3 full title must not be empty",
135
                StringUtils.isNotBlank(person3.getFullTitle()));
136
        //don't take to serious, may be also something different, but not empty
137
        Assert.assertEquals("Person3 full title should start with Person#0",
138
                "Person#0", person3.getFullTitle().substring(0, 8));
139
        person3.setGivenName("Klaus");
140
        Assert.assertEquals("Person3 full title should be Klaus",
141
                "Klaus", person3.getFullTitle());
142
    }
143

    
144
	@Test
145
    public final void testInitialsFromGivenName(){
146
	    PersonDefaultCacheStrategy formatter = PersonDefaultCacheStrategy.NewInstance();
147
	    boolean force = true;
148

    
149
	    String givenname = null;
150
        Assert.assertNull(formatter.getInitialsFromGivenName(givenname, force));
151

    
152
        givenname = "";
153
        Assert.assertEquals("", formatter.getInitialsFromGivenName(givenname, force));
154

    
155
        givenname = "  ";
156
        Assert.assertEquals("We expect blanks to be trimmed", "", formatter.getInitialsFromGivenName(givenname, force));
157

    
158
	    givenname = "John Michael ";
159
	    Assert.assertEquals("J.M.", formatter.getInitialsFromGivenName(givenname, force));
160

    
161
	    givenname = "Walter G.";
162
        Assert.assertEquals("W.G.", formatter.getInitialsFromGivenName(givenname, force));
163

    
164
        givenname = "A.L.";
165
        Assert.assertEquals("A.L.", formatter.getInitialsFromGivenName(givenname, force));
166

    
167
        givenname = "A.Ludw. W.";
168
        Assert.assertEquals("A.L.W.", formatter.getInitialsFromGivenName(givenname, force));
169

    
170
        givenname = "A. Ludw.  Norbert W.";
171
        Assert.assertEquals("A.L.N.W.", formatter.getInitialsFromGivenName(givenname, force));
172

    
173
        force = false;
174
        givenname = "A. Ludw.  Norbert W.";
175
        Assert.assertEquals("A.Ludw.N.W.", formatter.getInitialsFromGivenName(givenname, force));
176

    
177
        givenname = "W.-H.";
178
        Assert.assertEquals("W.-H.", formatter.getInitialsFromGivenName(givenname, force));
179
        givenname = "W.-Henning";
180
        Assert.assertEquals("W.-H.", formatter.getInitialsFromGivenName(givenname, force));
181
        givenname = "W.-Henn.";
182
        Assert.assertEquals("W.-Henn.", formatter.getInitialsFromGivenName(givenname, force));
183
        givenname = "Wolf-Henning";
184
        Assert.assertEquals("W.-H.", formatter.getInitialsFromGivenName(givenname, force));
185
        givenname = "Wolf\u2013 Henning";
186
        Assert.assertEquals("W.\u2013H.", formatter.getInitialsFromGivenName(givenname, force));
187

    
188

    
189
        givenname = "W";
190
        Assert.assertEquals("W.", formatter.getInitialsFromGivenName(givenname, force));
191

    
192
        givenname = "W K";
193
        Assert.assertEquals("W.K.", formatter.getInitialsFromGivenName(givenname, force));
194

    
195
        givenname = "WK";
196
        Assert.assertEquals("W.K.", formatter.getInitialsFromGivenName(givenname, force));
197

    
198
        givenname = "WKH";
199
        Assert.assertEquals("W.K.H.", formatter.getInitialsFromGivenName(givenname, force));
200

    
201

    
202
        //force
203
        force = true;
204
        givenname = "W.-H.";
205
        Assert.assertEquals("W.-H.", formatter.getInitialsFromGivenName(givenname, force));
206
        givenname = "W.-Henning";
207
        Assert.assertEquals("W.-H.", formatter.getInitialsFromGivenName(givenname, force));
208
        givenname = "W.-Henn.";
209
        Assert.assertEquals("W.-H.", formatter.getInitialsFromGivenName(givenname, force));
210
        givenname = "Wolf-Henning";
211
        Assert.assertEquals("W.-H.", formatter.getInitialsFromGivenName(givenname, force));
212

    
213
        givenname = "W";
214
        Assert.assertEquals("W.", formatter.getInitialsFromGivenName(givenname, force));
215

    
216
        givenname = "W K";
217
        Assert.assertEquals("W.K.", formatter.getInitialsFromGivenName(givenname, force));
218

    
219
        givenname = "WK";
220
        Assert.assertEquals("W.K.", formatter.getInitialsFromGivenName(givenname, force));
221

    
222
        givenname = "WKH";
223
        Assert.assertEquals("W.K.H.", formatter.getInitialsFromGivenName(givenname, force));
224

    
225
        force = false;
226
        givenname = "Pe. Y.";
227
        Assert.assertEquals("Pe.Y.", formatter.getInitialsFromGivenName(givenname, force));
228

    
229
        //brackets
230
        force = true;
231
        givenname = "Constantin (Konstantin) Georg Alexander";
232
        Assert.assertEquals("C.G.A.", formatter.getInitialsFromGivenName(givenname, force));
233
        givenname = "Franz (Joseph Andreas Nicolaus)";
234
        Assert.assertEquals("F.", formatter.getInitialsFromGivenName(givenname, force));
235
        givenname = "Viktor V. (W.W.)";
236
        Assert.assertEquals("V.V.", formatter.getInitialsFromGivenName(givenname, force));
237
        givenname = "(Georg Ferdinand) Otto";
238
        Assert.assertEquals("O.", formatter.getInitialsFromGivenName(givenname, force));
239
        givenname = "(Sébastien-) René";
240
        Assert.assertEquals("R.", formatter.getInitialsFromGivenName(givenname, force));
241
        givenname = "Joyce (M.) Chismore Lewin";
242
        Assert.assertEquals("J.C.L.", formatter.getInitialsFromGivenName(givenname, force));
243
        givenname = "Joyce (M.) Chismore Lewin";
244
        Assert.assertEquals("J.C.L.", formatter.getInitialsFromGivenName(givenname, force));
245

    
246
//      "Robert. K." wurde auf "Robert. K." gemapped
247

    
248
        //must not throw exception (exact result may change in future)
249
        givenname = "W.-H.-";
250
        Assert.assertEquals("W.-H.-", formatter.getInitialsFromGivenName(givenname, force));
251
        givenname = "W.-Hennin-";
252
        Assert.assertEquals("W.-H.-", formatter.getInitialsFromGivenName(givenname, force));
253

    
254
        force = false;
255
        givenname = "W.-H.-";
256
        Assert.assertEquals("W.-H.-", formatter.getInitialsFromGivenName(givenname, force));
257
        givenname = "W.-Hennin-";
258
        Assert.assertEquals("W.-H.-", formatter.getInitialsFromGivenName(givenname, force));
259

    
260
        givenname = "(Brother)"; //example from Salvador DB
261
        Assert.assertNull("Non-parsable string should not be empty but null", formatter.getInitialsFromGivenName(givenname, force));
262

    
263
        givenname = " ";
264
        Assert.assertNull("Empty string should not result in empty string but null", formatter.getInitialsFromGivenName(givenname, force));
265

    
266
	}
267
}
(1-1/2)