37 lines
1.2 KiB
C++
37 lines
1.2 KiB
C++
#include <catch2/catch_test_macros.hpp>
|
|
|
|
import cargoxx.util;
|
|
import std;
|
|
|
|
using cargoxx::util::levenshtein;
|
|
|
|
TEST_CASE("levenshtein of equal strings is zero", "[util][levenshtein]") {
|
|
REQUIRE(levenshtein("", "") == 0);
|
|
REQUIRE(levenshtein("sqlite", "sqlite") == 0);
|
|
}
|
|
|
|
TEST_CASE("levenshtein counts a single suffix character", "[util][levenshtein]") {
|
|
REQUIRE(levenshtein("sqlite", "sqlite3") == 1);
|
|
REQUIRE(levenshtein("fmt", "fmtlib") == 3);
|
|
}
|
|
|
|
TEST_CASE("levenshtein is symmetric", "[util][levenshtein]") {
|
|
REQUIRE(levenshtein("sqlite", "sqlite3") == levenshtein("sqlite3", "sqlite"));
|
|
REQUIRE(levenshtein("abseil-cpp", "absl") == levenshtein("absl", "abseil-cpp"));
|
|
}
|
|
|
|
TEST_CASE("levenshtein counts a single substitution", "[util][levenshtein]") {
|
|
REQUIRE(levenshtein("kitten", "sitten") == 1);
|
|
REQUIRE(levenshtein("kitten", "kittes") == 1);
|
|
}
|
|
|
|
TEST_CASE("levenshtein matches the classic kitten/sitting example",
|
|
"[util][levenshtein]") {
|
|
REQUIRE(levenshtein("kitten", "sitting") == 3);
|
|
}
|
|
|
|
TEST_CASE("levenshtein handles empty inputs", "[util][levenshtein]") {
|
|
REQUIRE(levenshtein("", "abc") == 3);
|
|
REQUIRE(levenshtein("abc", "") == 3);
|
|
}
|