2 * Copyright (C) 2007 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.
10 package eu
.etaxonomy
.cdm
.strategy
.parser
;
12 import static org
.junit
.Assert
.*;
14 import org
.apache
.log4j
.Logger
;
15 import org
.junit
.After
;
16 import org
.junit
.AfterClass
;
17 import org
.junit
.Before
;
18 import org
.junit
.BeforeClass
;
19 import org
.junit
.Ignore
;
20 import org
.junit
.Test
;
22 import eu
.etaxonomy
.cdm
.model
.agent
.Team
;
23 import eu
.etaxonomy
.cdm
.model
.name
.BotanicalName
;
24 import eu
.etaxonomy
.cdm
.model
.name
.NomenclaturalCode
;
25 import eu
.etaxonomy
.cdm
.model
.name
.NonViralName
;
26 import eu
.etaxonomy
.cdm
.model
.name
.Rank
;
27 import eu
.etaxonomy
.cdm
.model
.name
.ZoologicalName
;
28 import eu
.etaxonomy
.cdm
.strategy
.parser
.INonViralNameParser
;
29 import eu
.etaxonomy
.cdm
.strategy
.parser
.NonViralNameParserImpl
;
35 public class NonViralNameParserImplTest
{
36 private static final Logger logger
= Logger
.getLogger(NonViralNameParserImplTest
.class);
38 final private String strNameFamily
= "Asteraceae";
39 final private String strNameGenus
= "Abies Mueller";
40 final private String strNameGenusUnicode
= "Abies Müller";
41 final private String strNameAbies1
= "Abies alba";
42 final private String strNameAbiesSub1
= "Abies alba subsp. beta";
43 final private String strNameAbiesAuthor1
= "Abies alba Mueller";
44 final private String strNameAbiesAuthor1Unicode
= "Abies alba Müller";
45 final private String strNameAbiesBasionymAuthor1
= "Abies alba (Ciardelli) D'Mueller";
46 final private String strNameAbiesBasionymAuthor1Unicode
= "Abies alba (Ciardelli) D'Müller";
47 final private String strNameAbiesBasionymExAuthor1
="Abies alba (Ciardelli ex Doering) D'Mueller ex. de Greuther";
48 final private String strNameAbiesBasionymExAuthor1Unicode
="Abies alba (Ciardelli ex Döring) D'Müller ex. de Greuther";
49 final private String strNameTeam1
= "Abies alba Mueller & L.";
50 final private String strNameZoo1
= "Abies alba Mueller & L., 1822";
51 final private String strNameZoo2
= "Abies alba (Mueller, 1822) Ciardelli, 2002";
53 final private String strNameEmpty
= "";
54 final private String strNameNull
= null;
56 private INonViralNameParser
<NonViralName
> parser
;
57 private NomenclaturalCode botanicCode
;
60 * @throws java.lang.Exception
63 public static void setUpBeforeClass() throws Exception
{
67 * @throws java.lang.Exception
70 public static void tearDownAfterClass() throws Exception
{
74 * @throws java.lang.Exception
77 public void setUp() throws Exception
{
78 parser
= NonViralNameParserImpl
.NewInstance();
79 botanicCode
= NomenclaturalCode
.ICBN();
83 * @throws java.lang.Exception
86 public void tearDown() throws Exception
{
89 /*************** TEST *********************************************/
92 * Test method for {@link eu.etaxonomy.cdm.strategy.parser.NonViralNameParserImpl#NEW_INSTANCE()}.
95 public final void testNEW_INSTANCE() {
96 logger
.warn("Not yet implemented"); // TODO
100 * Test method for {@link eu.etaxonomy.cdm.strategy.parser.NonViralNameParserImpl#TaxonNameParserBotanicalNameImpl()}.
103 public final void testTaxonNameParserBotanicalNameImpl() {
104 logger
.warn("Not yet implemented"); // TODO
108 * Test method for {@link eu.etaxonomy.cdm.strategy.parser.NonViralNameParserImpl#parseSimpleName(java.lang.String, eu.etaxonomy.cdm.model.name.Rank)}.
111 public final void testParseSimpleName() {
112 logger
.warn("Not yet implemented"); // TODO
116 * Test method for {@link eu.etaxonomy.cdm.strategy.parser.NonViralNameParserImpl#parseSubGenericFullName(java.lang.String)}.
119 public final void testParseSubGenericFullName() {
120 logger
.warn("Not yet implemented"); // TODO
124 * Test method for {@link eu.etaxonomy.cdm.strategy.parser.NonViralNameParserImpl#parseSubGenericSimpleName(java.lang.String)}.
127 public final void testParseSubGenericSimpleName() {
128 logger
.warn("Not yet implemented"); // TODO
132 * Test method for {@link eu.etaxonomy.cdm.strategy.parser.NonViralNameParserImpl#parseFullName(java.lang.String, eu.etaxonomy.cdm.model.name.Rank)}.
135 @Ignore //TODO Character encoding in svn
136 public final void testParseFullNameUnicode() {
138 NonViralName nameAuthor
= parser
.parseFullName(strNameAbiesAuthor1Unicode
, null, Rank
.SPECIES());
139 assertEquals("Abies", nameAuthor
.getGenusOrUninomial());
140 assertEquals("alba", nameAuthor
.getSpecificEpithet());
141 assertEquals("Müller", nameAuthor
.getCombinationAuthorTeam().getNomenclaturalTitle());
143 NonViralName nameBasionymAuthor
= parser
.parseFullName(strNameAbiesBasionymAuthor1Unicode
, null, Rank
.SPECIES());
144 assertEquals("Abies", nameBasionymAuthor
.getGenusOrUninomial());
145 assertEquals("alba", nameBasionymAuthor
.getSpecificEpithet());
146 assertEquals("D'Müller", nameBasionymAuthor
.getCombinationAuthorTeam().getNomenclaturalTitle());
147 BotanicalName basionym
= (BotanicalName
)nameBasionymAuthor
.getBasionym();
148 assertEquals("Ciardelli", basionym
.getCombinationAuthorTeam().getNomenclaturalTitle());
150 NonViralName nameBasionymExAuthor
= parser
.parseFullName(strNameAbiesBasionymExAuthor1Unicode
, null, Rank
.SPECIES());
151 assertEquals("Abies", nameBasionymExAuthor
.getGenusOrUninomial());
152 assertEquals("alba", nameBasionymExAuthor
.getSpecificEpithet());
153 assertEquals("D'Müller", nameBasionymExAuthor
.getCombinationAuthorTeam().getNomenclaturalTitle());
154 assertEquals("de Greuther", nameBasionymExAuthor
.getExCombinationAuthorTeam().getNomenclaturalTitle());
155 BotanicalName basionym2
= (BotanicalName
)nameBasionymExAuthor
.getBasionym();
156 assertEquals("Ciardelli", basionym2
.getCombinationAuthorTeam().getNomenclaturalTitle());
157 assertEquals("Döring", basionym2
.getExCombinationAuthorTeam().getNomenclaturalTitle());
162 * Test method for {@link eu.etaxonomy.cdm.strategy.parser.NonViralNameParserImpl#parseFullName(java.lang.String, eu.etaxonomy.cdm.model.name.Rank)}.
165 public final void testParseFullName() {
166 NonViralName name1
= parser
.parseFullName(strNameAbies1
, null, Rank
.SPECIES());
167 assertEquals(name1
.getGenusOrUninomial(), "Abies");
168 assertEquals(name1
.getSpecificEpithet(), "alba");
170 NonViralName nameAuthor
= parser
.parseFullName(strNameAbiesAuthor1
, null, Rank
.SPECIES());
171 assertEquals("Abies", nameAuthor
.getGenusOrUninomial());
172 assertEquals("alba", nameAuthor
.getSpecificEpithet());
173 assertEquals("Mueller", nameAuthor
.getCombinationAuthorTeam().getNomenclaturalTitle());
175 NonViralName nameBasionymAuthor
= parser
.parseFullName(strNameAbiesBasionymAuthor1
, null, Rank
.SPECIES());
176 assertEquals("Abies", nameBasionymAuthor
.getGenusOrUninomial());
177 assertEquals("alba", nameBasionymAuthor
.getSpecificEpithet());
178 assertEquals("D'Mueller", nameBasionymAuthor
.getCombinationAuthorTeam().getNomenclaturalTitle());
179 assertEquals("Ciardelli", nameBasionymAuthor
.getBasionymAuthorTeam().getNomenclaturalTitle());
181 NonViralName nameBasionymExAuthor
= parser
.parseFullName(strNameAbiesBasionymExAuthor1
, null, Rank
.SPECIES());
182 assertEquals("Abies", nameBasionymExAuthor
.getGenusOrUninomial());
183 assertEquals("alba", nameBasionymExAuthor
.getSpecificEpithet());
184 assertEquals("D'Mueller", nameBasionymExAuthor
.getCombinationAuthorTeam().getNomenclaturalTitle());
185 assertEquals("de Greuther", nameBasionymExAuthor
.getExCombinationAuthorTeam().getNomenclaturalTitle());
186 assertEquals("Ciardelli", nameBasionymExAuthor
.getBasionymAuthorTeam().getNomenclaturalTitle());
187 assertEquals("Doering", nameBasionymExAuthor
.getExBasionymAuthorTeam().getNomenclaturalTitle());
189 NonViralName name2
= parser
.parseFullName(strNameAbiesSub1
, null, Rank
.SPECIES());
190 assertEquals(name2
.getGenusOrUninomial(), "Abies");
191 assertEquals(name2
.getSpecificEpithet(), "alba");
192 assertEquals(name2
.getInfraSpecificEpithet(), "beta");
193 assertEquals(Rank
.SUBSPECIES(), name2
.getRank());
196 NonViralName nameTeam1
= parser
.parseFullName(strNameTeam1
);
197 assertEquals( "Abies", nameTeam1
.getGenusOrUninomial());
198 assertEquals( "alba", nameTeam1
.getSpecificEpithet());
199 assertEquals("Mueller & L.", nameTeam1
.getCombinationAuthorTeam().getNomenclaturalTitle());
200 assertTrue(nameTeam1
.getCombinationAuthorTeam() instanceof Team
);
201 Team team
= (Team
)nameTeam1
.getCombinationAuthorTeam();
202 assertEquals("Mueller", team
.getTeamMembers().get(0).getNomenclaturalTitle());
203 assertEquals("L.", team
.getTeamMembers().get(1).getNomenclaturalTitle());
206 ZoologicalName nameZoo1
= (ZoologicalName
)parser
.parseFullName(strNameZoo1
);
207 assertEquals( "Abies", nameZoo1
.getGenusOrUninomial());
208 assertEquals( "alba", nameZoo1
.getSpecificEpithet());
209 assertEquals("Mueller & L.", nameZoo1
.getCombinationAuthorTeam().getNomenclaturalTitle());
210 assertEquals(NomenclaturalCode
.ICZN(), nameZoo1
.getNomenclaturalCode() );
211 assertEquals(Integer
.valueOf(1822), nameZoo1
.getPublicationYear());
212 assertTrue(nameZoo1
.getCombinationAuthorTeam() instanceof Team
);
213 Team teamZoo
= (Team
)nameZoo1
.getCombinationAuthorTeam();
214 assertEquals("Mueller", teamZoo
.getTeamMembers().get(0).getNomenclaturalTitle());
215 assertEquals("L.", teamZoo
.getTeamMembers().get(1).getNomenclaturalTitle());
217 ZoologicalName nameZoo2
= (ZoologicalName
)parser
.parseFullName(strNameZoo2
);
218 assertEquals(Integer
.valueOf(2002), nameZoo2
.getPublicationYear());
219 assertEquals(Integer
.valueOf(1822), nameZoo2
.getOriginalPublicationYear());
220 assertEquals("Mueller", nameZoo2
.getBasionymAuthorTeam().getNomenclaturalTitle());
221 assertEquals("Ciardelli", nameZoo2
.getCombinationAuthorTeam().getNomenclaturalTitle());
223 String strNotParsableZoo
= "Abies alba M., 1923, Sp. P. xxwer4352";
224 ZoologicalName nameZooRefNotParsabel
= (ZoologicalName
)parser
.parseFullReference(strNotParsableZoo
, null, null);
225 assertTrue(nameZooRefNotParsabel
.hasProblem());
226 assertEquals(NomenclaturalCode
.ICZN(), nameZooRefNotParsabel
.getNomenclaturalCode());
227 assertEquals(Integer
.valueOf(1923), nameZooRefNotParsabel
.getPublicationYear());
229 // unparseable *********
230 String problemString
= "sdfjlös wer eer wer";
231 NonViralName nameProblem
= parser
.parseFullName(problemString
, null, Rank
.SPECIES());
232 assertTrue(nameProblem
.getHasProblem());
233 assertEquals(problemString
, nameProblem
.getTitleCache());
236 NonViralName nameEmpty
= parser
.parseFullName(strNameEmpty
);
237 assertNotNull(nameEmpty
);
238 assertEquals("", nameEmpty
.getTitleCache());
241 NonViralName nameNull
= parser
.parseFullName(strNameNull
);
242 assertNull(nameNull
);
247 * Test method for {@link eu.etaxonomy.cdm.strategy.parser.NonViralNameParserImpl#fullTeams(java.lang.String)}.
250 public final void testFullTeams() {
251 logger
.warn("Not yet implemented"); // TODO
255 * Test method for {@link eu.etaxonomy.cdm.strategy.parser.NonViralNameParserImpl#authorTeamAndEx(java.lang.String)}.
258 public final void testAuthorTeamAndEx() {
259 logger
.warn("Not yet implemented"); // TODO
263 * Test method for {@link eu.etaxonomy.cdm.strategy.parser.NonViralNameParserImpl#authorTeam(java.lang.String)}.
266 public final void testAuthorTeam() {
267 logger
.warn("Not yet implemented"); // TODO
271 * Test method for {@link eu.etaxonomy.cdm.strategy.parser.NonViralNameParserImpl#parseCultivar(java.lang.String)}.
274 public final void testParseCultivar() {
275 logger
.warn("Not yet implemented"); // TODO