@@ -141,21 +141,60 @@ void TestQgsFieldExpressionWidget::asExpression()
141
141
std::unique_ptr< QgsFieldExpressionWidget > widget ( new QgsFieldExpressionWidget () );
142
142
widget->setLayer ( layer );
143
143
144
+ QSignalSpy spy ( widget.get (), static_cast < void ( QgsFieldExpressionWidget::* )( const QString & ) >( &QgsFieldExpressionWidget::fieldChanged ) );
145
+ QSignalSpy spy2 ( widget.get (), static_cast < void ( QgsFieldExpressionWidget::* )( const QString &, bool ) >( &QgsFieldExpressionWidget::fieldChanged ) );
146
+
144
147
// check with field set
145
148
widget->setField ( QStringLiteral ( " fld" ) );
146
- QCOMPARE ( widget->asExpression (), QString ( " \" fld\" " ) );
149
+ QCOMPARE ( widget->asExpression (), QStringLiteral ( " \" fld\" " ) );
150
+ QCOMPARE ( spy.count (), 1 );
151
+ QCOMPARE ( spy.constLast ().at ( 0 ).toString (), QStringLiteral ( " fld" ) );
152
+ QCOMPARE ( spy2.count (), 1 );
153
+ QCOMPARE ( spy2.constLast ().at ( 0 ).toString (), QStringLiteral ( " fld" ) );
154
+ QVERIFY ( spy2.constLast ().at ( 1 ).toBool () );
147
155
148
156
// check with expressions set
149
157
widget->setField ( QStringLiteral ( " fld + 1" ) );
150
- QCOMPARE ( widget->asExpression (), QString ( " fld + 1" ) );
158
+ QCOMPARE ( widget->asExpression (), QStringLiteral ( " fld + 1" ) );
159
+ QCOMPARE ( spy.count (), 2 );
160
+ QCOMPARE ( spy.constLast ().at ( 0 ).toString (), QStringLiteral ( " fld + 1" ) );
161
+ QCOMPARE ( spy2.count (), 2 );
162
+ QCOMPARE ( spy2.constLast ().at ( 0 ).toString (), QStringLiteral ( " fld + 1" ) );
163
+ QVERIFY ( spy2.constLast ().at ( 1 ).toBool () );
164
+
151
165
widget->setField ( QStringLiteral ( " 1" ) );
152
- QCOMPARE ( widget->asExpression (), QString ( " 1" ) );
166
+ QCOMPARE ( widget->asExpression (), QStringLiteral ( " 1" ) );
167
+ QCOMPARE ( spy.count (), 3 );
168
+ QCOMPARE ( spy.constLast ().at ( 0 ).toString (), QStringLiteral ( " 1" ) );
169
+ QCOMPARE ( spy2.count (), 3 );
170
+ QCOMPARE ( spy2.constLast ().at ( 0 ).toString (), QStringLiteral ( " 1" ) );
171
+ QVERIFY ( spy2.constLast ().at ( 1 ).toBool () );
172
+
153
173
widget->setField ( QStringLiteral ( " \" fld2\" " ) );
154
- QCOMPARE ( widget->asExpression (), QString ( " \" fld2\" " ) );
174
+ QCOMPARE ( widget->asExpression (), QStringLiteral ( " \" fld2\" " ) );
175
+ QCOMPARE ( spy.count (), 4 );
176
+ QCOMPARE ( spy.constLast ().at ( 0 ).toString (), QStringLiteral ( " fld2" ) );
177
+ QCOMPARE ( spy2.count (), 4 );
178
+ QCOMPARE ( spy2.constLast ().at ( 0 ).toString (), QStringLiteral ( " fld2" ) );
179
+ QVERIFY ( spy2.constLast ().at ( 1 ).toBool () );
155
180
156
181
// check switching back to a field
157
182
widget->setField ( QStringLiteral ( " fld3" ) );
158
- QCOMPARE ( widget->asExpression (), QString ( " \" fld3\" " ) );
183
+ QCOMPARE ( widget->asExpression (), QStringLiteral ( " \" fld3\" " ) );
184
+ QCOMPARE ( spy.count (), 5 );
185
+ QCOMPARE ( spy.constLast ().at ( 0 ).toString (), QStringLiteral ( " fld3" ) );
186
+ QCOMPARE ( spy2.count (), 5 );
187
+ QCOMPARE ( spy2.constLast ().at ( 0 ).toString (), QStringLiteral ( " fld3" ) );
188
+ QVERIFY ( spy2.constLast ().at ( 1 ).toBool () );
189
+
190
+ // and back to null
191
+ widget->setField ( QString () );
192
+ QVERIFY ( widget->asExpression ().isEmpty () );
193
+ QCOMPARE ( spy.count (), 6 );
194
+ QVERIFY ( spy.constLast ().at ( 0 ).toString ().isEmpty () );
195
+ QCOMPARE ( spy2.count (), 6 );
196
+ QVERIFY ( spy2.constLast ().at ( 0 ).toString ().isEmpty () );
197
+ QVERIFY ( spy2.constLast ().at ( 1 ).toBool () );
159
198
160
199
QgsProject::instance ()->removeMapLayer ( layer );
161
200
}
@@ -175,43 +214,43 @@ void TestQgsFieldExpressionWidget::testIsValid()
175
214
bool isExpression = false ;
176
215
bool isValid = false ;
177
216
widget->setField ( QStringLiteral ( " fld" ) );
178
- QCOMPARE ( widget->currentField ( &isExpression, &isValid ), QString ( " fld" ) );
217
+ QCOMPARE ( widget->currentField ( &isExpression, &isValid ), QStringLiteral ( " fld" ) );
179
218
QVERIFY ( !isExpression );
180
219
QVERIFY ( isValid );
181
220
QVERIFY ( widget->isValidExpression () );
182
221
QCOMPARE ( spy.count (), 1 );
183
- QCOMPARE ( spy.last ().at ( 0 ).toString (), QString ( " fld" ) );
222
+ QCOMPARE ( spy.last ().at ( 0 ).toString (), QStringLiteral ( " fld" ) );
184
223
QVERIFY ( spy.last ().at ( 1 ).toBool () );
185
224
186
225
187
226
// check with complex field name set
188
227
widget->setField ( QStringLiteral ( " name with space" ) );
189
- QCOMPARE ( widget->currentField ( &isExpression, &isValid ), QString ( " name with space" ) );
228
+ QCOMPARE ( widget->currentField ( &isExpression, &isValid ), QStringLiteral ( " name with space" ) );
190
229
QVERIFY ( !isExpression );
191
230
QVERIFY ( isValid );
192
231
QVERIFY ( !widget->isValidExpression () );
193
232
QCOMPARE ( spy.count (), 2 );
194
- QCOMPARE ( spy.last ().at ( 0 ).toString (), QString ( " name with space" ) );
233
+ QCOMPARE ( spy.last ().at ( 0 ).toString (), QStringLiteral ( " name with space" ) );
195
234
QVERIFY ( spy.last ().at ( 1 ).toBool () );
196
235
197
236
// check with valid expression set
198
237
widget->setField ( QStringLiteral ( " 2 * 4" ) );
199
- QCOMPARE ( widget->currentField ( &isExpression, &isValid ), QString ( " 2 * 4" ) );
238
+ QCOMPARE ( widget->currentField ( &isExpression, &isValid ), QStringLiteral ( " 2 * 4" ) );
200
239
QVERIFY ( isExpression );
201
240
QVERIFY ( isValid );
202
241
QVERIFY ( widget->isValidExpression () );
203
242
QCOMPARE ( spy.count (), 3 );
204
- QCOMPARE ( spy.last ().at ( 0 ).toString (), QString ( " 2 * 4" ) );
243
+ QCOMPARE ( spy.last ().at ( 0 ).toString (), QStringLiteral ( " 2 * 4" ) );
205
244
QVERIFY ( spy.last ().at ( 1 ).toBool () );
206
245
207
246
// check with invalid expression set
208
247
widget->setField ( QStringLiteral ( " 2 *" ) );
209
- QCOMPARE ( widget->currentField ( &isExpression, &isValid ), QString ( " 2 *" ) );
248
+ QCOMPARE ( widget->currentField ( &isExpression, &isValid ), QStringLiteral ( " 2 *" ) );
210
249
QVERIFY ( isExpression );
211
250
QVERIFY ( !isValid );
212
251
QVERIFY ( !widget->isValidExpression () );
213
252
QCOMPARE ( spy.count (), 4 );
214
- QCOMPARE ( spy.last ().at ( 0 ).toString (), QString ( " 2 *" ) );
253
+ QCOMPARE ( spy.last ().at ( 0 ).toString (), QStringLiteral ( " 2 *" ) );
215
254
QVERIFY ( !spy.last ().at ( 1 ).toBool () );
216
255
217
256
QgsProject::instance ()->removeMapLayer ( layer );
@@ -226,46 +265,46 @@ void TestQgsFieldExpressionWidget::testFilters()
226
265
widget->setLayer ( layer );
227
266
228
267
QCOMPARE ( widget->mCombo ->count (), 8 );
229
- QCOMPARE ( widget->mCombo ->itemText ( 0 ), QString ( " intfld" ) );
230
- QCOMPARE ( widget->mCombo ->itemText ( 1 ), QString ( " stringfld" ) );
231
- QCOMPARE ( widget->mCombo ->itemText ( 2 ), QString ( " string2fld" ) );
232
- QCOMPARE ( widget->mCombo ->itemText ( 3 ), QString ( " longfld" ) );
233
- QCOMPARE ( widget->mCombo ->itemText ( 4 ), QString ( " doublefld" ) );
234
- QCOMPARE ( widget->mCombo ->itemText ( 5 ), QString ( " datefld" ) );
235
- QCOMPARE ( widget->mCombo ->itemText ( 6 ), QString ( " timefld" ) );
236
- QCOMPARE ( widget->mCombo ->itemText ( 7 ), QString ( " datetimefld" ) );
268
+ QCOMPARE ( widget->mCombo ->itemText ( 0 ), QStringLiteral ( " intfld" ) );
269
+ QCOMPARE ( widget->mCombo ->itemText ( 1 ), QStringLiteral ( " stringfld" ) );
270
+ QCOMPARE ( widget->mCombo ->itemText ( 2 ), QStringLiteral ( " string2fld" ) );
271
+ QCOMPARE ( widget->mCombo ->itemText ( 3 ), QStringLiteral ( " longfld" ) );
272
+ QCOMPARE ( widget->mCombo ->itemText ( 4 ), QStringLiteral ( " doublefld" ) );
273
+ QCOMPARE ( widget->mCombo ->itemText ( 5 ), QStringLiteral ( " datefld" ) );
274
+ QCOMPARE ( widget->mCombo ->itemText ( 6 ), QStringLiteral ( " timefld" ) );
275
+ QCOMPARE ( widget->mCombo ->itemText ( 7 ), QStringLiteral ( " datetimefld" ) );
237
276
238
277
widget->setFilters ( QgsFieldProxyModel::String );
239
278
QCOMPARE ( widget->mCombo ->count (), 2 );
240
- QCOMPARE ( widget->mCombo ->itemText ( 0 ), QString ( " stringfld" ) );
241
- QCOMPARE ( widget->mCombo ->itemText ( 1 ), QString ( " string2fld" ) );
279
+ QCOMPARE ( widget->mCombo ->itemText ( 0 ), QStringLiteral ( " stringfld" ) );
280
+ QCOMPARE ( widget->mCombo ->itemText ( 1 ), QStringLiteral ( " string2fld" ) );
242
281
243
282
widget->setFilters ( QgsFieldProxyModel::Int );
244
283
QCOMPARE ( widget->mCombo ->count (), 1 );
245
- QCOMPARE ( widget->mCombo ->itemText ( 0 ), QString ( " intfld" ) );
284
+ QCOMPARE ( widget->mCombo ->itemText ( 0 ), QStringLiteral ( " intfld" ) );
246
285
247
286
widget->setFilters ( QgsFieldProxyModel::LongLong );
248
287
QCOMPARE ( widget->mCombo ->count (), 1 );
249
- QCOMPARE ( widget->mCombo ->itemText ( 0 ), QString ( " longfld" ) );
288
+ QCOMPARE ( widget->mCombo ->itemText ( 0 ), QStringLiteral ( " longfld" ) );
250
289
251
290
widget->setFilters ( QgsFieldProxyModel::Double );
252
291
QCOMPARE ( widget->mCombo ->count (), 1 );
253
- QCOMPARE ( widget->mCombo ->itemText ( 0 ), QString ( " doublefld" ) );
292
+ QCOMPARE ( widget->mCombo ->itemText ( 0 ), QStringLiteral ( " doublefld" ) );
254
293
255
294
widget->setFilters ( QgsFieldProxyModel::Numeric );
256
295
QCOMPARE ( widget->mCombo ->count (), 3 );
257
- QCOMPARE ( widget->mCombo ->itemText ( 0 ), QString ( " intfld" ) );
258
- QCOMPARE ( widget->mCombo ->itemText ( 1 ), QString ( " longfld" ) );
259
- QCOMPARE ( widget->mCombo ->itemText ( 2 ), QString ( " doublefld" ) );
296
+ QCOMPARE ( widget->mCombo ->itemText ( 0 ), QStringLiteral ( " intfld" ) );
297
+ QCOMPARE ( widget->mCombo ->itemText ( 1 ), QStringLiteral ( " longfld" ) );
298
+ QCOMPARE ( widget->mCombo ->itemText ( 2 ), QStringLiteral ( " doublefld" ) );
260
299
261
300
widget->setFilters ( QgsFieldProxyModel::Date );
262
301
QCOMPARE ( widget->mCombo ->count (), 2 );
263
- QCOMPARE ( widget->mCombo ->itemText ( 0 ), QString ( " datefld" ) );
264
- QCOMPARE ( widget->mCombo ->itemText ( 1 ), QString ( " datetimefld" ) );
302
+ QCOMPARE ( widget->mCombo ->itemText ( 0 ), QStringLiteral ( " datefld" ) );
303
+ QCOMPARE ( widget->mCombo ->itemText ( 1 ), QStringLiteral ( " datetimefld" ) );
265
304
266
305
widget->setFilters ( QgsFieldProxyModel::Time );
267
306
QCOMPARE ( widget->mCombo ->count (), 1 );
268
- QCOMPARE ( widget->mCombo ->itemText ( 0 ), QString ( " timefld" ) );
307
+ QCOMPARE ( widget->mCombo ->itemText ( 0 ), QStringLiteral ( " timefld" ) );
269
308
270
309
QgsProject::instance ()->removeMapLayer ( layer );
271
310
}
0 commit comments