@@ -25,336 +25,14 @@ public abstract class AbstractMatchFullTextFunctionTests extends AbstractFunctio
25
25
protected static List <TestCaseSupplier > testCaseSuppliers () {
26
26
List <TestCaseSupplier > suppliers = new ArrayList <>();
27
27
28
- AbstractMatchFullTextFunctionTests .addUnsignedLongCases (suppliers );
29
- AbstractMatchFullTextFunctionTests .addNumericCases (suppliers );
30
- AbstractMatchFullTextFunctionTests .addNonNumericCases (suppliers );
31
- AbstractMatchFullTextFunctionTests .addQueryAsStringTestCases (suppliers );
32
- AbstractMatchFullTextFunctionTests .addStringTestCases (suppliers );
28
+ FullTextFunctionTestHelpers .addUnsignedLongCases (suppliers );
29
+ FullTextFunctionTestHelpers .addNumericCases (suppliers );
30
+ FullTextFunctionTestHelpers .addNonNumericCases (suppliers );
31
+ FullTextFunctionTestHelpers .addQueryAsStringTestCases (suppliers );
32
+ FullTextFunctionTestHelpers .addStringTestCases (suppliers );
33
33
return suppliers ;
34
34
}
35
35
36
- private static void addNonNumericCases (List <TestCaseSupplier > suppliers ) {
37
- suppliers .addAll (
38
- TestCaseSupplier .forBinaryNotCasting (
39
- null ,
40
- "field" ,
41
- "query" ,
42
- Object ::equals ,
43
- DataType .BOOLEAN ,
44
- TestCaseSupplier .booleanCases (),
45
- TestCaseSupplier .booleanCases (),
46
- List .of (),
47
- false
48
- )
49
- );
50
- suppliers .addAll (
51
- TestCaseSupplier .forBinaryNotCasting (
52
- null ,
53
- "field" ,
54
- "query" ,
55
- Object ::equals ,
56
- DataType .BOOLEAN ,
57
- TestCaseSupplier .ipCases (),
58
- TestCaseSupplier .ipCases (),
59
- List .of (),
60
- false
61
- )
62
- );
63
- suppliers .addAll (
64
- TestCaseSupplier .forBinaryNotCasting (
65
- null ,
66
- "field" ,
67
- "query" ,
68
- Object ::equals ,
69
- DataType .BOOLEAN ,
70
- TestCaseSupplier .versionCases ("" ),
71
- TestCaseSupplier .versionCases ("" ),
72
- List .of (),
73
- false
74
- )
75
- );
76
- // Datetime
77
- suppliers .addAll (
78
- TestCaseSupplier .forBinaryNotCasting (
79
- null ,
80
- "field" ,
81
- "query" ,
82
- Object ::equals ,
83
- DataType .BOOLEAN ,
84
- TestCaseSupplier .dateCases (),
85
- TestCaseSupplier .dateCases (),
86
- List .of (),
87
- false
88
- )
89
- );
90
-
91
- suppliers .addAll (
92
- TestCaseSupplier .forBinaryNotCasting (
93
- null ,
94
- "field" ,
95
- "query" ,
96
- Object ::equals ,
97
- DataType .BOOLEAN ,
98
- TestCaseSupplier .dateNanosCases (),
99
- TestCaseSupplier .dateNanosCases (),
100
- List .of (),
101
- false
102
- )
103
- );
104
- }
105
-
106
- private static void addNumericCases (List <TestCaseSupplier > suppliers ) {
107
- suppliers .addAll (
108
- TestCaseSupplier .forBinaryComparisonWithWidening (
109
- new TestCaseSupplier .NumericTypeTestConfigs <>(
110
- new TestCaseSupplier .NumericTypeTestConfig <>(
111
- (Integer .MIN_VALUE >> 1 ) - 1 ,
112
- (Integer .MAX_VALUE >> 1 ) - 1 ,
113
- (l , r ) -> true ,
114
- "EqualsIntsEvaluator"
115
- ),
116
- new TestCaseSupplier .NumericTypeTestConfig <>(
117
- (Long .MIN_VALUE >> 1 ) - 1 ,
118
- (Long .MAX_VALUE >> 1 ) - 1 ,
119
- (l , r ) -> true ,
120
- "EqualsLongsEvaluator"
121
- ),
122
- new TestCaseSupplier .NumericTypeTestConfig <>(
123
- Double .NEGATIVE_INFINITY ,
124
- Double .POSITIVE_INFINITY ,
125
- // NB: this has different behavior than Double::equals
126
- (l , r ) -> true ,
127
- "EqualsDoublesEvaluator"
128
- )
129
- ),
130
- "field" ,
131
- "query" ,
132
- (lhs , rhs ) -> List .of (),
133
- false
134
- )
135
- );
136
- }
137
-
138
- private static void addUnsignedLongCases (List <TestCaseSupplier > suppliers ) {
139
- // TODO: These should be integrated into the type cross product above, but are currently broken
140
- // see https://github.com/elastic/elasticsearch/issues/102935
141
- suppliers .addAll (
142
- TestCaseSupplier .forBinaryNotCasting (
143
- null ,
144
- "field" ,
145
- "query" ,
146
- Object ::equals ,
147
- DataType .BOOLEAN ,
148
- TestCaseSupplier .ulongCases (BigInteger .ZERO , NumericUtils .UNSIGNED_LONG_MAX , true ),
149
- TestCaseSupplier .ulongCases (BigInteger .ZERO , NumericUtils .UNSIGNED_LONG_MAX , true ),
150
- List .of (),
151
- false
152
- )
153
- );
154
- suppliers .addAll (
155
- TestCaseSupplier .forBinaryNotCasting (
156
- null ,
157
- "field" ,
158
- "query" ,
159
- Object ::equals ,
160
- DataType .BOOLEAN ,
161
- TestCaseSupplier .ulongCases (BigInteger .ZERO , NumericUtils .UNSIGNED_LONG_MAX , true ),
162
- TestCaseSupplier .intCases (Integer .MIN_VALUE , Integer .MAX_VALUE , true ),
163
- List .of (),
164
- false
165
- )
166
- );
167
- suppliers .addAll (
168
- TestCaseSupplier .forBinaryNotCasting (
169
- null ,
170
- "field" ,
171
- "query" ,
172
- Object ::equals ,
173
- DataType .BOOLEAN ,
174
- TestCaseSupplier .ulongCases (BigInteger .ZERO , NumericUtils .UNSIGNED_LONG_MAX , true ),
175
- TestCaseSupplier .longCases (Long .MIN_VALUE , Long .MAX_VALUE , true ),
176
- List .of (),
177
- false
178
- )
179
- );
180
- suppliers .addAll (
181
- TestCaseSupplier .forBinaryNotCasting (
182
- null ,
183
- "field" ,
184
- "query" ,
185
- Object ::equals ,
186
- DataType .BOOLEAN ,
187
- TestCaseSupplier .ulongCases (BigInteger .ZERO , NumericUtils .UNSIGNED_LONG_MAX , true ),
188
- TestCaseSupplier .doubleCases (Double .MIN_VALUE , Double .MAX_VALUE , true ),
189
- List .of (),
190
- false
191
- )
192
- );
193
- }
194
-
195
- private static void addQueryAsStringTestCases (List <TestCaseSupplier > suppliers ) {
196
-
197
- suppliers .addAll (
198
- TestCaseSupplier .forBinaryNotCasting (
199
- null ,
200
- "field" ,
201
- "query" ,
202
- Object ::equals ,
203
- DataType .BOOLEAN ,
204
- TestCaseSupplier .intCases (Integer .MIN_VALUE , Integer .MAX_VALUE , true ),
205
- TestCaseSupplier .stringCases (DataType .KEYWORD ),
206
- List .of (),
207
- false
208
- )
209
- );
210
-
211
- suppliers .addAll (
212
- TestCaseSupplier .forBinaryNotCasting (
213
- null ,
214
- "field" ,
215
- "query" ,
216
- Object ::equals ,
217
- DataType .BOOLEAN ,
218
- TestCaseSupplier .intCases (Integer .MIN_VALUE , Integer .MAX_VALUE , true ),
219
- TestCaseSupplier .stringCases (DataType .KEYWORD ),
220
- List .of (),
221
- false
222
- )
223
- );
224
-
225
- suppliers .addAll (
226
- TestCaseSupplier .forBinaryNotCasting (
227
- null ,
228
- "field" ,
229
- "query" ,
230
- Object ::equals ,
231
- DataType .BOOLEAN ,
232
- TestCaseSupplier .longCases (Integer .MIN_VALUE , Integer .MAX_VALUE , true ),
233
- TestCaseSupplier .stringCases (DataType .KEYWORD ),
234
- List .of (),
235
- false
236
- )
237
- );
238
-
239
- suppliers .addAll (
240
- TestCaseSupplier .forBinaryNotCasting (
241
- null ,
242
- "field" ,
243
- "query" ,
244
- Object ::equals ,
245
- DataType .BOOLEAN ,
246
- TestCaseSupplier .doubleCases (Double .MIN_VALUE , Double .MAX_VALUE , true ),
247
- TestCaseSupplier .stringCases (DataType .KEYWORD ),
248
- List .of (),
249
- false
250
- )
251
- );
252
-
253
- // Unsigned Long cases
254
- // TODO: These should be integrated into the type cross product above, but are currently broken
255
- // see https://github.com/elastic/elasticsearch/issues/102935
256
- suppliers .addAll (
257
- TestCaseSupplier .forBinaryNotCasting (
258
- null ,
259
- "field" ,
260
- "query" ,
261
- Object ::equals ,
262
- DataType .BOOLEAN ,
263
- TestCaseSupplier .ulongCases (BigInteger .ZERO , NumericUtils .UNSIGNED_LONG_MAX , true ),
264
- TestCaseSupplier .stringCases (DataType .KEYWORD ),
265
- List .of (),
266
- false
267
- )
268
- );
269
-
270
- suppliers .addAll (
271
- TestCaseSupplier .forBinaryNotCasting (
272
- null ,
273
- "field" ,
274
- "query" ,
275
- Object ::equals ,
276
- DataType .BOOLEAN ,
277
- TestCaseSupplier .booleanCases (),
278
- TestCaseSupplier .stringCases (DataType .KEYWORD ),
279
- List .of (),
280
- false
281
- )
282
- );
283
- suppliers .addAll (
284
- TestCaseSupplier .forBinaryNotCasting (
285
- null ,
286
- "field" ,
287
- "query" ,
288
- Object ::equals ,
289
- DataType .BOOLEAN ,
290
- TestCaseSupplier .ipCases (),
291
- TestCaseSupplier .stringCases (DataType .KEYWORD ),
292
- List .of (),
293
- false
294
- )
295
- );
296
- suppliers .addAll (
297
- TestCaseSupplier .forBinaryNotCasting (
298
- null ,
299
- "field" ,
300
- "query" ,
301
- Object ::equals ,
302
- DataType .BOOLEAN ,
303
- TestCaseSupplier .versionCases ("" ),
304
- TestCaseSupplier .stringCases (DataType .KEYWORD ),
305
- List .of (),
306
- false
307
- )
308
- );
309
- // Datetime
310
- suppliers .addAll (
311
- TestCaseSupplier .forBinaryNotCasting (
312
- null ,
313
- "field" ,
314
- "query" ,
315
- Object ::equals ,
316
- DataType .BOOLEAN ,
317
- TestCaseSupplier .dateCases (),
318
- TestCaseSupplier .stringCases (DataType .KEYWORD ),
319
- List .of (),
320
- false
321
- )
322
- );
323
-
324
- suppliers .addAll (
325
- TestCaseSupplier .forBinaryNotCasting (
326
- null ,
327
- "field" ,
328
- "query" ,
329
- Object ::equals ,
330
- DataType .BOOLEAN ,
331
- TestCaseSupplier .dateNanosCases (),
332
- TestCaseSupplier .stringCases (DataType .KEYWORD ),
333
- List .of (),
334
- false
335
- )
336
- );
337
- }
338
-
339
- private static void addStringTestCases (List <TestCaseSupplier > suppliers ) {
340
- for (DataType fieldType : DataType .stringTypes ()) {
341
- if (DataType .UNDER_CONSTRUCTION .containsKey (fieldType )) {
342
- continue ;
343
- }
344
- for (TestCaseSupplier .TypedDataSupplier queryDataSupplier : stringCases (fieldType )) {
345
- suppliers .add (
346
- TestCaseSupplier .testCaseSupplier (
347
- queryDataSupplier ,
348
- new TestCaseSupplier .TypedDataSupplier (fieldType .typeName (), () -> randomAlphaOfLength (10 ), DataType .KEYWORD ),
349
- (d1 , d2 ) -> equalTo ("string" ),
350
- DataType .BOOLEAN ,
351
- (o1 , o2 ) -> true
352
- )
353
- );
354
- }
355
- }
356
- }
357
-
358
36
public final void testLiteralExpressions () {
359
37
Expression expression = buildLiteralExpression (testCase );
360
38
assertFalse ("expected resolved" , expression .typeResolved ().unresolved ());
0 commit comments