@@ -34,6 +34,7 @@ class TestQgsProcessingAlgs: public QObject
3434 void init () {} // will be called before each testfunction is executed.
3535 void cleanup () {} // will be called after every testfunction.
3636 void packageAlg ();
37+ void renameLayerAlg ();
3738
3839 private:
3940
@@ -116,6 +117,58 @@ void TestQgsProcessingAlgs::packageAlg()
116117 QCOMPARE ( polygonLayer->featureCount (), mPolygonLayer ->featureCount () );
117118}
118119
120+ void TestQgsProcessingAlgs::renameLayerAlg ()
121+ {
122+ const QgsProcessingAlgorithm *package ( QgsApplication::processingRegistry ()->algorithmById ( QStringLiteral ( " native:renamelayer" ) ) );
123+ QVERIFY ( package );
124+
125+ std::unique_ptr< QgsProcessingContext > context = qgis::make_unique< QgsProcessingContext >();
126+ context->setProject ( QgsProject::instance () );
127+
128+ QgsVectorLayer *layer = new QgsVectorLayer ( QStringLiteral ( " Point?field=col1:real" ), QStringLiteral ( " layer" ), QStringLiteral ( " memory" ) );
129+ QVERIFY ( layer->isValid () );
130+ QgsProject::instance ()->addMapLayer ( layer );
131+
132+ QgsProcessingFeedback feedback;
133+
134+ QVariantMap parameters;
135+
136+ // bad layer
137+ parameters.insert ( QStringLiteral ( " INPUT" ), QStringLiteral ( " bad layer" ) );
138+ parameters.insert ( QStringLiteral ( " NAME" ), QStringLiteral ( " new name" ) );
139+ bool ok = false ;
140+ ( void )package->run ( parameters, *context, &feedback, &ok );
141+ QVERIFY ( !ok );
142+ QCOMPARE ( layer->name (), QStringLiteral ( " layer" ) );
143+
144+ // invalid name
145+ parameters.insert ( QStringLiteral ( " INPUT" ), QStringLiteral ( " layer" ) );
146+ parameters.insert ( QStringLiteral ( " NAME" ), QString () );
147+ ok = false ;
148+ ( void )package->run ( parameters, *context, &feedback, &ok );
149+ QVERIFY ( !ok );
150+ QCOMPARE ( layer->name (), QStringLiteral ( " layer" ) );
151+
152+ // good params
153+ parameters.insert ( QStringLiteral ( " INPUT" ), QVariant::fromValue ( layer ) );
154+ parameters.insert ( QStringLiteral ( " NAME" ), QStringLiteral ( " new name" ) );
155+ ok = false ;
156+ QVariantMap results = package->run ( parameters, *context, &feedback, &ok );
157+ QVERIFY ( ok );
158+ QCOMPARE ( layer->name (), QStringLiteral ( " new name" ) );
159+ QCOMPARE ( results.value ( " OUTPUT" ), QVariant::fromValue ( layer ) );
160+
161+ // with input layer name as parameter
162+ parameters.insert ( QStringLiteral ( " INPUT" ), QStringLiteral ( " new name" ) );
163+ parameters.insert ( QStringLiteral ( " NAME" ), QStringLiteral ( " new name2" ) );
164+ ok = false ;
165+ results = package->run ( parameters, *context, &feedback, &ok );
166+ QVERIFY ( ok );
167+ QCOMPARE ( layer->name (), QStringLiteral ( " new name2" ) );
168+ // result should use new name as value
169+ QCOMPARE ( results.value ( " OUTPUT" ).toString (), QStringLiteral ( " new name2" ) );
170+ }
171+
119172
120173QGSTEST_MAIN ( TestQgsProcessingAlgs )
121174#include " testqgsprocessingalgs.moc"
0 commit comments