@@ -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