diff --git a/src/domain/analysisSearch.test.ts b/src/domain/analysisSearch.test.ts index 620ed65e0b..5411a693af 100644 --- a/src/domain/analysisSearch.test.ts +++ b/src/domain/analysisSearch.test.ts @@ -1,6 +1,9 @@ import { expect, it } from "vitest"; -import { literalSubstringPredicate } from "./analysisSearch.js"; +import { + analysisSearchPredicate, + literalSubstringPredicate, +} from "./analysisSearch.js"; it("uses Unicode simple case folding for literal substrings", () => { const matchesSigma = literalSubstringPredicate("Σ", false); @@ -11,3 +14,40 @@ it("uses Unicode simple case folding for literal substrings", () => { expect(literalSubstringPredicate("A.B", false)("a.b")).toBe(true); expect(literalSubstringPredicate("A.B", false)("axb")).toBe(false); }); + +it.each([ + ["Σ", "ΟΣ"], + ["σ", "ΟΣ"], + ["ς", "ΟΣ"], + ["Σ", "ΣA"], + ["foo", "FOO"], + ["ΟΣ", "ΟΣ"], +])( + "retains native literal match %s in %s when case is ignored", + (pattern, value) => { + expect( + analysisSearchPredicate({ + pattern, + mode: "literal", + case_sensitive: false, + document: undefined, + })(value), + ).toBe(true); + expect( + analysisSearchPredicate({ + pattern, + mode: "literal", + case_sensitive: true, + document: undefined, + })(value), + ).toBe(value.includes(pattern)); + expect( + analysisSearchPredicate({ + pattern, + mode: "regex", + case_sensitive: false, + document: undefined, + })(value), + ).toBe(true); + }, +);