@@ -291,28 +291,35 @@ void TestStyle::testTags()
291
291
QCOMPARE ( id, mStyle ->tagId ( " purple" ) );
292
292
QCOMPARE ( QStringLiteral ( " purple" ), mStyle ->tag ( id ) );
293
293
294
+ // Cyrillic
295
+ id = mStyle ->addTag ( QStringLiteral ( " МЕТЕОР" ) );
296
+ QCOMPARE ( id, mStyle ->tagId ( " МЕТЕОР" ) );
297
+
294
298
QStringList tags = mStyle ->tags ();
295
- QCOMPARE ( tags.count (), 5 );
299
+ QCOMPARE ( tags.count (), 6 );
296
300
QVERIFY ( tags.contains ( " red" ) );
297
301
QVERIFY ( tags.contains ( " starry" ) );
298
302
QVERIFY ( tags.contains ( " circle" ) );
299
303
QVERIFY ( tags.contains ( " blue" ) );
300
304
QVERIFY ( tags.contains ( " purple" ) );
305
+ QVERIFY ( tags.contains ( " МЕТЕОР" ) );
301
306
302
307
// remove tag
303
308
mStyle ->remove ( QgsStyle::TagEntity, mStyle ->tagId ( QStringLiteral ( " purple" ) ) );
304
309
mStyle ->remove ( QgsStyle::TagEntity, -999 ); // bad id
305
310
tags = mStyle ->tags ();
306
- QCOMPARE ( tags.count (), 4 );
311
+ QCOMPARE ( tags.count (), 5 );
307
312
QVERIFY ( !tags.contains ( " purple" ) );
308
313
309
314
// add some symbols
310
315
std::unique_ptr< QgsMarkerSymbol> sym1 ( QgsMarkerSymbol::createSimple ( QgsStringMap () ) );
311
316
std::unique_ptr< QgsMarkerSymbol> sym2 ( QgsMarkerSymbol::createSimple ( QgsStringMap () ) );
312
317
std::unique_ptr< QgsMarkerSymbol> sym3 ( QgsMarkerSymbol::createSimple ( QgsStringMap () ) );
318
+ std::unique_ptr< QgsMarkerSymbol> sym4 ( QgsMarkerSymbol::createSimple ( QgsStringMap () ) );
313
319
QVERIFY ( mStyle ->saveSymbol ( " symbol1" , sym1.get (), false , QStringList () << " red" << " starry" ) );
314
320
mStyle ->addSymbol ( QStringLiteral ( " blue starry" ), sym2.release (), true );
315
321
mStyle ->addSymbol ( QStringLiteral ( " red circle" ), sym3.release (), true );
322
+ mStyle ->addSymbol ( QStringLiteral ( " МЕТЕОР" ), sym4.release (), true );
316
323
317
324
// tag them
318
325
QVERIFY ( mStyle ->tagSymbol ( QgsStyle::SymbolEntity, " blue starry" , QStringList () << " blue" << " starry" ) );
@@ -324,6 +331,13 @@ void TestStyle::testTags()
324
331
tags = mStyle ->tags ();
325
332
QVERIFY ( tags.contains ( " round" ) );
326
333
334
+ // Cyrillic
335
+ // Add twice (see issue #18281)
336
+ QVERIFY ( mStyle ->tagSymbol ( QgsStyle::SymbolEntity, " МЕТЕОР" , QStringList () << " МЕТЕОР" ) );
337
+ tags = mStyle ->tags ();
338
+ QVERIFY ( tags.contains ( " МЕТЕОР" ) );
339
+ QCOMPARE ( tags.filter ( " МЕТЕОР" ).count (), 1 );
340
+
327
341
// check that tags have been applied
328
342
tags = mStyle ->tagsOfSymbol ( QgsStyle::SymbolEntity, QStringLiteral ( " blue starry" ) );
329
343
QCOMPARE ( tags.count (), 2 );
@@ -339,8 +353,13 @@ void TestStyle::testTags()
339
353
QVERIFY ( tags.contains ( " red" ) );
340
354
QVERIFY ( tags.contains ( " starry" ) );
341
355
356
+ tags = mStyle ->tagsOfSymbol ( QgsStyle::SymbolEntity, QStringLiteral ( " МЕТЕОР" ) );
357
+ QCOMPARE ( tags.count (), 1 );
358
+ QVERIFY ( tags.contains ( " МЕТЕОР" ) );
359
+
342
360
// check that a given tag is attached to a symbol
343
361
QVERIFY ( mStyle ->symbolHasTag ( QgsStyle::SymbolEntity, QStringLiteral ( " blue starry" ), QStringLiteral ( " blue" ) ) );
362
+ QVERIFY ( mStyle ->symbolHasTag ( QgsStyle::SymbolEntity, QStringLiteral ( " МЕТЕОР" ), QStringLiteral ( " МЕТЕОР" ) ) );
344
363
345
364
// check that a given tag is not attached to a symbol
346
365
QCOMPARE ( false , mStyle ->symbolHasTag ( QgsStyle::SymbolEntity, QStringLiteral ( " blue starry" ), QStringLiteral ( " notblue" ) ) );
@@ -368,7 +387,9 @@ void TestStyle::testTags()
368
387
QVERIFY ( symbols.contains ( " red circle" ) );
369
388
symbols = mStyle ->symbolsWithTag ( QgsStyle::SymbolEntity, mStyle ->tagId ( QStringLiteral ( " round" ) ) );
370
389
QCOMPARE ( symbols.count (), 1 );
371
- QVERIFY ( symbols.contains ( " red circle" ) );
390
+ symbols = mStyle ->symbolsWithTag ( QgsStyle::SymbolEntity, mStyle ->tagId ( QStringLiteral ( " МЕТЕОР" ) ) );
391
+ QCOMPARE ( symbols.count (), 1 );
392
+ QVERIFY ( symbols.contains ( " МЕТЕОР" ) );
372
393
symbols = mStyle ->symbolsWithTag ( QgsStyle::SymbolEntity, mStyle ->tagId ( QStringLiteral ( " blue" ) ) );
373
394
QVERIFY ( symbols.isEmpty () );
374
395
symbols = mStyle ->symbolsWithTag ( QgsStyle::SymbolEntity, mStyle ->tagId ( QStringLiteral ( " no tag" ) ) );
@@ -392,6 +413,10 @@ void TestStyle::testTags()
392
413
symbols = mStyle ->findSymbols ( QgsStyle::SymbolEntity, QStringLiteral ( " round" ) );
393
414
QCOMPARE ( symbols.count (), 1 );
394
415
QVERIFY ( symbols.contains ( " red circle" ) );
416
+ symbols = mStyle ->findSymbols ( QgsStyle::SymbolEntity, QStringLiteral ( " МЕТЕОР" ) );
417
+ QCOMPARE ( symbols.count (), 1 );
418
+ QVERIFY ( symbols.contains ( " МЕТЕОР" ) );
419
+
395
420
}
396
421
397
422
QGSTEST_MAIN ( TestStyle )
0 commit comments