@@ -25,336 +25,14 @@ public abstract class AbstractMatchFullTextFunctionTests extends AbstractFunctio
2525 protected static List <TestCaseSupplier > testCaseSuppliers () {
2626 List <TestCaseSupplier > suppliers = new ArrayList <>();
2727
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 );
3333 return suppliers ;
3434 }
3535
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-
35836 public final void testLiteralExpressions () {
35937 Expression expression = buildLiteralExpression (testCase );
36038 assertFalse ("expected resolved" , expression .typeResolved ().unresolved ());
0 commit comments