@@ -45,6 +45,7 @@ class TestQgsLabelingEngine : public QObject
45
45
void testEncodeDecodePositionOrder ();
46
46
void testSubstitutions ();
47
47
void testCapitalization ();
48
+ void testParticipatingLayers ();
48
49
49
50
private:
50
51
QgsVectorLayer* vl;
@@ -534,6 +535,35 @@ void TestQgsLabelingEngine::testCapitalization()
534
535
QCOMPARE ( provider4->mLabels .at ( 0 )->labelText (), QString ( " A TeSt LABEL" ) );
535
536
}
536
537
538
+ void TestQgsLabelingEngine::testParticipatingLayers ()
539
+ {
540
+ QgsLabelingEngine engine;
541
+ QVERIFY ( engine.participatingLayerIds ().isEmpty () );
542
+
543
+ QgsPalLayerSettings settings1;
544
+ QgsVectorLayerLabelProvider* provider = new QgsVectorLayerLabelProvider ( vl, QStringLiteral ( " test" ), true , &settings1 );
545
+ engine.addProvider ( provider );
546
+ QCOMPARE ( engine.participatingLayerIds (), QStringList () << vl->id () );
547
+
548
+ QgsVectorLayer* layer2 = new QgsVectorLayer ( QStringLiteral ( " Point?field=col1:integer" ), QStringLiteral ( " layer2" ), QStringLiteral ( " memory" ) );
549
+ QgsPalLayerSettings settings2;
550
+ QgsVectorLayerLabelProvider* provider2 = new QgsVectorLayerLabelProvider ( layer2, QStringLiteral ( " test2" ), true , &settings2 );
551
+ engine.addProvider ( provider2 );
552
+ QCOMPARE ( engine.participatingLayerIds ().toSet (), QSet< QString >() << vl->id () << layer2->id () );
553
+
554
+ // add a rule-based labeling node
555
+ QgsRuleBasedLabeling::Rule* root = new QgsRuleBasedLabeling::Rule ( 0 );
556
+ QgsPalLayerSettings s1;
557
+ root->appendChild ( new QgsRuleBasedLabeling::Rule ( new QgsPalLayerSettings ( s1 ) ) );
558
+ QgsPalLayerSettings s2;
559
+ root->appendChild ( new QgsRuleBasedLabeling::Rule ( new QgsPalLayerSettings ( s2 ) ) );
560
+
561
+ QgsVectorLayer* layer3 = new QgsVectorLayer ( QStringLiteral ( " Point?field=col1:integer" ), QStringLiteral ( " layer3" ), QStringLiteral ( " memory" ) );
562
+ QgsRuleBasedLabelProvider* ruleProvider = new QgsRuleBasedLabelProvider ( QgsRuleBasedLabeling ( root ), layer3 );
563
+ engine.addProvider ( ruleProvider );
564
+ QCOMPARE ( engine.participatingLayerIds ().toSet (), QSet< QString >() << vl->id () << layer2->id () << layer3->id () );
565
+ }
566
+
537
567
bool TestQgsLabelingEngine::imageCheck ( const QString& testName, QImage &image, int mismatchCount )
538
568
{
539
569
// draw background
0 commit comments