@@ -38,6 +38,7 @@ class TestQgsProcessingAlgs: public QObject
38
38
void renameLayerAlg ();
39
39
void loadLayerAlg ();
40
40
void parseGeoTags ();
41
+ void featureFilterAlg ();
41
42
42
43
private:
43
44
@@ -353,6 +354,56 @@ void TestQgsProcessingAlgs::parseGeoTags()
353
354
354
355
}
355
356
357
+ void TestQgsProcessingAlgs::featureFilterAlg ()
358
+ {
359
+ const QgsProcessingAlgorithm *filterAlgTemplate = QgsApplication::processingRegistry ()->algorithmById ( QStringLiteral ( " native:filter" ) );
360
+
361
+ Q_ASSERT ( filterAlgTemplate->outputDefinitions ().isEmpty () );
362
+
363
+ QVariantList outputs;
364
+ QVariantMap output1;
365
+ output1.insert ( QStringLiteral ( " name" ), QStringLiteral ( " test" ) );
366
+ output1.insert ( QStringLiteral ( " expression" ), QStringLiteral ( " TRUE" ) );
367
+ output1.insert ( QStringLiteral ( " isModelOutput" ), true );
368
+
369
+ outputs.append ( output1 );
370
+
371
+ QVariantMap config1;
372
+ config1.insert ( QStringLiteral ( " outputs" ), outputs );
373
+
374
+ std::unique_ptr<QgsProcessingAlgorithm> filterAlg ( filterAlgTemplate->create ( config1 ) );
375
+
376
+ QCOMPARE ( filterAlg->outputDefinitions ().size (), 1 );
377
+
378
+ auto outputDef = filterAlg->outputDefinition ( QStringLiteral ( " OUTPUT_test" ) );
379
+ QCOMPARE ( outputDef->type (), QStringLiteral ( " outputVector" ) );
380
+
381
+ auto outputParamDef = filterAlg->parameterDefinition ( " OUTPUT_test" );
382
+ Q_ASSERT ( outputParamDef->flags () & QgsProcessingParameterDefinition::FlagIsModelOutput );
383
+ Q_ASSERT ( outputParamDef->flags () & QgsProcessingParameterDefinition::FlagHidden );
384
+
385
+ QVariantMap output2;
386
+ output2.insert ( QStringLiteral ( " name" ), QStringLiteral ( " nonmodeloutput" ) );
387
+ output2.insert ( QStringLiteral ( " expression" ), QStringLiteral ( " TRUE" ) );
388
+ output2.insert ( QStringLiteral ( " isModelOutput" ), false );
389
+
390
+ outputs.append ( output2 );
391
+
392
+ QVariantMap config2;
393
+ config2.insert ( QStringLiteral ( " outputs" ), outputs );
394
+
395
+ std::unique_ptr<QgsProcessingAlgorithm> filterAlg2 ( filterAlgTemplate->create ( config2 ) );
396
+
397
+ QCOMPARE ( filterAlg2->outputDefinitions ().size (), 2 );
398
+
399
+ auto outputDef2 = filterAlg2->outputDefinition ( QStringLiteral ( " OUTPUT_nonmodeloutput" ) );
400
+ QCOMPARE ( outputDef2->type (), QStringLiteral ( " outputVector" ) );
401
+
402
+ auto outputParamDef2 = filterAlg2->parameterDefinition ( " OUTPUT_nonmodeloutput" );
403
+ Q_ASSERT ( !outputParamDef2->flags ().testFlag ( QgsProcessingParameterDefinition::FlagIsModelOutput ) );
404
+ Q_ASSERT ( outputParamDef2->flags () & QgsProcessingParameterDefinition::FlagHidden );
405
+ }
406
+
356
407
357
408
QGSTEST_MAIN ( TestQgsProcessingAlgs )
358
409
#include " testqgsprocessingalgs.moc"
0 commit comments