contains_ci and narrow/widen were centralized into shared headers (ui/text_match.hpp, util/utf8.hpp) during the cleanup but had no focused test, unlike the project's other pure-logic helpers. Cover the filter contract the Log/Injection panels depend on (empty/null needle matches all, case-insensitivity both directions, boundary substrings, non-matches) and a narrow<->widen round-trip. The non-ASCII round-trips (cafe.exe, CJK) would fail against the old lossy `c & 0x7F` narrowing this cleanup replaced, so the test guards that fix, not just the happy path. Registered as test #34; suite green.
20 KiB
20 KiB