import java.lang.reflect.InvocationTargetException;\r
import java.lang.reflect.Method;\r
import java.util.List;\r
+import java.util.regex.Matcher;\r
+import java.util.regex.Pattern;\r
+\r
+import junit.framework.Assert;\r
\r
import org.apache.log4j.Logger;\r
import org.junit.After;\r
import eu.etaxonomy.cdm.model.name.NonViralName;\r
import eu.etaxonomy.cdm.model.name.Rank;\r
import eu.etaxonomy.cdm.model.name.ZoologicalName;\r
-import eu.etaxonomy.cdm.model.reference.Article;\r
-import eu.etaxonomy.cdm.model.reference.Book;\r
-import eu.etaxonomy.cdm.model.reference.BookSection;\r
+//import eu.etaxonomy.cdm.model.reference.Article;\r
+//import eu.etaxonomy.cdm.model.reference.Book;\r
+//import eu.etaxonomy.cdm.model.reference.BookSection;\r
+import eu.etaxonomy.cdm.model.reference.IArticle;\r
+import eu.etaxonomy.cdm.model.reference.IBook;\r
+import eu.etaxonomy.cdm.model.reference.IBookSection;\r
+import eu.etaxonomy.cdm.model.reference.IJournal;\r
import eu.etaxonomy.cdm.model.reference.INomenclaturalReference;\r
-import eu.etaxonomy.cdm.model.reference.Journal;\r
-import eu.etaxonomy.cdm.model.reference.ReferenceBase;\r
+import eu.etaxonomy.cdm.model.reference.IVolumeReference;\r
+import eu.etaxonomy.cdm.model.reference.ReferenceType;\r
+//import eu.etaxonomy.cdm.model.reference.Journal;\r
+import eu.etaxonomy.cdm.model.reference.Reference;\r
/**\r
* @author a.mueller\r
*\r
termInitializer.initialize();\r
}\r
\r
- /**\r
- * @throws java.lang.Exception\r
- */\r
- @AfterClass\r
- public static void tearDownAfterClass() throws Exception {\r
- }\r
\r
/**\r
* @throws java.lang.Exception\r
botanicCode = NomenclaturalCode.ICBN;\r
}\r
\r
- /**\r
- * @throws java.lang.Exception\r
- */\r
- @After\r
- public void tearDown() throws Exception {\r
- }\r
\r
/*************** TEST *********************************************/\r
\r
NonViralName nameBasionymExAuthor = parser.parseFullName(strNameAbiesBasionymExAuthor1Unicode, null, Rank.SPECIES());\r
assertEquals("Abies", nameBasionymExAuthor.getGenusOrUninomial());\r
assertEquals("alba", nameBasionymExAuthor.getSpecificEpithet());\r
- assertEquals("D'M\u00FCller", nameBasionymExAuthor.getCombinationAuthorTeam().getNomenclaturalTitle());\r
- assertEquals("de Greuther", nameBasionymExAuthor.getExCombinationAuthorTeam().getNomenclaturalTitle());\r
- INomenclaturalAuthor basionymTeam2 = nameBasionymExAuthor.getBasionymAuthorTeam();\r
+ assertEquals("D'M\u00FCller", nameBasionymExAuthor.getExCombinationAuthorTeam().getNomenclaturalTitle());\r
+ assertEquals("de Greuther", nameBasionymExAuthor.getCombinationAuthorTeam().getNomenclaturalTitle());\r
+ INomenclaturalAuthor basionymTeam2 = nameBasionymExAuthor.getExBasionymAuthorTeam();\r
assertEquals("Ciardelli", basionymTeam2.getNomenclaturalTitle());\r
- INomenclaturalAuthor exBasionymTeam2 = nameBasionymExAuthor.getExBasionymAuthorTeam();\r
+ INomenclaturalAuthor exBasionymTeam2 = nameBasionymExAuthor.getBasionymAuthorTeam();\r
assertEquals("D\u00F6ring", exBasionymTeam2.getNomenclaturalTitle());\r
+ \r
+ BotanicalName nameBasionymExAuthor2 = (BotanicalName)parser.parseFullName("Washingtonia filifera (Linden ex Andre) H.Wendl. ex de Bary", null, Rank.SPECIES());\r
+ assertEquals("Washingtonia", nameBasionymExAuthor2.getGenusOrUninomial());\r
+ assertEquals("filifera", nameBasionymExAuthor2.getSpecificEpithet());\r
+ assertEquals("H.Wendl.", nameBasionymExAuthor2.getExCombinationAuthorTeam().getNomenclaturalTitle());\r
+ assertEquals("de Bary", nameBasionymExAuthor2.getCombinationAuthorTeam().getNomenclaturalTitle());\r
+ INomenclaturalAuthor basionymTeam3 = nameBasionymExAuthor2.getBasionymAuthorTeam();\r
+ assertEquals("Andre", basionymTeam3.getNomenclaturalTitle());\r
+ INomenclaturalAuthor exBasionymTeam3 = nameBasionymExAuthor2.getExBasionymAuthorTeam();\r
+ assertEquals("Linden", exBasionymTeam3.getNomenclaturalTitle());\r
+ String title = nameBasionymExAuthor2.generateTitle();\r
+ assertEquals("Washingtonia filifera (Linden ex Andre) H.Wendl. ex de Bary", title);\r
+ \r
}\r
\r
\r
assertNull(nameNull);\r
\r
//some authors\r
- String fullNameString = "Abies alba (Greuther & L'Hiver & al. ex MΓΌller & Schmidt)Clark ex Ciardelli"; \r
+ String fullNameString = "Abies alba (Greuther & L'Hiver & al. ex M\u00FCller & Schmidt)Clark ex Ciardelli"; \r
BotanicalName authorname = (BotanicalName)parser.parseFullName(fullNameString);\r
assertFalse(authorname.hasProblem());\r
- assertEquals("Basionym author should have 3 authors", 3, ((Team)authorname.getBasionymAuthorTeam()).getTeamMembers().size());\r
+ assertEquals("Basionym author should have 3 authors", 3, ((Team)authorname.getExBasionymAuthorTeam()).getTeamMembers().size());\r
+ }\r
+ \r
+ /**\r
+ * Test method for {@link eu.etaxonomy.cdm.strategy.parser.NonViralNameParserImpl#parseFullName(java.lang.String, eu.etaxonomy.cdm.model.name.Rank)}.\r
+ */\r
+ @Test\r
+ public final void testHybrids() {\r
+ try {\r
+ Method parseMethod = parser.getClass().getDeclaredMethod("parseFullName", String.class, NomenclaturalCode.class, Rank.class);\r
+ testName_StringNomcodeRank(parseMethod);\r
+ } catch (Exception e) {\r
+ e.printStackTrace();\r
+ assertTrue(false);\r
+ }\r
+ \r
+ //Species hybrid\r
+// NonViralName nameTeam1 = parser.parseFullName("Aegilops \u00D7insulae-cypri H. Scholz");\r
+ NonViralName name1 = parser.parseFullName("Aegilops \u00D7insulae Scholz", botanicCode, null);\r
+ assertTrue("Name must have binom hybrid bit set", name1.isBinomHybrid());\r
+ assertFalse("Name must not have monom hybrid bit set", name1.isMonomHybrid());\r
+ assertFalse("Name must not have trinom hybrid bit set", name1.isTrinomHybrid());\r
+ assertEquals("Species epithet must be 'insulae'", "insulae", name1.getSpecificEpithet());\r
+ \r
+ //Uninomial hybrid\r
+ name1 = parser.parseFullName("x Aegilops Scholz", botanicCode, null);\r
+ assertTrue("Name must have monom hybrid bit set", name1.isMonomHybrid());\r
+ assertFalse("Name must not have binom hybrid bit set", name1.isBinomHybrid());\r
+ assertFalse("Name must not have trinom hybrid bit set", name1.isTrinomHybrid());\r
+ assertEquals("Uninomial must be 'Aegilops'", "Aegilops", name1.getGenusOrUninomial());\r
+\r
+ //Species hybrid\r
+ name1 = parser.parseFullName("Aegilops insulae subsp. X abies Scholz", botanicCode, null);\r
+ assertFalse("Name must not have monom hybrid bit set", name1.isMonomHybrid());\r
+ assertFalse("Name must not have binom hybrid bit set", name1.isBinomHybrid());\r
+ assertTrue("Name must have trinom hybrid bit set", name1.isTrinomHybrid());\r
+ assertEquals("Infraspecific epithet must be 'abies'", "abies", name1.getInfraSpecificEpithet());\r
+\r
}\r
\r
private void testName_StringNomcodeRank(Method parseMethod) \r
NonViralName nameBasionymExAuthor = (NonViralName)parseMethod.invoke(parser, strNameAbiesBasionymExAuthor1, null, Rank.SPECIES());\r
assertEquals("Abies", nameBasionymExAuthor.getGenusOrUninomial());\r
assertEquals("alba", nameBasionymExAuthor.getSpecificEpithet());\r
- assertEquals("D'Mueller", nameBasionymExAuthor.getCombinationAuthorTeam().getNomenclaturalTitle());\r
- assertEquals("de Greuther", nameBasionymExAuthor.getExCombinationAuthorTeam().getNomenclaturalTitle());\r
- assertEquals("Ciardelli", nameBasionymExAuthor.getBasionymAuthorTeam().getNomenclaturalTitle());\r
- assertEquals("Doering", nameBasionymExAuthor.getExBasionymAuthorTeam().getNomenclaturalTitle());\r
+ assertEquals("D'Mueller", nameBasionymExAuthor.getExCombinationAuthorTeam().getNomenclaturalTitle());\r
+ assertEquals("de Greuther", nameBasionymExAuthor.getCombinationAuthorTeam().getNomenclaturalTitle());\r
+ assertEquals("Ciardelli", nameBasionymExAuthor.getExBasionymAuthorTeam().getNomenclaturalTitle());\r
+ assertEquals("Doering", nameBasionymExAuthor.getBasionymAuthorTeam().getNomenclaturalTitle());\r
\r
NonViralName name2 = (NonViralName)parseMethod.invoke(parser, strNameAbiesSub1, null, Rank.SPECIES());\r
assertEquals("Abies", name2.getGenusOrUninomial());\r
String strFullWhiteSpcaceAndDot = "Abies alba Mill., Sp. Pl. 4: 455 . 1987 .";\r
NonViralName<?> namefullWhiteSpcaceAndDot = parser.parseReferencedName(strFullWhiteSpcaceAndDot, null, Rank.SPECIES());\r
assertFullRefStandard(namefullWhiteSpcaceAndDot);\r
- assertTrue(namefullWhiteSpcaceAndDot.getNomenclaturalReference() instanceof Book);\r
+ assertTrue(((Reference)namefullWhiteSpcaceAndDot.getNomenclaturalReference()).getType().equals(eu.etaxonomy.cdm.model.reference.ReferenceType.Book));\r
assertEquals( "Abies alba Mill., Sp. Pl. 4: 455. 1987", namefullWhiteSpcaceAndDot.getFullTitleCache());\r
\r
//Book\r
String fullReference = "Abies alba Mill., Sp. Pl. 4: 455. 1987";\r
NonViralName<?> name1 = parser.parseReferencedName(fullReference, null, Rank.SPECIES());\r
assertFullRefStandard(name1);\r
- assertTrue(name1.getNomenclaturalReference() instanceof Book);\r
+ assertTrue(((Reference)name1.getNomenclaturalReference()).getType().equals(eu.etaxonomy.cdm.model.reference.ReferenceType.Book));\r
assertEquals(fullReference, name1.getFullTitleCache());\r
- assertTrue("Name author and reference author should be the same", name1.getCombinationAuthorTeam() == name1.getNomenclaturalReference().getAuthorTeam());\r
+ assertTrue("Name author and reference author should be the same", name1.getCombinationAuthorTeam() == ((Reference)name1.getNomenclaturalReference()).getAuthorTeam());\r
\r
//Book Section\r
fullReference = "Abies alba Mill. in Otto, Sp. Pl. 4(6): 455. 1987";\r
assertFullRefNameStandard(name2);\r
assertEquals(fullReference, name2.getFullTitleCache());\r
assertFalse(name2.hasProblem());\r
- INomenclaturalReference ref = (INomenclaturalReference)name2.getNomenclaturalReference();\r
- assertEquals(BookSection.class, ref.getClass());\r
- BookSection bookSection = (BookSection)ref;\r
- Book inBook = bookSection.getInBook();\r
+ INomenclaturalReference ref = name2.getNomenclaturalReference();\r
+ assertEquals(eu.etaxonomy.cdm.model.reference.ReferenceType.BookSection, ((Reference)ref).getType());\r
+ IBookSection bookSection = (IBookSection) ref;\r
+ IBook inBook = bookSection.getInBook();\r
assertNotNull(inBook);\r
assertNotNull(inBook.getAuthorTeam());\r
assertEquals("Otto", inBook.getAuthorTeam().getTitleCache());\r
assertEquals("Otto, Sp. Pl. 4(6)", inBook.getTitleCache());\r
assertEquals("Sp. Pl.", inBook.getTitle());\r
assertEquals("4(6)", inBook.getVolume());\r
- assertTrue("Name author and reference author should be the same", name2.getCombinationAuthorTeam() == name2.getNomenclaturalReference().getAuthorTeam());\r
+ assertTrue("Name author and reference author should be the same", name2.getCombinationAuthorTeam() == ((Reference)name2.getNomenclaturalReference()).getAuthorTeam());\r
\r
//Article\r
fullReference = "Abies alba Mill. in Sp. Pl. 4(6): 455. 1987";\r
assertFullRefNameStandard(name3);\r
assertEquals(fullReference, name3.getFullTitleCache());\r
assertFalse(name3.hasProblem());\r
- ref = (INomenclaturalReference)name3.getNomenclaturalReference();\r
- assertEquals(Article.class, ref.getClass());\r
- Article article = (Article)ref;\r
- Journal journal = article.getInJournal();\r
+ ref = name3.getNomenclaturalReference();\r
+ assertEquals(eu.etaxonomy.cdm.model.reference.ReferenceType.Article, ref.getType());\r
+ //Article article = (Article)ref;\r
+ IJournal journal = ((IArticle)ref).getInJournal();\r
assertNotNull(journal);\r
//assertEquals("Sp. Pl. 4(6)", inBook.getTitleCache());\r
- assertEquals("Sp. Pl.", journal.getTitleCache());\r
+ assertEquals("Sp. Pl.",((Reference) journal).getTitleCache());\r
assertEquals("Sp. Pl.", journal.getTitle());\r
- assertEquals("4(6)", article.getVolume());\r
+ assertEquals("4(6)",((IArticle)ref).getVolume());\r
assertTrue("Name author and reference author should be the same", name3.getCombinationAuthorTeam() == name3.getNomenclaturalReference().getAuthorTeam());\r
\r
//SoftArticle - having "," on position > 4\r
assertFalse(name4.hasProblem());\r
assertFullRefNameStandard(name4);\r
assertEquals(fullReferenceWithoutYear + " " + parsedYear, name4.getFullTitleCache());\r
- ref = (INomenclaturalReference)name4.getNomenclaturalReference();\r
- assertEquals(Article.class, ref.getClass());\r
- article = (Article)ref;\r
+ ref = name4.getNomenclaturalReference();\r
+ assertEquals(ReferenceType.Article, ref.getType());\r
+ //article = (Article)ref;\r
assertEquals(parsedYear, ref.getYear());\r
- journal = article.getInJournal();\r
+ journal = ((IArticle)ref).getInJournal();\r
assertNotNull(journal);\r
- assertEquals(journalTitle, journal.getTitleCache());\r
+ assertEquals(journalTitle, ((Reference) journal).getTitleCache());\r
assertEquals(journalTitle, journal.getTitle());\r
- assertEquals("4(6)", article.getVolume());\r
+ assertEquals("4(6)", ((IArticle)ref).getVolume());\r
\r
//Zoo name\r
String strNotParsableZoo = "Abies alba M., 1923, Sp. P. xxwer4352, nom. inval.";\r
assertEquals(Integer.valueOf(1923), nameZooRefNotParsabel.getPublicationYear());\r
assertEquals(1, nameZooRefNotParsabel.getStatus().size());\r
\r
+ String strZooNameSineYear = "Homo sapiens L., 1758, Sp. An. 3: 345";\r
+ ZoologicalName nameZooNameSineYear = (ZoologicalName)parser.parseReferencedName(strZooNameSineYear);\r
+ assertFalse(nameZooNameSineYear.hasProblem());\r
+ assertEquals("Name without reference year must have year", (Integer)1758, nameZooNameSineYear.getPublicationYear());\r
+ assertEquals("Name without reference year must have year", "1758", nameZooNameSineYear.getNomenclaturalReference().getYear());\r
+ \r
+ String strZooNameNewCombination = "Homo sapiens (L., 1758) Mill., 1830, Sp. An. 3: 345";\r
+ ZoologicalName nameZooNameNewCombination = (ZoologicalName)parser.parseReferencedName(strZooNameNewCombination);\r
+ assertTrue(nameZooNameNewCombination.hasProblem());\r
+ list = nameZooNameNewCombination.getParsingProblems();\r
+ assertTrue("List must contain new combination has publication warning ", list.contains(ParserProblem.NewCombinationHasPublication));\r
+ assertEquals(35, nameZooNameNewCombination.getProblemStarts());\r
+ assertEquals(51, nameZooNameNewCombination.getProblemEnds());\r
+ \r
+ \r
//Special MicroRefs\r
String strSpecDetail1 = "Abies alba Mill. in Sp. Pl. 4(6): [455]. 1987";\r
NonViralName<?> nameSpecDet1 = parser.parseReferencedName(strSpecDetail1 + ".", null, Rank.SPECIES());\r
NonViralName<?> nameNoVolume = parser.parseReferencedName(strNoVolume, null, Rank.SPECIES());\r
assertFalse(nameNoVolume.hasProblem());\r
assertEquals(strNoVolume, nameNoVolume.getFullTitleCache());\r
- assertEquals(null, ((Book)nameNoVolume.getNomenclaturalReference()).getVolume());\r
- assertEquals(null, ((Book)nameNoVolume.getNomenclaturalReference()).getEdition());\r
+ assertEquals(null, ((IVolumeReference)(nameNoVolume.getNomenclaturalReference())).getVolume());\r
+ assertEquals(null, ((IBook)nameNoVolume.getNomenclaturalReference()).getEdition());\r
\r
//volume, no edition\r
strNoVolume = "Abies alba Mill., Sp. Pl. 2: 455. 1987";\r
nameNoVolume = parser.parseReferencedName(strNoVolume, null, Rank.SPECIES());\r
assertFalse(nameNoVolume.hasProblem());\r
assertEquals(strNoVolume, nameNoVolume.getFullTitleCache());\r
- assertEquals("2", ((Book)nameNoVolume.getNomenclaturalReference()).getVolume());\r
- assertEquals(null, ((Book)nameNoVolume.getNomenclaturalReference()).getEdition());\r
+ assertEquals("2", ((IVolumeReference)(nameNoVolume.getNomenclaturalReference())).getVolume());\r
+ assertEquals(null, ((IBook)(nameNoVolume.getNomenclaturalReference())).getEdition());\r
\r
//no volume, edition\r
strNoVolume = "Abies alba Mill., Sp. Pl. ed. 3: 455. 1987";\r
nameNoVolume = parser.parseReferencedName(strNoVolume, null, Rank.SPECIES());\r
assertFalse(nameNoVolume.hasProblem());\r
assertEquals(strNoVolume, nameNoVolume.getFullTitleCache());\r
- assertEquals(null, ((Book)nameNoVolume.getNomenclaturalReference()).getVolume());\r
- assertEquals("3", ((Book)nameNoVolume.getNomenclaturalReference()).getEdition());\r
+ assertEquals(null, ((IVolumeReference)(nameNoVolume.getNomenclaturalReference())).getVolume());\r
+ assertEquals("3", ((IBook)(nameNoVolume.getNomenclaturalReference())).getEdition());\r
\r
//volume, edition\r
strNoVolume = "Abies alba Mill., Sp. Pl. ed. 3, 4(5): 455. 1987";\r
nameNoVolume = parser.parseReferencedName(strNoVolume, null, Rank.SPECIES());\r
assertFalse(nameNoVolume.hasProblem());\r
assertEquals(strNoVolume, nameNoVolume.getFullTitleCache());\r
- assertEquals("4(5)", ((Book)nameNoVolume.getNomenclaturalReference()).getVolume());\r
- assertEquals("3", ((Book)nameNoVolume.getNomenclaturalReference()).getEdition());\r
+ assertEquals("4(5)", ((IVolumeReference)(nameNoVolume.getNomenclaturalReference())).getVolume());\r
+ assertEquals("3", ((IBook)(nameNoVolume.getNomenclaturalReference())).getEdition());\r
\r
String strUnparsableInRef = "Abies alba Mill. in -er46: 455. 1987";\r
NonViralName<?> nameUnparsableInRef = parser.parseReferencedName(strUnparsableInRef, null, Rank.SPECIES());\r
assertEquals(strBookSection2NoComma, nameBookSection2.getFullTitleCache());\r
assertEquals(-1, nameBookSection2.getProblemStarts()); \r
assertEquals(-1, nameBookSection2.getProblemEnds());\r
- assertNull(((BookSection)nameBookSection2.getNomenclaturalReference()).getDatePublished().getStart());\r
- assertEquals("1905-1907", ((BookSection)nameBookSection2.getNomenclaturalReference()).getInBook().getDatePublished().getYear());\r
+ assertNull((nameBookSection2.getNomenclaturalReference()).getDatePublished().getStart());\r
+ assertEquals("1905-1907", ((IBookSection)nameBookSection2.getNomenclaturalReference()).getInBook().getDatePublished().getYear());\r
\r
\r
String strBookSection = "Hieracium vulgatum subsp. acuminatum (Jord.) Zahn in Schinz & Keller, Fl. Schweiz ed. 2, 2: 288. 1905";\r
assertEquals(strBookSection, nameBookSection.getFullTitleCache());\r
assertEquals(-1, nameBookSection.getProblemStarts()); \r
assertEquals(-1, nameBookSection.getProblemEnds());\r
- assertNull(((BookSection)nameBookSection.getNomenclaturalReference()).getInBook().getDatePublished().getStart());\r
- assertEquals("1905", ((BookSection)nameBookSection.getNomenclaturalReference()).getDatePublished().getYear());\r
+ assertNull(((IBookSection)nameBookSection.getNomenclaturalReference()).getInBook().getDatePublished().getStart());\r
+ assertEquals("1905", ((IBookSection)nameBookSection.getNomenclaturalReference()).getDatePublished().getYear());\r
\r
String strXXXs = "Abies alba, Soer der 1987";\r
NonViralName<?> problemName = parser.parseReferencedName(strXXXs, null, null);\r
testParsable = "Abies alba Mill. var. alba";\r
assertTrue("Autonym problem", isParsable(testParsable, NomenclaturalCode.ICBN));\r
\r
+ \r
+ testParsable = "Hieracium antarcticum d'Urv. in M\u00E9m. Soc. Linn. Paris 4: 608. 1826";\r
+// testParsable = "Hieracium antarcticum Urv. in M\u00E9m. Soc. Linn. Paris 4: 608. 1826";\r
+ assertTrue("Name with apostrophe is not parsable", isParsable(testParsable, NomenclaturalCode.ICBN));\r
+\r
+ testParsable = "Cichorium intybus subsp. glaucum (Hoffmanns. & Link) Tzvelev in Komarov, Fl. SSSR 29: 17. 1964";\r
+ assertTrue("Name is not parsable", isParsable(testParsable, NomenclaturalCode.ICBN));\r
}\r
\r
+ \r
+ \r
/**\r
* @param testParsable\r
* @param icbn\r
assertNotNull(name.getNomenclaturalReference());\r
INomenclaturalReference ref = (INomenclaturalReference)name.getNomenclaturalReference();\r
assertEquals("1987", ref.getYear());\r
- ReferenceBase refBase = (ReferenceBase)ref;\r
+ Reference refBase = (Reference)ref;\r
assertEquals("Sp. Pl.", refBase.getTitle());\r
}\r
+ \r
+ \r
+ @Test\r
+ public void testNeverEndingParsing(){\r
+ //some full titles result in never ending parsing process https://dev.e-taxonomy.eu/trac/ticket/1556\r
+\r
+ String irinaExample = "Milichiidae Sharp, 1899, Insects. Part II. Hymenopteracontinued (Tubulifera and Aculeata), Coleoptera, Strepsiptera, Lepidoptera, Diptera, Aphaniptera, Thysanoptera, Hemiptera, Anoplura 6: 504. 1899";\r
+// irinaExample = "Milichiidae Sharp, 1899, Insects. Part II. Uiuis Iuiui Hymenopteracontinued (Tubulifera and Aculeata), Coleoptera, Strepsiptera, Lepidoptera, Diptera, Aphaniptera, Thysanoptera, Hemiptera, Anoplura 6: 504. 1899";\r
+ NonViralName nvn = this.parser.parseReferencedName(irinaExample, NomenclaturalCode.ICZN, null);\r
+ int parsingProblem = nvn.getParsingProblem();\r
+ Assert.assertEquals("Name should have only rank warning", 1, parsingProblem);\r
+ Assert.assertEquals("Titlecache", "Milichiidae Sharp, 1899", nvn.getTitleCache());\r
+ Assert.assertEquals("If this line reached everything should be ok", "Milichiidae", nvn.getGenusOrUninomial());\r
+ \r
+ String anotherExample = "Scorzonera hispanica var. brevifolia Boiss. & Balansa in Boissier, Diagn. Pl. Orient., ser. 2 6: 119. 1859.";\r
+ nvn = this.parser.parseReferencedName(anotherExample, NomenclaturalCode.ICBN, null);\r
+ parsingProblem = nvn.getParsingProblem();\r
+ Assert.assertEquals("Problem should be 0", 0, parsingProblem);\r
+ Assert.assertEquals("Titlecache", "Scorzonera hispanica var. brevifolia Boiss. & Balansa", nvn.getTitleCache());\r
+ Assert.assertEquals("If this line reached everything should be ok", "Scorzonera", nvn.getGenusOrUninomial());\r
+ \r
+ String unparsable = "Taraxacum nevskii L., Trudy Bot. Inst. Nauk S.S.S.R., Ser. 1, Fl. Sist. Vyssh. Rast. 4: 293. 1937.";\r
+ String unparsableA = "Taraxacum nevskii L. in Trudy Bot. Inst. Nauk: 293. 1937.";\r
+ nvn = this.parser.parseReferencedName(unparsable, NomenclaturalCode.ICBN, null);\r
+ Assert.assertEquals("Titlecache", "Taraxacum nevskii L.", nvn.getTitleCache());\r
+ Assert.assertEquals("If this line reached everything should be ok", "Taraxacum", nvn.getGenusOrUninomial());\r
+ parsingProblem = nvn.getParsingProblem();\r
+ Assert.assertEquals("Name should no warnings or errors", 0, parsingProblem);\r
+ \r
+ String unparsable2 = "Hieracium pxxx Dahlst., Kongl. Svenska Vetensk. Acad. Handl. ser. 2, 26(3): 255. 1894";\r
+ String unparsable2A = "Hieracium pxxx Dahlst., Kongl Svenska Vetensk Acad Handl, 26: 255. 1894.";\r
+ nvn = this.parser.parseReferencedName(unparsable2, NomenclaturalCode.ICBN, null);\r
+ Assert.assertEquals("Titlecache", "Hieracium pxxx Dahlst.", nvn.getTitleCache());\r
+ Assert.assertEquals("If this line reached everything should be ok", "Hieracium", nvn.getGenusOrUninomial());\r
+ parsingProblem = nvn.getParsingProblem();\r
+ Assert.assertEquals("Name should no warnings or errors", 0, parsingProblem);\r
+ \r
+ \r
+ String again = "Adiantum emarginatum Bory ex. Willd., Species Plantarum, ed. 4,5,1: 449,450. 1810";\r
+ nvn = this.parser.parseReferencedName(again, NomenclaturalCode.ICBN, null);\r
+ Assert.assertEquals("Titlecache", "Adiantum emarginatum Bory ex Willd.", nvn.getTitleCache());\r
+ Assert.assertEquals("If this line reached everything should be ok", "Adiantum", nvn.getGenusOrUninomial());\r
+ \r
+ }\r
+ \r
+ @Test\r
+ public final void testSeriesPart(){\r
+ Pattern seriesPattern = Pattern.compile(NonViralNameParserImpl.pSeriesPart);\r
+ Matcher matcher = seriesPattern.matcher("ser. 2");\r
+ Assert.assertTrue("", matcher.matches());\r
+ }\r
\r
/**\r
* Test method for {@link eu.etaxonomy.cdm.strategy.parser.NonViralNameParserImpl#fullTeams(java.lang.String)}.\r