Files
cargoxx/tests/levenshtein.cpp

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);
}