2 * Copyright (C) 2021 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
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.
9 package eu
.etaxonomy
.cdm
.format
.reference
;
11 import org
.junit
.Assert
;
12 import org
.junit
.Before
;
13 import org
.junit
.Test
;
15 import eu
.etaxonomy
.cdm
.common
.DOI
;
16 import eu
.etaxonomy
.cdm
.common
.URI
;
17 import eu
.etaxonomy
.cdm
.model
.agent
.Person
;
18 import eu
.etaxonomy
.cdm
.model
.agent
.Team
;
19 import eu
.etaxonomy
.cdm
.model
.common
.TimePeriod
;
20 import eu
.etaxonomy
.cdm
.model
.common
.VerbatimTimePeriod
;
21 import eu
.etaxonomy
.cdm
.model
.reference
.IArticle
;
22 import eu
.etaxonomy
.cdm
.model
.reference
.IBook
;
23 import eu
.etaxonomy
.cdm
.model
.reference
.IBookSection
;
24 import eu
.etaxonomy
.cdm
.model
.reference
.ICdDvd
;
25 import eu
.etaxonomy
.cdm
.model
.reference
.IDatabase
;
26 import eu
.etaxonomy
.cdm
.model
.reference
.IJournal
;
27 import eu
.etaxonomy
.cdm
.model
.reference
.IWebPage
;
28 import eu
.etaxonomy
.cdm
.model
.reference
.Reference
;
29 import eu
.etaxonomy
.cdm
.model
.reference
.ReferenceFactory
;
30 import eu
.etaxonomy
.cdm
.strategy
.cache
.agent
.TeamDefaultCacheStrategy
;
31 import eu
.etaxonomy
.cdm
.strategy
.parser
.TimePeriodParser
;
37 public class NomenclaturalSourceFormatterTest
{
39 private static final String SEP
= TimePeriod
.SEP
;
42 private static IArticle article1
;
43 private static IJournal journal1
;
44 private static Team articleTeam1
;
45 private static Team articleTeam2
;
47 //book // book section
48 private static IBook book1
;
49 private static Team bookTeam1
;
52 private static IBookSection bookSection1
;
53 private static Team sectionTeam1
;
56 private static Reference generic1
;
57 private static Team genericTeam1
;
60 private static NomenclaturalSourceFormatter formatter
= NomenclaturalSourceFormatter
.INSTANCE();
61 private static final String detail1
= "55";
64 public void setUp() throws Exception
{
66 article1
= ReferenceFactory
.newArticle();
67 journal1
= ReferenceFactory
.newJournal();
68 articleTeam1
= Team
.NewInstance();
69 articleTeam2
= Team
.NewInstance();
70 articleTeam1
.setTitleCache("Team1", true);
71 articleTeam1
.setNomenclaturalTitle("T.");
72 articleTeam2
.setTitleCache("Team2", true);
73 articleTeam2
.setNomenclaturalTitle("TT.");
76 book1
= ReferenceFactory
.newBook();
77 bookTeam1
= Team
.NewTitledInstance("Book Author", "TT.");
78 bookSection1
= ReferenceFactory
.newBookSection();
79 sectionTeam1
= Team
.NewTitledInstance("Section Author", "T.");
82 generic1
= ReferenceFactory
.newGeneric();
83 genericTeam1
= Team
.NewTitledInstance("Authorteam", "AT.");
88 public void testArticleGetNomenclaturalCitation(){
89 journal1
.setTitle("My journal");
90 journal1
.setTitle("M. J.");
91 ((Reference
)journal1
).setAuthorship(articleTeam2
);
92 article1
.setTitle("My article");
93 article1
.setInJournal(journal1
);
94 article1
.setAuthorship(articleTeam1
);
95 article1
.setDatePublished(VerbatimTimePeriod
.NewVerbatimInstance(1975));
96 Assert
.assertEquals("in M. J.: 55. 1975", formatter
.format((Reference
)article1
, detail1
));
98 article1
.setVolume("22");
99 Assert
.assertEquals("in M. J. 22: 55. 1975", formatter
.format((Reference
)article1
, detail1
));
100 article1
.setSeriesPart("ser. 11");
101 Assert
.assertEquals("in M. J., ser. 11, 22: 55. 1975", formatter
.format((Reference
)article1
, detail1
));
103 article1
.setPages("33"); //#6496 don't show pages in nomencl. citation
104 Assert
.assertEquals("in M. J., ser. 11, 22: 55. 1975", formatter
.format((Reference
)article1
, detail1
));
108 * After ser. , sect. , abt. we want to have a comma, if there is not yet one following anyway
111 public void testArticleGetNomenclaturalCitationSerSectAbt(){
112 article1
.setInJournal(journal1
);
113 article1
.setVolume("22");
114 journal1
.setAbbrevTitle("J. Pl. Eur.");
115 ((Reference
)journal1
).setAuthorship(articleTeam2
);
116 article1
.setDatePublished(VerbatimTimePeriod
.NewVerbatimInstance(1975));
118 Assert
.assertEquals("in J. Pl. Eur. 22: 55. 1975", formatter
.format((Reference
)article1
, detail1
));
120 journal1
.setAbbrevTitle("J. Pl. Eur., ser. 3");
121 Assert
.assertEquals("in J. Pl. Eur., ser. 3, 22: 55. 1975", formatter
.format((Reference
)article1
, detail1
));
122 journal1
.setAbbrevTitle("J. Pl. Eur., Ser. 3");
123 Assert
.assertEquals("in J. Pl. Eur., Ser. 3, 22: 55. 1975", formatter
.format((Reference
)article1
, detail1
));
124 journal1
.setAbbrevTitle("J. Pl. Eur., ser. 3, s.n.");
125 Assert
.assertEquals("in J. Pl. Eur., ser. 3, s.n. 22: 55. 1975", formatter
.format((Reference
)article1
, detail1
));
127 journal1
.setAbbrevTitle("J. Pl. Eur., sect. 3");
128 Assert
.assertEquals("in J. Pl. Eur., sect. 3, 22: 55. 1975", formatter
.format((Reference
)article1
, detail1
));
129 journal1
.setAbbrevTitle("J. Pl. Eur., Sect. 3");
130 Assert
.assertEquals("in J. Pl. Eur., Sect. 3, 22: 55. 1975", formatter
.format((Reference
)article1
, detail1
));
131 journal1
.setAbbrevTitle("J. Pl. Eur., Sect. 3, something");
132 Assert
.assertEquals("in J. Pl. Eur., Sect. 3, something 22: 55. 1975", formatter
.format((Reference
)article1
, detail1
));
134 journal1
.setAbbrevTitle("J. Pl. Eur., abt. 3");
135 Assert
.assertEquals("in J. Pl. Eur., abt. 3, 22: 55. 1975", formatter
.format((Reference
)article1
, detail1
));
136 journal1
.setAbbrevTitle("J. Pl. Eur., Abt. 3");
137 Assert
.assertEquals("in J. Pl. Eur., Abt. 3, 22: 55. 1975", formatter
.format((Reference
)article1
, detail1
));
138 journal1
.setAbbrevTitle("J. Pl. Eur., abt. 3, no comma");
139 Assert
.assertEquals("in J. Pl. Eur., abt. 3, no comma 22: 55. 1975", formatter
.format((Reference
)article1
, detail1
));
141 journal1
.setAbbrevTitle("J. Pl. Eur., sect. 3");
142 article1
.setSeriesPart("1");
143 Assert
.assertEquals("in J. Pl. Eur., sect. 3, ser. 1, 22: 55. 1975", formatter
.format((Reference
)article1
, detail1
));
144 article1
.setSeriesPart("Series 2");
145 Assert
.assertEquals("in J. Pl. Eur., sect. 3, Series 2, 22: 55. 1975", formatter
.format((Reference
)article1
, detail1
));
149 public void testBookGetNomenclaturalCitation(){
150 book1
.setTitle("My book");
151 book1
.setAuthorship(bookTeam1
);
152 book1
.setDatePublished(VerbatimTimePeriod
.NewVerbatimInstance(1975));
153 Assert
.assertEquals("My book: 55. 1975", formatter
.format((Reference
)book1
, detail1
));
154 book1
.setAbbrevTitle("Analect. Bot.");
155 Assert
.assertEquals("Analect. Bot. 1975", formatter
.format((Reference
)book1
, null));
159 //https://dev.e-taxonomy.eu/redmine/issues/8881
161 public void testInRefAuthor(){
162 Person person1
= Person
.NewInstance("Inauth.", "Inauthor", "A.B.", "Ala Bala");
163 Person person2
= Person
.NewInstance("Twoauth.", "Twoauthor", "C.", "Cla");
164 Person person3
= Person
.NewTitledInstance("Threeauth.");
165 Team team
= Team
.NewInstance(person1
, person2
, person3
);
166 IBook book1
= ReferenceFactory
.newBook();
167 book1
.setAbbrevTitle("Acta Inst. Bot. Acad. Sci. URSS");
168 book1
.setVolume("Fasc. 11");
169 book1
.setDatePublished(TimePeriodParser
.parseStringVerbatim("1955"));
170 bookSection1
.setTitle("My chapter");
171 bookSection1
.setInBook(book1
);
172 book1
.setDatePublished(VerbatimTimePeriod
.NewVerbatimInstance(1956));
174 book1
.setAuthorship(person1
);
175 Assert
.assertEquals("Unexpected nomencl. reference", "in Inauthor, Acta Inst. Bot. Acad. Sci. URSS Fasc. 11: 248. 1956", formatter
.format((Reference
)bookSection1
, "248"));
176 book1
.setAuthorship(team
);
177 Assert
.assertEquals("Unexpected nomencl. reference", "in Inauthor, Twoauthor & Threeauth., Acta Inst. Bot. Acad. Sci. URSS Fasc. 11: 248. 1956", formatter
.format((Reference
)bookSection1
, "248"));
178 team
.setHasMoreMembers(true);
179 Assert
.assertEquals("Unexpected nomencl. reference", "in Inauthor, Twoauthor & al., Acta Inst. Bot. Acad. Sci. URSS Fasc. 11: 248. 1956", formatter
.format((Reference
)bookSection1
, "248"));
180 book1
.setAuthorship(Team
.NewInstance(person1
));
181 Assert
.assertEquals("Unexpected nomencl. reference", "in Inauthor, Acta Inst. Bot. Acad. Sci. URSS Fasc. 11: 248. 1956", formatter
.format((Reference
)bookSection1
, "248"));
183 //for the following the behavior is not yet finally discussed, may change in future
184 book1
.setAuthorship(team
);
185 team
.setTitleCache("Teamcache", true);
186 Assert
.assertEquals("Unexpected nomencl. reference", "in Teamcache, Acta Inst. Bot. Acad. Sci. URSS Fasc. 11: 248. 1956", formatter
.format((Reference
)bookSection1
, "248"));
187 team
.setTitleCache("Teamc.", true);
188 Assert
.assertEquals("Unexpected nomencl. reference", "in Teamc., Acta Inst. Bot. Acad. Sci. URSS Fasc. 11: 248. 1956", formatter
.format((Reference
)bookSection1
, "248"));
189 book1
.setAuthorship(Team
.NewInstance());
190 Assert
.assertEquals("Unexpected nomencl. reference", "in "+TeamDefaultCacheStrategy
.EMPTY_TEAM
+", Acta Inst. Bot. Acad. Sci. URSS Fasc. 11: 248. 1956", formatter
.format((Reference
)bookSection1
, "248"));
195 public void testUnexpectedNomenclaturalReferences(){
199 IDatabase database1
= ReferenceFactory
.newDatabase();
200 reference
= (Reference
)database1
;
202 database1
.setTitle("My database");
203 //maybe we should have a trailing dot here
204 Assert
.assertEquals("My database: 55", formatter
.format(reference
, detail1
));
205 database1
.setDatePublished(TimePeriodParser
.parseStringVerbatim("1998"));
206 Assert
.assertEquals("My database: 55. 1998", formatter
.format(reference
, detail1
));
208 database1
.setTitleCache("Your database", true);
209 Assert
.assertEquals("My database: 55. 1998", formatter
.format(reference
, detail1
));
211 //unclear if it is wanted that the year is shown, though the abbrev cache is protected, probably not
212 reference
.setAbbrevTitleCache("You. Db.", true);
213 Assert
.assertEquals("You. Db.: 55. 1998", formatter
.format(reference
, detail1
));
217 ICdDvd cdDvd
= ReferenceFactory
.newCdDvd();
218 reference
= (Reference
)cdDvd
;
219 cdDvd
.setTitle("My Cd/Dvd");
220 //maybe we should have a trailing dot here
221 Assert
.assertEquals("My Cd/Dvd: 55", formatter
.format(reference
, detail1
));
222 cdDvd
.setDatePublished(TimePeriodParser
.parseStringVerbatim("1998"));
223 Assert
.assertEquals("My Cd/Dvd: 55. 1998", formatter
.format(reference
, detail1
));
225 cdDvd
.setTitleCache("Your Cd/Dvd", true);
226 Assert
.assertEquals("My Cd/Dvd: 55. 1998", formatter
.format(reference
, detail1
));
228 //unclear if it is wanted that the year is shown, though the abbrev cache is protected, probably not
229 reference
.setAbbrevTitleCache("You. Cd.", true);
230 Assert
.assertEquals("You. Cd.: 55. 1998", formatter
.format(reference
, detail1
));
234 IWebPage webPage
= ReferenceFactory
.newWebPage();
235 reference
= (Reference
)webPage
;
236 webPage
.setTitle("My WebPage");
237 //maybe we should have a trailing dot here
238 Assert
.assertEquals("My WebPage: 55", formatter
.format(reference
, detail1
));
239 webPage
.setDatePublished(TimePeriodParser
.parseStringVerbatim("1998"));
240 Assert
.assertEquals("My WebPage: 55. 1998", formatter
.format(reference
, detail1
));
242 webPage
.setTitleCache("Your WebPage", true);
243 Assert
.assertEquals("My WebPage: 55. 1998", formatter
.format(reference
, detail1
));
245 //unclear if it is wanted that the year is shown, though the abbrev cache is protected, probably not
246 reference
.setAbbrevTitleCache("You. WP.", true);
247 Assert
.assertEquals("You. WP.: 55. 1998", formatter
.format(reference
, detail1
));
250 webPage
= ReferenceFactory
.newWebPage();
251 reference
= (Reference
)webPage
;
252 webPage
.setUri(URI
.create("http://www.abc.de"));
253 Assert
.assertEquals("http://www.abc.de: 55", formatter
.format(reference
, detail1
));
259 public void testBookSectionGetNomenclaturalCitation(){
260 book1
.setAuthorship(bookTeam1
);
261 bookSection1
.setInBook(book1
);
262 bookSection1
.setAuthorship(sectionTeam1
);
263 book1
.setDatePublished(VerbatimTimePeriod
.NewVerbatimInstance(1975));
265 Assert
.assertEquals("in TT., 1975", formatter
.format((Reference
)bookSection1
, null));
266 Assert
.assertEquals("in TT., -: 55. 1975", formatter
.format((Reference
)bookSection1
, detail1
));
268 book1
.setTitle("My book");
269 bookSection1
.setTitle("My chapter");
270 //TODO still unclear which is correct
271 // Assert.assertEquals("in Book Author, My book: 55. 1975", bookSection1.getNomenclaturalCitation(detail1));
272 Assert
.assertEquals("in TT., My book: 55. 1975", formatter
.format((Reference
)bookSection1
, detail1
));
274 book1
.setSeriesPart("2");
275 Assert
.assertEquals("in TT., My book, ser. 2: 55. 1975", formatter
.format((Reference
)bookSection1
, detail1
));
276 //#6496 don't show pages in nom.ref. citations
277 bookSection1
.setPages("35-39");
278 Assert
.assertEquals("in TT., My book, ser. 2: 55. 1975", formatter
.format((Reference
)bookSection1
, detail1
));
282 public void testGenericGetInRef(){
283 generic1
.setTitle("auct.");
284 IBook book1
= ReferenceFactory
.newBook();
285 book1
.setTitle("My book title");
286 book1
.setAuthorship(genericTeam1
);
287 Reference inRef
= (Reference
)book1
;
288 generic1
.setInReference(inRef
);
289 generic1
.setTitleCache(null, false); //reset cache in case aspectJ is not enabled
290 //TODO author still unclear
291 // Assert.assertEquals("Unexpected title cache.", "in Authorteam, My book title: 2", generic1.getNomenclaturalCitation("2"));
292 Assert
.assertEquals("Unexpected title cache.", "in AT., My book title: 2", formatter
.format(generic1
, "2"));
296 public void testGenericDoubleDotBeforeYear(){
297 generic1
.setAuthorship(genericTeam1
);
298 String detail
= "sine no.";
299 generic1
.setAbbrevTitle("My title");
300 generic1
.setDatePublished(TimePeriodParser
.parseStringVerbatim("1883-1884"));
301 generic1
.setTitleCache(null, false); //reset cache in case aspectJ is not enabled
302 Assert
.assertEquals("My title: sine no. 1883"+SEP
+"1884", formatter
.format(generic1
, detail
));
307 public void testGenericGetAbbrevTitleCache(){
308 generic1
.setTitle("Part Title");
309 generic1
.setAbbrevTitle("Pt. Tit.");
310 generic1
.setDatePublished(TimePeriodParser
.parseStringVerbatim("1987"));
311 IBook book1
= ReferenceFactory
.newBook();
312 book1
.setTitle("My book title");
313 book1
.setAbbrevTitle("My bk. tit.");
314 book1
.setAuthorship(genericTeam1
); //TODO handling not yet defined
315 Reference inRef
= (Reference
)book1
;
316 generic1
.setInReference(inRef
);
317 generic1
.setTitleCache(null, false); //reset cache in case aspectJ is not enabled
318 generic1
.setAbbrevTitleCache(null, false); //reset cache in case aspectJ is not enabled
319 //TODO author still unclear
320 // Assert.assertEquals("Unexpected nom. ref.", "in Authorteam, My bk. tit.: pp. 44. 1987", generic1.getNomenclaturalCitation("pp. 44"));
321 Assert
.assertEquals("Unexpected nom. ref.", "in AT., My bk. tit.: pp. 44. 1987", formatter
.format(generic1
, "pp. 44"));
322 generic1
.setVolume("23");
323 Assert
.assertEquals("Unexpected nom. ref.", "in AT., My bk. tit. 23: pp. 44. 1987", formatter
.format(generic1
, "pp. 44"));
324 generic1
.setSeriesPart("ser. 11");
326 // Assert.assertEquals("Unexpected nom. ref.", "in AT., My bk. tit., ser. 11, 23: pp. 44. 1987", generic1.getNomenclaturalCitation("pp. 44"));
329 generic1
.setAbbrevTitleCache("My prot. abb. tit. in a bk.", true); //TODO still needed?
331 generic1
.setDatePublished((VerbatimTimePeriod
)null);
332 Assert
.assertEquals("Unexpected nom. ref.", "My prot. abb. tit. in a bk.", formatter
.format(generic1
, null));
333 Assert
.assertEquals("Unexpected nom. ref.", "My prot. abb. tit. in a bk.", formatter
.format(generic1
, ""));
334 Assert
.assertEquals("Unexpected nom. ref.", "My prot. abb. tit. in a bk.: pp. 44", formatter
.format(generic1
, "pp. 44"));
336 generic1
.setDatePublished(TimePeriodParser
.parseStringVerbatim("1893"));
337 Assert
.assertEquals("Unexpected nom. ref.", "My prot. abb. tit. in a bk.: pp. 44. 1893", formatter
.format(generic1
, "pp. 44"));
341 public void testGenericGetInRefWithoutInRef(){
342 generic1
.setTitle("My generic title");
343 generic1
.setAuthorship(genericTeam1
);
344 generic1
.setTitleCache(null, false); //reset cache in case aspectJ is not enabled
345 Assert
.assertEquals("Unexpected title cache.", "My generic title: 2", formatter
.format(generic1
, "2"));
349 public void testBookGetTitleCache2(){
351 IBook book1
= ReferenceFactory
.newBook();
352 book1
.setAbbrevTitle("Acta Inst. Bot. Acad. Sci. URSS");
353 book1
.setVolume("Fasc. 11");
354 book1
.setDatePublished(TimePeriodParser
.parseStringVerbatim("1955"));
355 Assert
.assertEquals("Unexpected nomencl. reference", "Acta Inst. Bot. Acad. Sci. URSS Fasc. 11: 248. 1955", formatter
.format((Reference
)book1
, "248"));
356 book1
.setSeriesPart("1");
357 Assert
.assertEquals("Unexpected nomencl. reference", "Acta Inst. Bot. Acad. Sci. URSS, ser. 1, Fasc. 11: 248. 1955", formatter
.format((Reference
)book1
, "248"));
362 public void testGenericMissingVolume(){
363 generic1
.setTitle("My generic");
364 generic1
.setAuthorship(genericTeam1
);
365 generic1
.setDatePublished(TimePeriodParser
.parseStringVerbatim("1883-1884"));
366 generic1
.setTitleCache(null, false); //reset cache in case aspectJ is not enabled
367 Assert
.assertEquals("My generic: 55. 1883"+SEP
+"1884", formatter
.format(generic1
, detail1
));
368 generic1
.setVolume("7");
369 Assert
.assertEquals("My generic 7: 55. 1883"+SEP
+"1884", formatter
.format(generic1
, detail1
));
372 Reference generic2
= ReferenceFactory
.newGeneric();
373 generic2
.setTitle("My InRef");
374 Person person2
= Person
.NewTitledInstance("InRefAuthor");
375 generic2
.setAuthorship(person2
);
376 generic2
.setDatePublished(TimePeriodParser
.parseStringVerbatim("1885"));
377 generic1
.setInReference(generic2
);
379 //only reference has a volume
380 Assert
.assertEquals("in InRefAuthor, My InRef 7: 55. 1883"+SEP
+"1884", formatter
.format(generic1
, detail1
));
383 generic2
.setVolume("9"); //still unclear what should happen if you have such dirty data
384 // Assert.assertEquals("in InRefAuthor, My InRef 7: 55. 1883-1884", formatter.format(generic1, detail1));
386 //only inref has volume
387 generic1
.setVolume(null);
388 Assert
.assertEquals("in InRefAuthor, My InRef 9: 55. 1883"+SEP
+"1884", formatter
.format(generic1
, detail1
));
391 @Test //see also the corresponging method in ReferenceDefaultCacheStrategy
392 public void testSectionInArticle(){
394 Reference journal
= ReferenceFactory
.newJournal();
395 journal
.setTitle("Phytotaxa");
396 Reference article
= ReferenceFactory
.newArticle();
397 String articleTitle
= "New diatom species Navicula davidovichii from Vietnam (Southeast Asia)";
398 article
.setTitle(articleTitle
);
399 Team articleTeam
= Team
.NewTitledInstance("Kulikovskiy, M., Chudaev, D.A., Glushchenko, A., Kuznetsova, I. & Kociolek, J.P.", null);
400 article
.setAuthorship(articleTeam
);
401 article
.setInJournal(journal
);
402 article
.setVolume("452(1)");
403 article
.setPages("83-91");
404 article
.setDatePublished(TimePeriodParser
.parseStringVerbatim("8 Jul 2020"));
405 article
.setDoi(DOI
.fromString("10.11646/phytotaxa.452.1.8"));
406 Reference section
= ReferenceFactory
.newSection();
407 Team sectionTeam
= Team
.NewTitledInstance("Chudaev, D.A., Glushchenko, A., Kulikovskiy, M. & Kociolek, J.P.", null);
408 section
.setAuthorship(sectionTeam
);
409 section
.setInReference(article
);
411 Assert
.assertEquals("Unexpected title cache.",
412 "in Phytotaxa 452(1): 55. 8 Jul 2020",
413 formatter
.format(section
, detail1
));
416 @Test //see also the corresponging method in ReferenceDefaultCacheStrategy
417 public void testSectionInBookSection(){
419 Reference book
= ReferenceFactory
.newBook();
420 book
.setTitle("Species Plantarum");
421 Person person
= Person
.NewInstance("L.", "Linne", "C.G.", "Carl-Gustav");
422 Team bookAuthor
= Team
.NewInstance(person
); // Team.NewTitledInstance("Linne", null);
424 book
.setAuthorship(bookAuthor
);
426 Reference bookSection
= ReferenceFactory
.newBookSection();
427 String bookSectionTitle
= "Trees";
428 bookSection
.setTitle(bookSectionTitle
);
429 Team bookSectionTeam
= Team
.NewTitledInstance("Chapter author", "Chap. Aut.");
430 bookSection
.setAuthorship(bookSectionTeam
);
431 bookSection
.setInBook(book
);
432 bookSection
.setPages("83-91");
433 bookSection
.setDatePublished(TimePeriodParser
.parseStringVerbatim("1752"));
434 bookSection
.setDoi(DOI
.fromString("10.12345/speciesplantarum.3"));
435 Reference section
= ReferenceFactory
.newSection();
436 Team sectionTeam
= Team
.NewTitledInstance("Section author", null);
437 section
.setAuthorship(sectionTeam
);
438 section
.setInReference(bookSection
);
440 Assert
.assertEquals("Unexpected title cache.",
441 "in Linne, Species Plantarum 3: 55. 1752",
442 formatter
.format(section
, detail1
));
443 bookAuthor
= Team
.NewTitledInstance("Linneus", null);
444 book
.setAuthorship(bookAuthor
);
445 Assert
.assertEquals("Unexpected title cache.",
446 "in Linneus, Species Plantarum 3: 55. 1752",
447 formatter
.format(section
, detail1
));
451 public void testShortSources(){
453 book1
.setAuthorship(bookTeam1
);
454 bookSection1
.setInBook(book1
);
455 book1
.setDatePublished(VerbatimTimePeriod
.NewVerbatimInstance(1972));
456 Assert
.assertEquals("in TT., -: 44. 1972", formatter
.format((Reference
)bookSection1
, "44"));
458 //#9705 (better use titlecache then completely empty reference; this handles the case when the abbreviated titleCache was forgotten to set to protected)
459 Reference book
= ReferenceFactory
.newBook();
460 book
.setTitleCache("Only titlecache", true);
461 Assert
.assertEquals("Only titlecache: 36", formatter
.format(book
, "36"));