[M6] tests: levenshtein + pc_scan + brute_scan + findmodule_scan + last_failure_dir + cmd_linkdb_add + codegen PkgConfig/brute-force

This commit is contained in:
2026-05-15 14:41:17 +00:00
parent 94e658fdf1
commit 65a749f088
9 changed files with 557 additions and 0 deletions

36
tests/levenshtein.cpp Normal file
View File

@@ -0,0 +1,36 @@
#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);
}