diff options
author | ilikepugs <ilikepugs@yandex-team.com> | 2023-01-31 10:07:58 +0300 |
---|---|---|
committer | ilikepugs <ilikepugs@yandex-team.com> | 2023-01-31 10:07:58 +0300 |
commit | 72dd5424aab89989d74273b6ab089b4d43156eca (patch) | |
tree | 38d0b224f9b96782f29601d4b62a6c762edb4154 /library/cpp/string_utils/levenshtein_diff/levenshtein_diff_ut.cpp | |
parent | 84d8b69eb78329102350117cecd3789f6b0a76bc (diff) | |
download | ydb-72dd5424aab89989d74273b6ab089b4d43156eca.tar.gz |
Implement Damerau-Levenshtein distance
Diffstat (limited to 'library/cpp/string_utils/levenshtein_diff/levenshtein_diff_ut.cpp')
-rw-r--r-- | library/cpp/string_utils/levenshtein_diff/levenshtein_diff_ut.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/library/cpp/string_utils/levenshtein_diff/levenshtein_diff_ut.cpp b/library/cpp/string_utils/levenshtein_diff/levenshtein_diff_ut.cpp index cf0f78637f..570a7f5c13 100644 --- a/library/cpp/string_utils/levenshtein_diff/levenshtein_diff_ut.cpp +++ b/library/cpp/string_utils/levenshtein_diff/levenshtein_diff_ut.cpp @@ -187,4 +187,24 @@ Y_UNIT_TEST_SUITE(WeightedLevenstein) { UNIT_ASSERT_VALUES_EQUAL(static_cast<int>(chain[1]), static_cast<int>(NLevenshtein::EMT_REPLACE)); UNIT_ASSERT_VALUES_EQUAL(distance, 1.0f); } + + Y_UNIT_TEST(DamerauLevenshtein) { + int distance; + NLevenshtein::TEditChain chain; + NLevenshtein::GetEditChainGeneric<TString, true>(TString("status"), TString("tsatus"), chain, &distance); + UNIT_ASSERT_VALUES_EQUAL(distance, 1); + UNIT_ASSERT_VALUES_EQUAL(chain.size(), 5); + UNIT_ASSERT_VALUES_EQUAL(static_cast<int>(chain[0]), static_cast<int>(NLevenshtein::EMT_TRANSPOSE)); + UNIT_ASSERT_VALUES_EQUAL(static_cast<int>(chain[1]), static_cast<int>(NLevenshtein::EMT_PRESERVE)); + + NLevenshtein::GetEditChainGeneric<TString, true>(TString("hello"), TString("heh lol"), chain, &distance); + UNIT_ASSERT_VALUES_EQUAL(distance, 3); + UNIT_ASSERT_VALUES_EQUAL(chain.size(), 6); + UNIT_ASSERT_VALUES_EQUAL(static_cast<int>(chain[0]), static_cast<int>(NLevenshtein::EMT_PRESERVE)); + UNIT_ASSERT_VALUES_EQUAL(static_cast<int>(chain[1]), static_cast<int>(NLevenshtein::EMT_PRESERVE)); + UNIT_ASSERT_VALUES_EQUAL(static_cast<int>(chain[2]), static_cast<int>(NLevenshtein::EMT_INSERT)); + UNIT_ASSERT_VALUES_EQUAL(static_cast<int>(chain[3]), static_cast<int>(NLevenshtein::EMT_INSERT)); + UNIT_ASSERT_VALUES_EQUAL(static_cast<int>(chain[4]), static_cast<int>(NLevenshtein::EMT_PRESERVE)); + UNIT_ASSERT_VALUES_EQUAL(static_cast<int>(chain[5]), static_cast<int>(NLevenshtein::EMT_TRANSPOSE)); + } } |