package org.gbif.nub.lookup.similarity;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class ScientificNameSimilarityTest {
@Test
public void testSimilarities() throws Exception {
ScientificNameSimilarity sns = new ScientificNameSimilarity();
// The × in these ensures they don't match the shortcut .equals test.
assertEquals(100d, sns.getSimilarity("A", "×A"), 0.01d);
assertEquals(100d, sns.getSimilarity("Aa", "×Aa"), 0.01d);
assertEquals(100d, sns.getSimilarity("Io", "×Io"), 0.01d);
assertEquals(100d, sns.getSimilarity("Aus", "×Aus"), 0.01d);
assertEquals(100d, sns.getSimilarity("Ausbus", "×Ausbus"), 0.01d);
assertEquals(0d, sns.getSimilarity("Aus", "×Ausausaus"), 0.01d);
assertEquals(0d, sns.getSimilarity("Ausausaus", "×Aus"), 0.01d);
assertEquals(100d, sns.getSimilarity("abcdefg", "abcdefg"), 0.01d);
assertEquals(80d, sns.getSimilarity("abcdefg", "amcdefg"), 0.01d);
assertEquals(80d, sns.getSimilarity("abcdefg", "abcdeg"), 0.01d);
assertEquals(0d, sns.getSimilarity("abcdefg", "zyxvwu"), 0.01d);
assertEquals(0d, sns.getSimilarity("abcdefg", "amncdefg"), 0.01d);
assertEquals(0d, sns.getSimilarity("abcdefg", "adefg"), 0.01d);
assertEquals(0d, sns.getSimilarity("abcdefg", "aabbccddeeffgg"), 0.01d);
assertEquals(100d, sns.getSimilarity("Aka abcdefg", "Aka aabbccddeeffgg"), 0.01d);
assertEquals(100d, sns.getSimilarity("äöüæøåœđł", "aouaeoaoedl"), 0.01d);
assertEquals(100d, sns.getSimilarity("xAus", "Aus"), 0.01d);
assertEquals(100d, sns.getSimilarity("x Aus", "Aus"), 0.01d);
assertEquals(100d, sns.getSimilarity("×Aus", "Aus"), 0.01d);
assertEquals(100d, sns.getSimilarity("× Aus", "Aus"), 0.01d);
assertEquals(100d, sns.getSimilarity("Abies alba", "Abies alba"), 0.01d);
assertEquals(100d, sns.getSimilarity("Abies alba", "Abies albus"), 0.01d);
assertEquals(5d, sns.getSimilarity("Abies alba", "Abies olba"), 0.01d);
assertEquals(95d, sns.getSimilarity("Abies alba", "Abies alta"), 0.01d);
assertEquals(100d, sns.getSimilarity("Abies ama", "Abies amus"), 0.01d);
assertEquals(100d, sns.getSimilarity("Abies ama", "Abies amus"), 0.01d);
assertEquals(100d, sns.getSimilarity("Abies ama", "Abies amum"), 0.01d);
assertEquals(95d, sns.getSimilarity("Linaria pedunculata", "Linaria pedinculata"), 0.01d);
assertEquals(90d, sns.getSimilarity("Linaria pedunculata", "Lunaria pedunculata"), 0.01d);
assertEquals(85d, sns.getSimilarity("Linaria pedunculata", "Linariya pedonculata"), 0.01d);
assertEquals(93.33d, sns.getSimilarity("Linaria pedunculata vulgaris", "Lunaria pedunculata vulgaris"), 0.01d);
assertEquals(5d, sns.getSimilarity("Linaria pedunculata vulgaris", "Linaria pedunculata vandalis"), 0.01d);
assertEquals(5d, sns.getSimilarity("Oreina elegans", "Orfelia elegans"), 0.01d);
assertEquals(5d, sns.getSimilarity("Lucina scotti", "Lucina wattsi"), 0.01d);
assertEquals(0d, sns.getSimilarity("scotti", "wattsi"), 0.01d);
}
}