Replace String.levenshtein_distance/2 with String.jaro_distance/2
This commit is contained in:
@@ -517,39 +517,30 @@ defmodule StringTest do
|
||||
assert_raise ArgumentError, fn -> String.to_float(three.()) end
|
||||
end
|
||||
|
||||
test :levenshtein_distance do
|
||||
# With empty strings
|
||||
assert String.levenshtein_distance( "", "") == 0
|
||||
assert String.levenshtein_distance( "a", "") == 1
|
||||
assert String.levenshtein_distance( "", "a") == 1
|
||||
assert String.levenshtein_distance("abc", "") == 3
|
||||
assert String.levenshtein_distance( "", "abc") == 3
|
||||
# With equal strings
|
||||
assert String.levenshtein_distance( "a", "a") == 0
|
||||
assert String.levenshtein_distance("abc", "abc") == 0
|
||||
assert String.levenshtein_distance( "", "a") == 1
|
||||
# Only with inserts
|
||||
assert String.levenshtein_distance( "a", "ab") == 1
|
||||
assert String.levenshtein_distance( "b", "ab") == 1
|
||||
assert String.levenshtein_distance( "ac", "abc") == 1
|
||||
assert String.levenshtein_distance("abcdefg", "xabxcdxxefxgx") == 6
|
||||
# Only with deletions
|
||||
assert String.levenshtein_distance( "a", "") == 1
|
||||
assert String.levenshtein_distance( "ab", "a") == 1
|
||||
assert String.levenshtein_distance( "ab", "b") == 1
|
||||
assert String.levenshtein_distance("abc", "ac") == 1
|
||||
assert String.levenshtein_distance("xabxcdxxefxgx", "abcdefg") == 6
|
||||
# Only with substitutions
|
||||
assert String.levenshtein_distance( "a", "b") == 1
|
||||
assert String.levenshtein_distance( "ab", "ac") == 1
|
||||
assert String.levenshtein_distance( "ac", "bc") == 1
|
||||
assert String.levenshtein_distance("abc", "axc") == 1
|
||||
assert String.levenshtein_distance("xabxcdxxefxgx", "1ab2cd34ef5g6") == 6
|
||||
# With different operations
|
||||
assert String.levenshtein_distance("example", "samples") == 3
|
||||
assert String.levenshtein_distance("sturgeon", "urgently") == 6
|
||||
assert String.levenshtein_distance("levenshtein", "frankenstein") == 6
|
||||
assert String.levenshtein_distance("distance", "difference") == 5
|
||||
assert String.levenshtein_distance("erlang was neat", "elixir is great") == 9
|
||||
test :jaro_distance do
|
||||
assert String.jaro_distance("same", "same") == 1.0
|
||||
assert String.jaro_distance("any", "") == 0.0
|
||||
assert String.jaro_distance("", "any") == 0.0
|
||||
assert String.jaro_distance("martha", "marhta") == 0.9444444444444445
|
||||
assert String.jaro_distance("martha", "marhha") == 0.888888888888889
|
||||
assert String.jaro_distance("marhha", "martha") == 0.888888888888889
|
||||
assert String.jaro_distance("dwayne", "duane") == 0.8222222222222223
|
||||
assert String.jaro_distance("dixon", "dicksonx") == 0.7666666666666666
|
||||
assert String.jaro_distance("xdicksonx", "dixon") == 0.7851851851851852
|
||||
assert String.jaro_distance("shackleford", "shackelford") == 0.9696969696969697
|
||||
assert String.jaro_distance("dunningham", "cunnigham") == 0.8962962962962964
|
||||
assert String.jaro_distance("nichleson", "nichulson") == 0.9259259259259259
|
||||
assert String.jaro_distance("jones", "johnson") == 0.7904761904761904
|
||||
assert String.jaro_distance("massey", "massie") == 0.888888888888889
|
||||
assert String.jaro_distance("abroms", "abrams") == 0.888888888888889
|
||||
assert String.jaro_distance("hardin", "martinez") == 0.7222222222222222
|
||||
assert String.jaro_distance("itman", "smith") == 0.4666666666666666
|
||||
assert String.jaro_distance("jeraldine", "geraldine") == 0.9259259259259259
|
||||
assert String.jaro_distance("michelle", "michael") == 0.8690476190476191
|
||||
assert String.jaro_distance("julies", "julius") == 0.888888888888889
|
||||
assert String.jaro_distance("tanya", "tonya") == 0.8666666666666667
|
||||
assert String.jaro_distance("sean", "susan") == 0.7833333333333333
|
||||
assert String.jaro_distance("jon", "john") == 0.9166666666666666
|
||||
assert String.jaro_distance("jon", "jan") == 0.7777777777777777
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user