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