@@ -2177,6 +2177,46 @@ public function testFindFulltextSpecialChars(): void
21772177 ]);
21782178
21792179 $ this ->assertEquals (1 , count ($ documents ));
2180+
2181+ $ phrases = [
2182+ '+ ' , // lone plus operator
2183+ '- ' , // lone minus operator
2184+ '~ ' , // lone negation
2185+ '* ' , // wildcard alone
2186+ '" ' , // just a quote
2187+ '( ' , // opening paren
2188+ ') ' , // closing paren
2189+ '+( ' , // plus + unmatched paren
2190+ '-( ' , // minus + unmatched paren
2191+ '(" ' , // unmatched paren + quote
2192+ '+(" ' , // combination of +, paren, quote
2193+ ')+ ' , // closing paren + operator
2194+ '"" ' , // double quote alone
2195+ '((( ' , // multiple unmatched parens
2196+ '))) ' , // multiple unmatched closing parens
2197+ '+~ ' , // plus + negation
2198+ '-- ' , // double minus
2199+ '~~ ' , // double negation
2200+ '+* ' , // plus + wildcard
2201+ '-* ' , // minus + wildcard
2202+ '+"test ' , // plus + unmatched quote
2203+ '"test ' , // unmatched quote
2204+ '"test\0 ' , // unmatched quote + null byte
2205+ '+("test\0 ' , // combination + unmatched quote + null byte
2206+ "\0" , // null byte alone
2207+ "\x01" , // control char 1
2208+ "\x02" , // control char 2
2209+ "\x1f" , // control char 31
2210+ ];
2211+ foreach ($ phrases as $ phrase ) {
2212+ $ documents = $ database ->find ($ collection , [
2213+ Query::search ('ft ' , $ phrase ),
2214+ ]);
2215+ }
2216+
2217+ $ this ->assertEquals (12 , 222 );
2218+
2219+ var_dump ($ documents );
21802220 }
21812221
21822222 public function testFindMultipleConditions (): void
0 commit comments