@@ -138,6 +138,61 @@ public void filterExpression() {
138
138
139
139
}
140
140
141
+ @ Test
142
+ public void filterExpressionWithDotAndBackslashIsEscaped () {
143
+ var request = SearchRequest .builder ()
144
+ .query ("Test" )
145
+ .filterExpression ("file_name == 'clean.code.pdf' && path == 'C:\\ docs\\ files'" )
146
+ .build ();
147
+
148
+ var expression = request .getFilterExpression ();
149
+
150
+ assertThat (expression .toString ()).contains ("clean\\ .code\\ .pdf" );
151
+ assertThat (expression .toString ()).contains ("C:\\ \\ docs\\ \\ files" );
152
+ }
153
+
154
+ @ Test
155
+ public void filterExpressionWithMultipleLiteralsIsEscapedIndependently () {
156
+ var request = SearchRequest .builder ()
157
+ .query ("Test" )
158
+ .filterExpression ("file_name == 'a.b.c' && author == 'me.you'" )
159
+ .build ();
160
+
161
+ var expression = request .getFilterExpression ();
162
+
163
+ assertThat (expression .toString ()).contains ("a\\ .b\\ .c" );
164
+ assertThat (expression .toString ()).contains ("me\\ .you" );
165
+ }
166
+
167
+ @ Test
168
+ public void filterExpressionWithVariousFileExtensionsIsEscaped () {
169
+ var request = SearchRequest .builder ()
170
+ .query ("Test" )
171
+ .filterExpression (
172
+ "file_name == 'summary.epub' || file_name == 'lecture_notes.md' || file_name == 'slides.pptx'" )
173
+ .build ();
174
+
175
+ String expression = request .getFilterExpression ().toString ();
176
+
177
+ assertThat (expression ).contains ("summary\\ .epub" );
178
+ assertThat (expression ).contains ("lecture_notes\\ .md" );
179
+ assertThat (expression ).contains ("slides\\ .pptx" );
180
+ }
181
+
182
+ @ Test
183
+ public void filterExpressionWithInListIsEscaped () {
184
+ var request = SearchRequest .builder ()
185
+ .query ("Test" )
186
+ .filterExpression ("file_name IN ['a.pdf', 'b.txt', 'final.report.docx']" )
187
+ .build ();
188
+
189
+ String expression = request .getFilterExpression ().toString ();
190
+
191
+ assertThat (expression ).contains ("a\\ .pdf" );
192
+ assertThat (expression ).contains ("b\\ .txt" );
193
+ assertThat (expression ).contains ("final\\ .report\\ .docx" );
194
+ }
195
+
141
196
private void checkDefaults (SearchRequest request ) {
142
197
assertThat (request .getFilterExpression ()).isNull ();
143
198
assertThat (request .getSimilarityThreshold ()).isEqualTo (SearchRequest .SIMILARITY_THRESHOLD_ACCEPT_ALL );
0 commit comments