44
44
*/
45
45
public class AzureAiSearchFilterExpressionConverterTests {
46
46
47
- private static String format (String text ) {
48
- return text .trim ().replace (" " + System .lineSeparator (), System .lineSeparator ()) + System .lineSeparator ();
49
- }
50
-
51
47
@ Test
52
48
public void testMissingFilterName () {
53
49
@@ -79,10 +75,9 @@ public void testEQ() {
79
75
List .of (MetadataField .text ("country" )));
80
76
81
77
// country == "BG"
78
+ String expected = "meta_country eq 'BG'" ;
82
79
String vectorExpr = converter .convertExpression (new Expression (EQ , new Key ("country" ), new Value ("BG" )));
83
- assertThat (format (vectorExpr )).isEqualTo ("""
84
- meta_country eq 'BG'
85
- """ );
80
+ assertThat (vectorExpr ).isEqualTo (expected );
86
81
}
87
82
88
83
@ Test
@@ -91,12 +86,11 @@ public void tesEqAndGte() {
91
86
List .of (MetadataField .text ("genre" ), MetadataField .int32 ("year" )));
92
87
93
88
// genre == "drama" AND year >= 2020
89
+ String expected = "meta_genre eq 'drama' and meta_year ge 2020" ;
94
90
String vectorExpr = converter
95
91
.convertExpression (new Expression (AND , new Expression (EQ , new Key ("genre" ), new Value ("drama" )),
96
92
new Expression (GTE , new Key ("year" ), new Value (2020 ))));
97
- assertThat (format (vectorExpr )).isEqualTo ("""
98
- meta_genre eq 'drama' and meta_year ge 2020
99
- """ );
93
+ assertThat (vectorExpr ).isEqualTo (expected );
100
94
}
101
95
102
96
@ Test
@@ -105,11 +99,10 @@ public void tesIn() {
105
99
List .of (MetadataField .text ("genre" )));
106
100
107
101
// genre in ["comedy", "documentary", "drama"]
102
+ String expected = " search.in(meta_genre, 'comedy,documentary,drama', ',')" ;
108
103
String vectorExpr = converter .convertExpression (
109
104
new Expression (IN , new Key ("genre" ), new Value (List .of ("comedy" , "documentary" , "drama" ))));
110
- assertThat (format (vectorExpr )).isEqualTo ("""
111
- search.in(meta_genre, 'comedy,documentary,drama', ',')
112
- """ );
105
+ assertThat (vectorExpr ).isEqualTo (expected );
113
106
}
114
107
115
108
@ Test
@@ -118,11 +111,10 @@ public void tesNin() {
118
111
List .of (MetadataField .text ("genre" )));
119
112
120
113
// genre in ["comedy", "documentary", "drama"]
114
+ String expected = " not search.in(meta_genre, 'comedy,documentary,drama', ',')" ;
121
115
String vectorExpr = converter .convertExpression (
122
116
new Expression (NIN , new Key ("genre" ), new Value (List .of ("comedy" , "documentary" , "drama" ))));
123
- assertThat (format (vectorExpr )).isEqualTo ("""
124
- not search.in(meta_genre, 'comedy,documentary,drama', ',')
125
- """ );
117
+ assertThat (vectorExpr ).isEqualTo (expected );
126
118
}
127
119
128
120
@ Test
@@ -131,13 +123,12 @@ public void testNe() {
131
123
List .of (MetadataField .text ("city" ), MetadataField .int64 ("year" ), MetadataField .text ("country" )));
132
124
133
125
// year >= 2020 OR country == "BG" AND city != "Sofia"
126
+ String expected = "meta_year ge 2020 or meta_country eq 'BG' and meta_city ne 'Sofia'" ;
134
127
String vectorExpr = converter
135
128
.convertExpression (new Expression (OR , new Expression (GTE , new Key ("year" ), new Value (2020 )),
136
129
new Expression (AND , new Expression (EQ , new Key ("country" ), new Value ("BG" )),
137
130
new Expression (NE , new Key ("city" ), new Value ("Sofia" )))));
138
- assertThat (format (vectorExpr )).isEqualTo ("""
139
- meta_year ge 2020 or meta_country eq 'BG' and meta_city ne 'Sofia'
140
- """ );
131
+ assertThat (vectorExpr ).isEqualTo (expected );
141
132
}
142
133
143
134
@ Test
@@ -146,14 +137,12 @@ public void testGroup() {
146
137
List .of (MetadataField .text ("city" ), MetadataField .int64 ("year" ), MetadataField .text ("country" )));
147
138
148
139
// (year >= 2020 OR country == "BG") AND city != "Sofia"
140
+ String expected = "(meta_year ge 2020 or meta_country eq 'BG') and meta_city ne 'Sofia'" ;
149
141
String vectorExpr = converter .convertExpression (new Expression (AND ,
150
142
new Group (new Expression (OR , new Expression (GTE , new Key ("year" ), new Value (2020 )),
151
143
new Expression (EQ , new Key ("country" ), new Value ("BG" )))),
152
144
new Expression (NE , new Key ("city" ), new Value ("Sofia" ))));
153
-
154
- assertThat (format (vectorExpr )).isEqualTo ("""
155
- (meta_year ge 2020 or meta_country eq 'BG') and meta_city ne 'Sofia'
156
- """ );
145
+ assertThat (vectorExpr ).isEqualTo (expected );
157
146
}
158
147
159
148
@ Test
@@ -162,14 +151,12 @@ public void tesBoolean() {
162
151
List .of (MetadataField .bool ("isOpen" ), MetadataField .int64 ("year" ), MetadataField .text ("country" )));
163
152
164
153
// isOpen == true AND year >= 2020 AND country IN ["BG", "NL", "US"]
154
+ String expected = "meta_isOpen eq true and meta_year ge 2020 and search.in(meta_country, 'BG,NL,US', ',')" ;
165
155
String vectorExpr = converter .convertExpression (new Expression (AND ,
166
156
new Expression (AND , new Expression (EQ , new Key ("isOpen" ), new Value (true )),
167
157
new Expression (GTE , new Key ("year" ), new Value (2020 ))),
168
158
new Expression (IN , new Key ("country" ), new Value (List .of ("BG" , "NL" , "US" )))));
169
-
170
- assertThat (format (vectorExpr )).isEqualTo ("""
171
- meta_isOpen eq true and meta_year ge 2020 and search.in(meta_country, 'BG,NL,US', ',')
172
- """ );
159
+ assertThat (vectorExpr ).isEqualTo (expected );
173
160
}
174
161
175
162
@ Test
@@ -181,27 +168,21 @@ public void testDecimal() {
181
168
String vectorExpr = converter
182
169
.convertExpression (new Expression (AND , new Expression (GTE , new Key ("temperature" ), new Value (-15.6 )),
183
170
new Expression (LTE , new Key ("temperature" ), new Value (20.13 ))));
184
-
185
- assertThat (format (vectorExpr )).isEqualTo ("""
186
- meta_temperature ge -15.6 and meta_temperature le 20.13
187
- """ );
171
+ String expected = "meta_temperature ge -15.6 and meta_temperature le 20.13" ;
188
172
}
189
173
190
174
@ Test
191
175
public void testComplexIdentifiers () {
192
176
FilterExpressionConverter converter = new AzureAiSearchFilterExpressionConverter (
193
177
List .of (MetadataField .text ("country 1 2 3" )));
194
178
179
+ String expected = "'meta_country 1 2 3' eq 'BG'" ;
195
180
String vectorExpr = converter
196
181
.convertExpression (new Expression (EQ , new Key ("\" country 1 2 3\" " ), new Value ("BG" )));
197
- assertThat (format (vectorExpr )).isEqualTo ("""
198
- 'meta_country 1 2 3' eq 'BG'
199
- """ );
182
+ assertThat (vectorExpr ).isEqualTo (expected );
200
183
201
184
vectorExpr = converter .convertExpression (new Expression (EQ , new Key ("'country 1 2 3'" ), new Value ("BG" )));
202
- assertThat (format (vectorExpr )).isEqualTo ("""
203
- 'meta_country 1 2 3' eq 'BG'
204
- """ );
185
+ assertThat (vectorExpr ).isEqualTo (expected );
205
186
}
206
187
207
188
}
0 commit comments