package org.gbif.checklistbank.utils;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class SciNameNormalizerTest {
@Test
public void testNormalize() throws Exception {
assertEquals("", SciNameNormalizer.normalize(""));
assertEquals("Abies", SciNameNormalizer.normalize("Abies "));
assertEquals("Abiies", SciNameNormalizer.normalize("Abiies "));
assertEquals("Abyes", SciNameNormalizer.normalize("Abyes "));
assertEquals("Abyes alba", SciNameNormalizer.normalize("Abyes albus"));
assertEquals("Abyes albieta", SciNameNormalizer.normalize("Abyes albieta"));
assertEquals("Abies albieta", SciNameNormalizer.normalize("Abies albijeta"));
assertEquals("Abies albieta", SciNameNormalizer.normalize("Abies albyeta"));
assertEquals("Abies alba", SciNameNormalizer.normalize(" \txAbies × ållbbus\t"));
assertEquals("Abies alba", SciNameNormalizer.normalize(" \txAbies × ållbbus\t"));
assertEquals("Rhachis taktos", SciNameNormalizer.normalize("Rhachis taktos"));
assertEquals("Hieracium sabauda", SciNameNormalizer.normalize("Hieracium sabaudum"));
assertEquals("Hieracium scorzoneraefolia", SciNameNormalizer.normalize("Hieracium scorzoneræfolium"));
assertEquals("Hieracium scorzonerifolia", SciNameNormalizer.normalize("Hieracium scorzonerifolium"));
assertEquals("Macrozamia platirachis", SciNameNormalizer.normalize("Macrozamia platyrachis"));
assertEquals("Macrozamia platirachis", SciNameNormalizer.normalize("Macrozamia platyrhachis"));
assertEquals("Cycas circinalis", SciNameNormalizer.normalize("Cycas circinalis"));
assertEquals("Cycas circinalis", SciNameNormalizer.normalize("Cycas circinnalis"));
assertEquals("Isolona perieri", SciNameNormalizer.normalize("Isolona perrieri"));
assertEquals("Isolona perieri", SciNameNormalizer.normalize("Isolona perrierii"));
assertEquals("Carex caioueti", SciNameNormalizer.normalize("Carex ×cayouettei"));
assertEquals("Platanus hispanica", SciNameNormalizer.normalize("Platanus x hispanica"));
// https://github.com/gbif/checklistbank/issues/7
assertEquals("Eragrostis browni", SciNameNormalizer.normalize("Eragrostis brownii"));
assertEquals("Eragrostis browni", SciNameNormalizer.normalize("Eragrostis brownei"));
}
@Test
public void testNormalizeAll() throws Exception {
assertEquals("", SciNameNormalizer.normalizeAll(""));
assertEquals("Abies", SciNameNormalizer.normalizeAll("Abies "));
assertEquals("Abies", SciNameNormalizer.normalizeAll("Abiies "));
assertEquals("Abies", SciNameNormalizer.normalizeAll("Abyes "));
assertEquals("Abies alba", SciNameNormalizer.normalizeAll("Abyes albus"));
assertEquals("Abies albieta", SciNameNormalizer.normalizeAll("Abyes albieta"));
assertEquals("Abies albieta", SciNameNormalizer.normalizeAll("Abies albijeta"));
assertEquals("Abies albieta", SciNameNormalizer.normalizeAll("Abies albyeta"));
assertEquals("Abies alba", SciNameNormalizer.normalizeAll(" \txAbies × ållbbus\t"));
assertEquals("Abies alba", SciNameNormalizer.normalizeAll(" \txAbies × ållbbus\t"));
assertEquals("Rachis taktos", SciNameNormalizer.normalizeAll("Rhachis taktos"));
assertEquals("Hieracium sabauda", SciNameNormalizer.normalizeAll("Hieracium sabaudum"));
assertEquals("Hieracium scorzoneraefolia", SciNameNormalizer.normalizeAll("Hieracium scorzoneræfolium"));
assertEquals("Hieracium scorzonerifolia", SciNameNormalizer.normalizeAll("Hieracium scorzonerifolium"));
assertEquals("Macrozamia platirachis", SciNameNormalizer.normalizeAll("Macrozamia platyrachis"));
assertEquals("Macrozamia platirachis", SciNameNormalizer.normalizeAll("Macrozamia platyrhachis"));
assertEquals("Cicas circinalis", SciNameNormalizer.normalizeAll("Cycas circinalis"));
assertEquals("Cicas circinalis", SciNameNormalizer.normalizeAll("Cycas circinnalis"));
assertEquals("Isolona perieri", SciNameNormalizer.normalizeAll("Isolona perrieri"));
assertEquals("Isolona perieri", SciNameNormalizer.normalizeAll("Isolona perrierii"));
assertEquals("Carex caioueti", SciNameNormalizer.normalizeAll("Carex ×cayouettei"));
assertEquals("Platanus hispanica", SciNameNormalizer.normalizeAll("Platanus x hispanica"));
// https://github.com/gbif/checklistbank/issues/7
assertEquals("Eragrostis browni", SciNameNormalizer.normalizeAll("Eragrostis brownii"));
assertEquals("Eragrostis browni", SciNameNormalizer.normalizeAll("Eragrostis brownei"));
}
@Test
public void testHybridCross() throws Exception {
assertEquals("xcayouettei", SciNameNormalizer.normalize("xcayouettei"));
assertEquals("cayouettei", SciNameNormalizer.normalize("×cayouettei"));
assertEquals("Carex xcaioueti", SciNameNormalizer.normalize("Carex xcayouettei"));
assertEquals("Carex caioueti", SciNameNormalizer.normalize("Carex ×cayouettei"));
assertEquals("Carex caioueti", SciNameNormalizer.normalize("×Carex cayouettei"));
assertEquals("Carex xcaioueti", SciNameNormalizer.normalize("xCarex xcayouettei"));
assertEquals("Carex caioueti", SciNameNormalizer.normalize("XCarex cayouettei"));
assertEquals("Carex caioueti", SciNameNormalizer.normalize("xCarex ×cayouettei"));
assertEquals("Platanus hispanica", SciNameNormalizer.normalize("Platanus x hispanica"));
}
@Test
public void testNonAscii() throws Exception {
assertEquals("Cem Andrexi", SciNameNormalizer.normalize("Çem Ándrexï"));
assertEquals("SOEZsoezY¥µAAAAAAAECEEEEIIIIDNOOOOOOUUUUYssaaaaaaaeceeeeiiiidnoooooouuuuyy", SciNameNormalizer.normalize("ŠŒŽšœžŸ¥µÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿ"));
}
@Test
public void testEpithetStemming() throws Exception {
assertEquals("", SciNameNormalizer.stemEpithet(""));
assertEquals("alba", SciNameNormalizer.stemEpithet("alba"));
assertEquals("alba", SciNameNormalizer.stemEpithet("albus"));
assertEquals("alba", SciNameNormalizer.stemEpithet("albon"));
assertEquals("alba", SciNameNormalizer.stemEpithet("album"));
assertEquals("allba", SciNameNormalizer.stemEpithet("allbus"));
assertEquals("alaba", SciNameNormalizer.stemEpithet("alaba"));
assertEquals("alaa", SciNameNormalizer.stemEpithet("alaus"));
assertEquals("alaa", SciNameNormalizer.stemEpithet("alaa"));
}
}