(no commit message)
[cdmlib.git] / cdmlib-model / src / test / java / eu / etaxonomy / cdm / strategy / parser / NonViralNameParserImplTest.java
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
10 package eu.etaxonomy.cdm.strategy.parser;
11
12 import static org.junit.Assert.*;
13
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;
21
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;
30
31 /**
32 * @author a.mueller
33 *
34 */
35 public class NonViralNameParserImplTest {
36 private static final Logger logger = Logger.getLogger(NonViralNameParserImplTest.class);
37
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";
52
53 final private String strNameEmpty = "";
54 final private String strNameNull = null;
55
56 private INonViralNameParser<NonViralName> parser ;
57 private NomenclaturalCode botanicCode;
58
59 /**
60 * @throws java.lang.Exception
61 */
62 @BeforeClass
63 public static void setUpBeforeClass() throws Exception {
64 }
65
66 /**
67 * @throws java.lang.Exception
68 */
69 @AfterClass
70 public static void tearDownAfterClass() throws Exception {
71 }
72
73 /**
74 * @throws java.lang.Exception
75 */
76 @Before
77 public void setUp() throws Exception {
78 parser = NonViralNameParserImpl.NewInstance();
79 botanicCode = NomenclaturalCode.ICBN();
80 }
81
82 /**
83 * @throws java.lang.Exception
84 */
85 @After
86 public void tearDown() throws Exception {
87 }
88
89 /*************** TEST *********************************************/
90
91 /**
92 * Test method for {@link eu.etaxonomy.cdm.strategy.parser.NonViralNameParserImpl#NEW_INSTANCE()}.
93 */
94 @Test
95 public final void testNEW_INSTANCE() {
96 logger.warn("Not yet implemented"); // TODO
97 }
98
99 /**
100 * Test method for {@link eu.etaxonomy.cdm.strategy.parser.NonViralNameParserImpl#TaxonNameParserBotanicalNameImpl()}.
101 */
102 @Test
103 public final void testTaxonNameParserBotanicalNameImpl() {
104 logger.warn("Not yet implemented"); // TODO
105 }
106
107 /**
108 * Test method for {@link eu.etaxonomy.cdm.strategy.parser.NonViralNameParserImpl#parseSimpleName(java.lang.String, eu.etaxonomy.cdm.model.name.Rank)}.
109 */
110 @Test
111 public final void testParseSimpleName() {
112 logger.warn("Not yet implemented"); // TODO
113 }
114
115 /**
116 * Test method for {@link eu.etaxonomy.cdm.strategy.parser.NonViralNameParserImpl#parseSubGenericFullName(java.lang.String)}.
117 */
118 @Test
119 public final void testParseSubGenericFullName() {
120 logger.warn("Not yet implemented"); // TODO
121 }
122
123 /**
124 * Test method for {@link eu.etaxonomy.cdm.strategy.parser.NonViralNameParserImpl#parseSubGenericSimpleName(java.lang.String)}.
125 */
126 @Test
127 public final void testParseSubGenericSimpleName() {
128 logger.warn("Not yet implemented"); // TODO
129 }
130
131 /**
132 * Test method for {@link eu.etaxonomy.cdm.strategy.parser.NonViralNameParserImpl#parseFullName(java.lang.String, eu.etaxonomy.cdm.model.name.Rank)}.
133 */
134 @Test
135 @Ignore //TODO Character encoding in svn
136 public final void testParseFullNameUnicode() {
137
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());
142
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());
149
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());
158 }
159
160
161 /**
162 * Test method for {@link eu.etaxonomy.cdm.strategy.parser.NonViralNameParserImpl#parseFullName(java.lang.String, eu.etaxonomy.cdm.model.name.Rank)}.
163 */
164 @Test
165 public final void testParseFullName() {
166 NonViralName name1 = parser.parseFullName(strNameAbies1, null, Rank.SPECIES());
167 assertEquals(name1.getGenusOrUninomial(), "Abies");
168 assertEquals(name1.getSpecificEpithet(), "alba");
169
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());
174
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());
180
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());
188
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());
194
195 //Team
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());
204
205 //ZooName
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());
216
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());
222
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());
228
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());
234
235 //empty
236 NonViralName nameEmpty = parser.parseFullName(strNameEmpty);
237 assertNotNull(nameEmpty);
238 assertEquals("", nameEmpty.getTitleCache());
239
240 //null
241 NonViralName nameNull = parser.parseFullName(strNameNull);
242 assertNull(nameNull);
243
244 }
245
246 /**
247 * Test method for {@link eu.etaxonomy.cdm.strategy.parser.NonViralNameParserImpl#fullTeams(java.lang.String)}.
248 */
249 @Test
250 public final void testFullTeams() {
251 logger.warn("Not yet implemented"); // TODO
252 }
253
254 /**
255 * Test method for {@link eu.etaxonomy.cdm.strategy.parser.NonViralNameParserImpl#authorTeamAndEx(java.lang.String)}.
256 */
257 @Test
258 public final void testAuthorTeamAndEx() {
259 logger.warn("Not yet implemented"); // TODO
260 }
261
262 /**
263 * Test method for {@link eu.etaxonomy.cdm.strategy.parser.NonViralNameParserImpl#authorTeam(java.lang.String)}.
264 */
265 @Test
266 public final void testAuthorTeam() {
267 logger.warn("Not yet implemented"); // TODO
268 }
269
270 /**
271 * Test method for {@link eu.etaxonomy.cdm.strategy.parser.NonViralNameParserImpl#parseCultivar(java.lang.String)}.
272 */
273 @Test
274 public final void testParseCultivar() {
275 logger.warn("Not yet implemented"); // TODO
276 }
277
278 }