forked from mirrors/nixpkgs
lib/tests: Add tests for levenshtein functions
This commit is contained in:
parent
975a1ae339
commit
f8c1aee5da
|
@ -913,4 +913,156 @@ runTests {
|
|||
};
|
||||
};
|
||||
|
||||
## Levenshtein distance functions and co.
|
||||
testCommonPrefixLengthEmpty = {
|
||||
expr = strings.commonPrefixLength "" "hello";
|
||||
expected = 0;
|
||||
};
|
||||
|
||||
testCommonPrefixLengthSame = {
|
||||
expr = strings.commonPrefixLength "hello" "hello";
|
||||
expected = 5;
|
||||
};
|
||||
|
||||
testCommonPrefixLengthDiffering = {
|
||||
expr = strings.commonPrefixLength "hello" "hey";
|
||||
expected = 2;
|
||||
};
|
||||
|
||||
testCommonSuffixLengthEmpty = {
|
||||
expr = strings.commonSuffixLength "" "hello";
|
||||
expected = 0;
|
||||
};
|
||||
|
||||
testCommonSuffixLengthSame = {
|
||||
expr = strings.commonSuffixLength "hello" "hello";
|
||||
expected = 5;
|
||||
};
|
||||
|
||||
testCommonSuffixLengthDiffering = {
|
||||
expr = strings.commonSuffixLength "test" "rest";
|
||||
expected = 3;
|
||||
};
|
||||
|
||||
testLevenshteinEmpty = {
|
||||
expr = strings.levenshtein "" "";
|
||||
expected = 0;
|
||||
};
|
||||
|
||||
testLevenshteinOnlyAdd = {
|
||||
expr = strings.levenshtein "" "hello there";
|
||||
expected = 11;
|
||||
};
|
||||
|
||||
testLevenshteinOnlyRemove = {
|
||||
expr = strings.levenshtein "hello there" "";
|
||||
expected = 11;
|
||||
};
|
||||
|
||||
testLevenshteinOnlyTransform = {
|
||||
expr = strings.levenshtein "abcdef" "ghijkl";
|
||||
expected = 6;
|
||||
};
|
||||
|
||||
testLevenshteinMixed = {
|
||||
expr = strings.levenshtein "kitchen" "sitting";
|
||||
expected = 5;
|
||||
};
|
||||
|
||||
testLevenshteinAtMostZeroFalse = {
|
||||
expr = strings.levenshteinAtMost 0 "foo" "boo";
|
||||
expected = false;
|
||||
};
|
||||
|
||||
testLevenshteinAtMostZeroTrue = {
|
||||
expr = strings.levenshteinAtMost 0 "foo" "foo";
|
||||
expected = true;
|
||||
};
|
||||
|
||||
testLevenshteinAtMostOneFalse = {
|
||||
expr = strings.levenshteinAtMost 1 "car" "ct";
|
||||
expected = false;
|
||||
};
|
||||
|
||||
testLevenshteinAtMostOneTrue = {
|
||||
expr = strings.levenshteinAtMost 1 "car" "cr";
|
||||
expected = true;
|
||||
};
|
||||
|
||||
# We test levenshteinAtMost 2 particularly well because it uses a complicated
|
||||
# implementation
|
||||
testLevenshteinAtMostTwoIsEmpty = {
|
||||
expr = strings.levenshteinAtMost 2 "" "";
|
||||
expected = true;
|
||||
};
|
||||
|
||||
testLevenshteinAtMostTwoIsZero = {
|
||||
expr = strings.levenshteinAtMost 2 "abcdef" "abcdef";
|
||||
expected = true;
|
||||
};
|
||||
|
||||
testLevenshteinAtMostTwoIsOne = {
|
||||
expr = strings.levenshteinAtMost 2 "abcdef" "abddef";
|
||||
expected = true;
|
||||
};
|
||||
|
||||
testLevenshteinAtMostTwoDiff0False = {
|
||||
expr = strings.levenshteinAtMost 2 "abcdef" "aczyef";
|
||||
expected = false;
|
||||
};
|
||||
|
||||
testLevenshteinAtMostTwoDiff0Outer = {
|
||||
expr = strings.levenshteinAtMost 2 "abcdef" "zbcdez";
|
||||
expected = true;
|
||||
};
|
||||
|
||||
testLevenshteinAtMostTwoDiff0DelLeft = {
|
||||
expr = strings.levenshteinAtMost 2 "abcdef" "bcdefz";
|
||||
expected = true;
|
||||
};
|
||||
|
||||
testLevenshteinAtMostTwoDiff0DelRight = {
|
||||
expr = strings.levenshteinAtMost 2 "abcdef" "zabcde";
|
||||
expected = true;
|
||||
};
|
||||
|
||||
testLevenshteinAtMostTwoDiff1False = {
|
||||
expr = strings.levenshteinAtMost 2 "abcdef" "bddez";
|
||||
expected = false;
|
||||
};
|
||||
|
||||
testLevenshteinAtMostTwoDiff1DelLeft = {
|
||||
expr = strings.levenshteinAtMost 2 "abcdef" "bcdez";
|
||||
expected = true;
|
||||
};
|
||||
|
||||
testLevenshteinAtMostTwoDiff1DelRight = {
|
||||
expr = strings.levenshteinAtMost 2 "abcdef" "zbcde";
|
||||
expected = true;
|
||||
};
|
||||
|
||||
testLevenshteinAtMostTwoDiff2False = {
|
||||
expr = strings.levenshteinAtMost 2 "hello" "hxo";
|
||||
expected = false;
|
||||
};
|
||||
|
||||
testLevenshteinAtMostTwoDiff2True = {
|
||||
expr = strings.levenshteinAtMost 2 "hello" "heo";
|
||||
expected = true;
|
||||
};
|
||||
|
||||
testLevenshteinAtMostTwoDiff3 = {
|
||||
expr = strings.levenshteinAtMost 2 "hello" "ho";
|
||||
expected = false;
|
||||
};
|
||||
|
||||
testLevenshteinAtMostThreeFalse = {
|
||||
expr = strings.levenshteinAtMost 3 "hello" "Holla!";
|
||||
expected = false;
|
||||
};
|
||||
|
||||
testLevenshteinAtMostThreeTrue = {
|
||||
expr = strings.levenshteinAtMost 3 "hello" "Holla";
|
||||
expected = true;
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue