package org.gbif.nub.lookup.similarity; import org.junit.Test; import static org.junit.Assert.assertEquals; public class DistanceUtilsTest { final double delta = 0.01d; @Test public void testConvertEditDistanceToSimilarity() throws Exception { assertEquals(100d, DistanceUtils.convertEditDistanceToSimilarity(0, "1234567890", "1234567890"), delta); assertEquals(67.0d, DistanceUtils.convertEditDistanceToSimilarity(2, "12345678", "12345678"), delta); assertEquals(42.0d, DistanceUtils.convertEditDistanceToSimilarity(3, "12345678", "12345678"), delta); assertEquals(86.0d, DistanceUtils.convertEditDistanceToSimilarity(1, "1234567", "123456789"), delta); // long strings make no difference assertEquals(90.0d, DistanceUtils.convertEditDistanceToSimilarity(1, "12345678901234", "1234567890x234"), delta); assertEquals(74.0d, DistanceUtils.convertEditDistanceToSimilarity(2, "12345678901234", "1234567890x234"), delta); assertEquals(53.0d, DistanceUtils.convertEditDistanceToSimilarity(3, "12345678901234", "1234567890x234"), delta); // doesnt make sense, but an edit distance of zero is always 100% assertEquals(100d, DistanceUtils.convertEditDistanceToSimilarity(0, "12", "123456789"), delta); assertEquals(0d, DistanceUtils.convertEditDistanceToSimilarity(10, "1234567", "123456789"), delta); } }