\r
package eu.etaxonomy.cdm.strategy.parser;\r
\r
-import static org.junit.Assert.*;\r
+import static org.junit.Assert.assertEquals;\r
+import static org.junit.Assert.assertFalse;\r
+import static org.junit.Assert.assertNotNull;\r
+import static org.junit.Assert.assertNull;\r
+import static org.junit.Assert.assertTrue;\r
\r
import java.lang.reflect.InvocationTargetException;\r
import java.lang.reflect.Method;\r
import eu.etaxonomy.cdm.model.reference.BookSection;\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.StrictReferenceBase;\r
-import eu.etaxonomy.cdm.strategy.parser.INonViralNameParser;\r
-import eu.etaxonomy.cdm.strategy.parser.NonViralNameParserImpl;\r
\r
/**\r
* @author a.mueller\r
}\r
\r
/**\r
- * Test method for {@link eu.etaxonomy.cdm.strategy.parser.NonViralNameParserImpl#parseFullReference(NonViralName, java.lang.String, eu.etaxonomy.cdm.model.name.Rank, boolean)(, )}.\r
+ * Test method for {@link eu.etaxonomy.cdm.strategy.parser.NonViralNameParserImpl#parseReferencedName(NonViralName, java.lang.String, eu.etaxonomy.cdm.model.name.Rank, boolean)(, )}.\r
*/\r
@Test\r
- public final void testParseFullReference() {\r
+ public final void testParseReferencedName() {\r
try {\r
- Method parseMethod = parser.getClass().getDeclaredMethod("parseFullReference", String.class, NomenclaturalCode.class, Rank.class);\r
+ Method parseMethod = parser.getClass().getDeclaredMethod("parseReferencedName", String.class, NomenclaturalCode.class, Rank.class);\r
testName_StringNomcodeRank(parseMethod);\r
} catch (Exception e) {\r
e.printStackTrace();\r
assertTrue(false);\r
}\r
\r
-\r
+ //null\r
+ String strNull = null;\r
+ NonViralName<?> nameNull = parser.parseReferencedName(strNull, null, Rank.SPECIES());\r
+ assertNull(nameNull);\r
+ \r
+ //Empty\r
+ String strEmpty = "";\r
+ NonViralName<?> nameEmpty = parser.parseReferencedName(strEmpty, null, Rank.SPECIES());\r
+ assertFalse(nameEmpty.hasProblem());\r
+ assertEquals(strEmpty, nameEmpty.getFullTitleCache());\r
+ assertNull(nameEmpty.getNomenclaturalMicroReference());\r
+ \r
\r
//Book\r
String fullReference = "Abies alba Mill., Sp. Pl. 4: 455. 1987.";\r
- NonViralName<?> name1 = parser.parseFullReference(fullReference, null, Rank.SPECIES());\r
+ NonViralName<?> name1 = parser.parseReferencedName(fullReference, null, Rank.SPECIES());\r
assertFullRefStandard(name1);\r
assertTrue(name1.getNomenclaturalReference() instanceof Book);\r
\r
//Book Section\r
fullReference = "Abies alba Mill. in Otto, Sp. Pl. 4(6): 455. 1987";\r
- NonViralName<?> name2 = parser.parseFullReference(fullReference + ".", null, Rank.SPECIES());\r
+ NonViralName<?> name2 = parser.parseReferencedName(fullReference + ".", null, Rank.SPECIES());\r
assertFullRefNameStandard(name2);\r
//assertEquals(fullReference, name2.getFullTitleCache());\r
assertFalse(name2.hasProblem());\r
\r
//Article\r
fullReference = "Abies alba Mill. in Sp. Pl. 4(6): 455. 1987";\r
- NonViralName<?> name3 = parser.parseFullReference(fullReference, null, Rank.SPECIES());\r
+ NonViralName<?> name3 = parser.parseReferencedName(fullReference, null, Rank.SPECIES());\r
assertFullRefNameStandard(name3);\r
assertEquals(fullReference, name3.getFullTitleCache());\r
assertFalse(name3.hasProblem());\r
String fullReferenceWithoutYear = "Abies alba Mill. in " + journalTitle + " 4(6): 455.";\r
fullReference = fullReferenceWithoutYear + yearPart;\r
String fullReferenceWithEnd = fullReference + ".";\r
- NonViralName<?> name4 = parser.parseFullReference(fullReferenceWithEnd, null, Rank.SPECIES());\r
+ NonViralName<?> name4 = parser.parseReferencedName(fullReferenceWithEnd, null, Rank.SPECIES());\r
assertFalse(name4.hasProblem());\r
assertFullRefNameStandard(name4);\r
assertEquals(fullReferenceWithoutYear + " " + parsedYear, name4.getFullTitleCache());\r
\r
//Zoo name\r
String strNotParsableZoo = "Abies alba M., 1923, Sp. P. xxwer4352, nom. inval.";\r
- ZoologicalName nameZooRefNotParsabel = (ZoologicalName)parser.parseFullReference(strNotParsableZoo, null, null);\r
+ ZoologicalName nameZooRefNotParsabel = (ZoologicalName)parser.parseReferencedName(strNotParsableZoo, null, null);\r
assertTrue(nameZooRefNotParsabel.hasProblem());\r
+ assertEquals(21, nameZooRefNotParsabel.getProblemStarts());\r
+ assertEquals(37, nameZooRefNotParsabel.getProblemEnds());\r
assertTrue(nameZooRefNotParsabel.getNomenclaturalReference().hasProblem());\r
assertEquals(NomenclaturalCode.ICZN(), nameZooRefNotParsabel.getNomenclaturalCode());\r
assertEquals(Integer.valueOf(1923), nameZooRefNotParsabel.getPublicationYear());\r
\r
//Special MicroRefs\r
String strSpecDetail1 = "Abies alba Mill. in Sp. Pl. 4(6): [455]. 1987";\r
- NonViralName<?> nameSpecDet1 = parser.parseFullReference(strSpecDetail1 + ".", null, Rank.SPECIES());\r
+ NonViralName<?> nameSpecDet1 = parser.parseReferencedName(strSpecDetail1 + ".", null, Rank.SPECIES());\r
assertFalse(nameSpecDet1.hasProblem());\r
assertEquals(strSpecDetail1, nameSpecDet1.getFullTitleCache());\r
assertEquals("[455]", nameSpecDet1.getNomenclaturalMicroReference());\r
\r
//Special MicroRefs\r
String strSpecDetail2 = "Abies alba Mill. in Sp. Pl. 4(6): couv. 2. 1987";\r
- NonViralName<?> nameSpecDet2 = parser.parseFullReference(strSpecDetail2 + ".", null, Rank.SPECIES());\r
+ NonViralName<?> nameSpecDet2 = parser.parseReferencedName(strSpecDetail2 + ".", null, Rank.SPECIES());\r
assertFalse(nameSpecDet2.hasProblem());\r
assertEquals(strSpecDetail2, nameSpecDet2.getFullTitleCache());\r
assertEquals("couv. 2", nameSpecDet2.getNomenclaturalMicroReference());\r
\r
//Special MicroRefs\r
String strSpecDetail3 = "Abies alba Mill. in Sp. Pl. 4(6): fig. 455. 1987";\r
- NonViralName<?> nameSpecDet3 = parser.parseFullReference(strSpecDetail3 + ".", null, Rank.SPECIES());\r
+ NonViralName<?> nameSpecDet3 = parser.parseReferencedName(strSpecDetail3 + ".", null, Rank.SPECIES());\r
assertFalse(nameSpecDet3.hasProblem());\r
assertEquals(strSpecDetail3, nameSpecDet3.getFullTitleCache());\r
assertEquals("fig. 455", nameSpecDet3.getNomenclaturalMicroReference());\r
//Special MicroRefs\r
String strSpecDetail4 = "Abies alba Mill. in Sp. Pl. 4(6): fig. 455-567. 1987";\r
fullReference = strSpecDetail4 + ".";\r
- NonViralName<?> nameSpecDet4 = parser.parseFullReference(fullReference, null, Rank.SPECIES());\r
+ NonViralName<?> nameSpecDet4 = parser.parseReferencedName(fullReference, null, Rank.SPECIES());\r
assertFalse(nameSpecDet4.hasProblem());\r
assertEquals(strSpecDetail4, nameSpecDet4.getFullTitleCache());\r
assertEquals("fig. 455-567", nameSpecDet4.getNomenclaturalMicroReference());\r
//Special MicroRefs\r
String strSpecDetail5 = "Abies alba Mill. in Sp. Pl. 4(6): Gard n° 4. 1987";\r
fullReference = strSpecDetail5 + ".";\r
- NonViralName<?> nameSpecDet5 = parser.parseFullReference(fullReference, null, Rank.SPECIES());\r
+ NonViralName<?> nameSpecDet5 = parser.parseReferencedName(fullReference, null, Rank.SPECIES());\r
assertFalse(nameSpecDet5.hasProblem());\r
assertEquals(strSpecDetail5, nameSpecDet5.getFullTitleCache());\r
assertEquals("Gard n° 4", nameSpecDet5.getNomenclaturalMicroReference());\r
//Special MicroRefs\r
String strSpecDetail6 = "Abies alba Mill. in Sp. Pl. 4(6): 455a. 1987";\r
fullReference = strSpecDetail6 + ".";\r
- NonViralName<?> nameSpecDet6 = parser.parseFullReference(fullReference, null, Rank.SPECIES());\r
+ NonViralName<?> nameSpecDet6 = parser.parseReferencedName(fullReference, null, Rank.SPECIES());\r
assertFalse(nameSpecDet6.hasProblem());\r
assertEquals(strSpecDetail6, nameSpecDet6.getFullTitleCache());\r
assertEquals("455a", nameSpecDet6.getNomenclaturalMicroReference());\r
//Special MicroRefs\r
String strSpecDetail7 = "Abies alba Mill. in Sp. Pl. 4(6): pp.455-457. 1987";\r
fullReference = strSpecDetail7 + ".";\r
- NonViralName<?> nameSpecDet7 = parser.parseFullReference(fullReference, null, Rank.SPECIES());\r
+ NonViralName<?> nameSpecDet7 = parser.parseReferencedName(fullReference, null, Rank.SPECIES());\r
assertFalse(nameSpecDet7.hasProblem());\r
assertEquals(strSpecDetail7, nameSpecDet7.getFullTitleCache());\r
assertEquals("pp.455-457", nameSpecDet7.getNomenclaturalMicroReference());\r
\r
//Special MicroRefs\r
String strSpecDetail8 = "Abies alba Mill. in Sp. Pl. 4(6): ppp.455-457. 1987";\r
- NonViralName<?> nameSpecDet8 = parser.parseFullReference(strSpecDetail8, null, Rank.SPECIES());\r
+ NonViralName<?> nameSpecDet8 = parser.parseReferencedName(strSpecDetail8, null, Rank.SPECIES());\r
assertTrue(nameSpecDet8.hasProblem());\r
+ assertEquals(20, nameSpecDet8.getProblemStarts()); //TODO better start behind :\r
+ assertEquals(51, nameSpecDet8.getProblemEnds()); //TODO better stop after -457\r
+ \r
\r
//Special MicroRefs\r
String strSpecDetail9 = "Abies alba Mill. in Sp. Pl. 4(6): pp. 455 - 457. 1987";\r
- NonViralName<?> nameSpecDet9 = parser.parseFullReference(strSpecDetail9, null, Rank.SPECIES());\r
+ NonViralName<?> nameSpecDet9 = parser.parseReferencedName(strSpecDetail9, null, Rank.SPECIES());\r
assertFalse(nameSpecDet9.hasProblem());\r
assertEquals(strSpecDetail9, nameSpecDet9.getFullTitleCache());\r
assertEquals("pp. 455 - 457", nameSpecDet9.getNomenclaturalMicroReference());\r
\r
//Special MicroRefs\r
String strSpecDetail10 = "Abies alba Mill. in Sp. Pl. 4(6): p 455. 1987";\r
- NonViralName<?> nameSpecDet10 = parser.parseFullReference(strSpecDetail10, null, Rank.SPECIES());\r
+ NonViralName<?> nameSpecDet10 = parser.parseReferencedName(strSpecDetail10, null, Rank.SPECIES());\r
assertFalse(nameSpecDet10.hasProblem());\r
assertEquals(strSpecDetail10, nameSpecDet10.getFullTitleCache());\r
assertEquals("p 455", nameSpecDet10.getNomenclaturalMicroReference());\r
\r
//Special MicroRefs\r
String strSpecDetail11 = "Abies alba Mill. in Sp. Pl. 4(6): p. 455 - 457. 1987";\r
- NonViralName<?> nameSpecDet11 = parser.parseFullReference(strSpecDetail11, null, Rank.SPECIES());\r
+ NonViralName<?> nameSpecDet11 = parser.parseReferencedName(strSpecDetail11, null, Rank.SPECIES());\r
assertTrue(nameSpecDet11.hasProblem());\r
+ assertEquals(20, nameSpecDet8.getProblemStarts()); //TODO better start behind :\r
+ assertEquals(51, nameSpecDet8.getProblemEnds()); //TODO better stop after - 457\r
+ \r
\r
//no volume, no edition\r
String strNoVolume = "Abies alba Mill., Sp. Pl.: 455. 1987";\r
- NonViralName<?> nameNoVolume = parser.parseFullReference(strNoVolume, 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
\r
//volume, no edition\r
strNoVolume = "Abies alba Mill., Sp. Pl. 2: 455. 1987";\r
- nameNoVolume = parser.parseFullReference(strNoVolume, null, Rank.SPECIES());\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
\r
//no volume, edition\r
strNoVolume = "Abies alba Mill., Sp. Pl. ed. 3: 455. 1987";\r
- nameNoVolume = parser.parseFullReference(strNoVolume, null, Rank.SPECIES());\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
\r
//volume, edition\r
strNoVolume = "Abies alba Mill., Sp. Pl. ed. 3, 4(5): 455. 1987";\r
- nameNoVolume = parser.parseFullReference(strNoVolume, null, Rank.SPECIES());\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
\r
+ String strUnparsableInRef = "Abies alba Mill. in -er46: 455. 1987";\r
+ NonViralName<?> nameUnparsableInRef = parser.parseReferencedName(strUnparsableInRef, null, Rank.SPECIES());\r
+ assertTrue(nameUnparsableInRef.hasProblem());\r
+ assertEquals(strUnparsableInRef, nameUnparsableInRef.getFullTitleCache());\r
+ assertEquals(20, nameUnparsableInRef.getProblemStarts()); \r
+ assertEquals(25, nameUnparsableInRef.getProblemEnds()); \r
+ \r
+ \r
+ //volume, edition\r
+ String strNoSeparator = "Abies alba Mill. Sp. Pl. ed. 3, 4(5): 455. 1987";\r
+ NonViralName<?> nameNoSeparator = parser.parseReferencedName(strNoSeparator, NomenclaturalCode.ICBN(), Rank.SPECIES());\r
+ assertTrue(nameNoSeparator.hasProblem());\r
+ assertEquals(strNoSeparator, nameNoSeparator.getFullTitleCache());\r
+ assertEquals(10, nameNoSeparator.getProblemStarts()); //TODO better start behind Mill. (?)\r
+ assertEquals(47, nameNoSeparator.getProblemEnds()); //TODO better stop before :\r
+ \r
+ String strUnparsableInRef2 = "Hieracium pepsicum L., My Bookkkk 1. 1903";\r
+ NonViralName<?> nameUnparsableInRef2 = parser.parseReferencedName(strUnparsableInRef2, null, Rank.SPECIES());\r
+ assertTrue(nameUnparsableInRef2.hasProblem());\r
+ assertEquals(strUnparsableInRef2, nameUnparsableInRef2.getFullTitleCache());\r
+ assertEquals(23, nameUnparsableInRef2.getProblemStarts()); \r
+ assertEquals(41, nameUnparsableInRef2.getProblemEnds()); \r
+ \r
+ \r
+ String strUnparsableInRef3 = "Hieracium pespcim N., My Bookkkk 1. 1902";\r
+ NonViralName<?> nameUnparsableInRef3 = parser.parseReferencedName(strUnparsableInRef3, null, null);\r
+ assertTrue(nameUnparsableInRef3.hasProblem());\r
+ assertEquals(strUnparsableInRef3, nameUnparsableInRef3.getFullTitleCache());\r
+ assertEquals(22, nameUnparsableInRef3.getProblemStarts()); \r
+ assertEquals(40, nameUnparsableInRef3.getProblemEnds()); \r
+ \r
+ String strUnparsableInRef4 = "Hieracium pepsicum (Hsllreterto) L., My Bookkkk 1. 1903";\r
+ NonViralName<?> nameUnparsableInRef4 = parser.parseReferencedName(strUnparsableInRef4, null, null);\r
+ assertTrue(nameUnparsableInRef4.hasProblem());\r
+ assertEquals(strUnparsableInRef4, nameUnparsableInRef4.getFullTitleCache());\r
+ assertEquals(37, nameUnparsableInRef4.getProblemStarts()); \r
+ assertEquals(55, nameUnparsableInRef4.getProblemEnds()); \r
+ \r
+ String strSameName = "Hieracium pepcum (Hsllreterto) L., My Bokkk 1. 1903";\r
+ NonViralName<?> nameSameName = nameUnparsableInRef4;\r
+ parser.parseReferencedName(nameSameName, strSameName, null, true);\r
+ assertTrue(nameSameName.hasProblem());\r
+ assertEquals(strSameName, nameSameName.getFullTitleCache());\r
+ assertEquals(35, nameSameName.getProblemStarts()); \r
+ assertEquals(51, nameSameName.getProblemEnds()); \r
+ \r
+ \r
+ \r
}\r
\r
private void assertFullRefNameStandard(NonViralName<?> name){\r