Skip to content

Commit 1be9997

Browse files
committed
Fix some memory leaks in tests
1 parent 82cfc31 commit 1be9997

File tree

1 file changed

+49
-51
lines changed

1 file changed

+49
-51
lines changed

tests/src/core/testqgsprocessing.cpp

Lines changed: 49 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -804,11 +804,11 @@ void TestQgsProcessing::features()
804804
return ids;
805805
};
806806

807-
QgsProcessingParameterDefinition *def = new QgsProcessingParameterString( QStringLiteral( "layer" ) );
807+
std::unique_ptr< QgsProcessingParameterDefinition > def( new QgsProcessingParameterString( QStringLiteral( "layer" ) ) );
808808
QVariantMap params;
809809
params.insert( QStringLiteral( "layer" ), layer->id() );
810810

811-
std::unique_ptr< QgsFeatureSource > source( QgsProcessingParameters::parameterAsSource( def, params, context ) );
811+
std::unique_ptr< QgsFeatureSource > source( QgsProcessingParameters::parameterAsSource( def.get(), params, context ) );
812812

813813
// test with all features
814814
QgsFeatureIds ids = getIds( source->getFeatures() );
@@ -818,31 +818,31 @@ void TestQgsProcessing::features()
818818
// test with selected features
819819
params.insert( QStringLiteral( "layer" ), QVariant::fromValue( QgsProcessingFeatureSourceDefinition( layer->id(), true ) ) );
820820
layer->selectByIds( QgsFeatureIds() << 2 << 4 );
821-
source.reset( QgsProcessingParameters::parameterAsSource( def, params, context ) );
821+
source.reset( QgsProcessingParameters::parameterAsSource( def.get(), params, context ) );
822822
ids = getIds( source->getFeatures() );
823823
QCOMPARE( ids, QgsFeatureIds() << 2 << 4 );
824824
QCOMPARE( source->featureCount(), 2L );
825825

826826
// selection, but not using selected features
827827
params.insert( QStringLiteral( "layer" ), QVariant::fromValue( QgsProcessingFeatureSourceDefinition( layer->id(), false ) ) );
828828
layer->selectByIds( QgsFeatureIds() << 2 << 4 );
829-
source.reset( QgsProcessingParameters::parameterAsSource( def, params, context ) );
829+
source.reset( QgsProcessingParameters::parameterAsSource( def.get(), params, context ) );
830830
ids = getIds( source->getFeatures() );
831831
QCOMPARE( ids, QgsFeatureIds() << 1 << 2 << 3 << 4 << 5 );
832832
QCOMPARE( source->featureCount(), 5L );
833833

834834
// using selected features, but no selection
835835
params.insert( QStringLiteral( "layer" ), QVariant::fromValue( QgsProcessingFeatureSourceDefinition( layer->id(), true ) ) );
836836
layer->removeSelection();
837-
source.reset( QgsProcessingParameters::parameterAsSource( def, params, context ) );
837+
source.reset( QgsProcessingParameters::parameterAsSource( def.get(), params, context ) );
838838
ids = getIds( source->getFeatures() );
839839
QVERIFY( ids.isEmpty() );
840840
QCOMPARE( source->featureCount(), 0L );
841841

842842

843843
// test that feature request is honored
844844
params.insert( QStringLiteral( "layer" ), QVariant::fromValue( QgsProcessingFeatureSourceDefinition( layer->id(), false ) ) );
845-
source.reset( QgsProcessingParameters::parameterAsSource( def, params, context ) );
845+
source.reset( QgsProcessingParameters::parameterAsSource( def.get(), params, context ) );
846846
ids = getIds( source->getFeatures( QgsFeatureRequest().setFilterFids( QgsFeatureIds() << 1 << 3 << 5 ) ) );
847847
QCOMPARE( ids, QgsFeatureIds() << 1 << 3 << 5 );
848848

@@ -852,7 +852,7 @@ void TestQgsProcessing::features()
852852
//test that feature request is honored when using selections
853853
params.insert( QStringLiteral( "layer" ), QVariant::fromValue( QgsProcessingFeatureSourceDefinition( layer->id(), true ) ) );
854854
layer->selectByIds( QgsFeatureIds() << 2 << 4 );
855-
source.reset( QgsProcessingParameters::parameterAsSource( def, params, context ) );
855+
source.reset( QgsProcessingParameters::parameterAsSource( def.get(), params, context ) );
856856
ids = getIds( source->getFeatures( QgsFeatureRequest().setFlags( QgsFeatureRequest::NoGeometry ) ) );
857857
QCOMPARE( ids, QgsFeatureIds() << 2 << 4 );
858858

@@ -872,13 +872,13 @@ void TestQgsProcessing::features()
872872
p.addMapLayer( polyLayer );
873873
params.insert( QStringLiteral( "layer" ), polyLayer->id() );
874874

875-
source.reset( QgsProcessingParameters::parameterAsSource( def, params, context ) );
875+
source.reset( QgsProcessingParameters::parameterAsSource( def.get(), params, context ) );
876876
ids = getIds( source->getFeatures() );
877877
QVERIFY( encountered );
878878

879879
encountered = false;
880880
context.setInvalidGeometryCheck( QgsFeatureRequest::GeometryNoCheck );
881-
source.reset( QgsProcessingParameters::parameterAsSource( def, params, context ) );
881+
source.reset( QgsProcessingParameters::parameterAsSource( def.get(), params, context ) );
882882
ids = getIds( source->getFeatures() );
883883
QVERIFY( !encountered );
884884

@@ -901,11 +901,11 @@ void TestQgsProcessing::uniqueValues()
901901
p.addMapLayer( layer );
902902
context.setProject( &p );
903903

904-
QgsProcessingParameterDefinition *def = new QgsProcessingParameterString( QStringLiteral( "layer" ) );
904+
std::unique_ptr< QgsProcessingParameterDefinition > def( new QgsProcessingParameterString( QStringLiteral( "layer" ) ) );
905905
QVariantMap params;
906906
params.insert( QStringLiteral( "layer" ), layer->id() );
907907

908-
std::unique_ptr< QgsFeatureSource > source( QgsProcessingParameters::parameterAsSource( def, params, context ) );
908+
std::unique_ptr< QgsFeatureSource > source( QgsProcessingParameters::parameterAsSource( def.get(), params, context ) );
909909

910910
// some bad checks
911911
QVERIFY( source->uniqueValues( -1 ).isEmpty() );
@@ -926,7 +926,7 @@ void TestQgsProcessing::uniqueValues()
926926
//using only selected features
927927
layer->selectByIds( QgsFeatureIds() << 1 << 2 << 4 );
928928
// but not using selection yet...
929-
source.reset( QgsProcessingParameters::parameterAsSource( def, params, context ) );
929+
source.reset( QgsProcessingParameters::parameterAsSource( def.get(), params, context ) );
930930
vals = source->uniqueValues( 0 );
931931
QCOMPARE( vals.count(), 3 );
932932
QVERIFY( vals.contains( 1 ) );
@@ -940,7 +940,7 @@ void TestQgsProcessing::uniqueValues()
940940

941941
// selection and using selection
942942
params.insert( QStringLiteral( "layer" ), QVariant::fromValue( QgsProcessingFeatureSourceDefinition( layer->id(), true ) ) );
943-
source.reset( QgsProcessingParameters::parameterAsSource( def, params, context ) );
943+
source.reset( QgsProcessingParameters::parameterAsSource( def.get(), params, context ) );
944944
QVERIFY( source->uniqueValues( -1 ).isEmpty() );
945945
QVERIFY( source->uniqueValues( 10001 ).isEmpty() );
946946
vals = source->uniqueValues( 0 );
@@ -968,20 +968,20 @@ void TestQgsProcessing::createIndex()
968968
p.addMapLayer( layer );
969969
context.setProject( &p );
970970

971-
QgsProcessingParameterDefinition *def = new QgsProcessingParameterString( QStringLiteral( "layer" ) );
971+
std::unique_ptr< QgsProcessingParameterDefinition > def( new QgsProcessingParameterString( QStringLiteral( "layer" ) ) );
972972
QVariantMap params;
973973
params.insert( QStringLiteral( "layer" ), layer->id() );
974974

975975
// disable selected features check
976-
std::unique_ptr< QgsFeatureSource > source( QgsProcessingParameters::parameterAsSource( def, params, context ) );
976+
std::unique_ptr< QgsFeatureSource > source( QgsProcessingParameters::parameterAsSource( def.get(), params, context ) );
977977
QVERIFY( source.get() );
978978
QgsSpatialIndex index( *source.get() );
979979
QList<QgsFeatureId> ids = index.nearestNeighbor( QgsPointXY( 2.1, 2 ), 1 );
980980
QCOMPARE( ids, QList<QgsFeatureId>() << 2 );
981981

982982
// selected features check, but none selected
983983
params.insert( QStringLiteral( "layer" ), QVariant::fromValue( QgsProcessingFeatureSourceDefinition( layer->id(), true ) ) );
984-
source.reset( QgsProcessingParameters::parameterAsSource( def, params, context ) );
984+
source.reset( QgsProcessingParameters::parameterAsSource( def.get(), params, context ) );
985985
bool caught = false;
986986
try
987987
{
@@ -996,14 +996,14 @@ void TestQgsProcessing::createIndex()
996996

997997
// create selection
998998
layer->selectByIds( QgsFeatureIds() << 4 << 5 );
999-
source.reset( QgsProcessingParameters::parameterAsSource( def, params, context ) );
999+
source.reset( QgsProcessingParameters::parameterAsSource( def.get(), params, context ) );
10001000
index = QgsSpatialIndex( *source.get() );
10011001
ids = index.nearestNeighbor( QgsPointXY( 2.1, 2 ), 1 );
10021002
QCOMPARE( ids, QList<QgsFeatureId>() << 4 );
10031003

10041004
// selection but not using selection mode
10051005
params.insert( QStringLiteral( "layer" ), QVariant::fromValue( QgsProcessingFeatureSourceDefinition( layer->id(), false ) ) );
1006-
source.reset( QgsProcessingParameters::parameterAsSource( def, params, context ) );
1006+
source.reset( QgsProcessingParameters::parameterAsSource( def.get(), params, context ) );
10071007
index = QgsSpatialIndex( *source.get() );
10081008
ids = index.nearestNeighbor( QgsPointXY( 2.1, 2 ), 1 );
10091009
QCOMPARE( ids, QList<QgsFeatureId>() << 2 );
@@ -1121,7 +1121,7 @@ void TestQgsProcessing::parameters()
11211121
{
11221122
// test parameter utilities
11231123

1124-
QgsProcessingParameterDefinition *def = nullptr;
1124+
std::unique_ptr< QgsProcessingParameterDefinition > def;
11251125
QVariantMap params;
11261126
params.insert( QStringLiteral( "prop" ), QgsProperty::fromField( "a_field" ) );
11271127
params.insert( QStringLiteral( "string" ), QStringLiteral( "a string" ) );
@@ -1137,20 +1137,20 @@ void TestQgsProcessing::parameters()
11371137
QVERIFY( !QgsProcessingParameters::isDynamic( params, QStringLiteral( "bad" ) ) );
11381138

11391139
// parameterAsString
1140-
def = new QgsProcessingParameterString( QStringLiteral( "string" ), QStringLiteral( "desc" ) );
1141-
QCOMPARE( QgsProcessingParameters::parameterAsString( def, params, context ), QStringLiteral( "a string" ) );
1140+
def.reset( new QgsProcessingParameterString( QStringLiteral( "string" ), QStringLiteral( "desc" ) ) );
1141+
QCOMPARE( QgsProcessingParameters::parameterAsString( def.get(), params, context ), QStringLiteral( "a string" ) );
11421142
def->setName( QStringLiteral( "double" ) );
1143-
QCOMPARE( QgsProcessingParameters::parameterAsString( def, params, context ).left( 3 ), QStringLiteral( "5.2" ) );
1143+
QCOMPARE( QgsProcessingParameters::parameterAsString( def.get(), params, context ).left( 3 ), QStringLiteral( "5.2" ) );
11441144
def->setName( QStringLiteral( "int" ) );
1145-
QCOMPARE( QgsProcessingParameters::parameterAsString( def, params, context ), QStringLiteral( "15" ) );
1145+
QCOMPARE( QgsProcessingParameters::parameterAsString( def.get(), params, context ), QStringLiteral( "15" ) );
11461146
def->setName( QStringLiteral( "bool" ) );
1147-
QCOMPARE( QgsProcessingParameters::parameterAsString( def, params, context ), QStringLiteral( "true" ) );
1147+
QCOMPARE( QgsProcessingParameters::parameterAsString( def.get(), params, context ), QStringLiteral( "true" ) );
11481148
def->setName( QStringLiteral( "bad" ) );
1149-
QCOMPARE( QgsProcessingParameters::parameterAsString( def, params, context ), QString() );
1149+
QCOMPARE( QgsProcessingParameters::parameterAsString( def.get(), params, context ), QString() );
11501150

11511151
// string with dynamic property (feature not set)
11521152
def->setName( QStringLiteral( "prop" ) );
1153-
QCOMPARE( QgsProcessingParameters::parameterAsString( def, params, context ), QString() );
1153+
QCOMPARE( QgsProcessingParameters::parameterAsString( def.get(), params, context ), QString() );
11541154

11551155
// correctly setup feature
11561156
QgsFields fields;
@@ -1160,56 +1160,56 @@ void TestQgsProcessing::parameters()
11601160
context.expressionContext().setFeature( f );
11611161
context.expressionContext().setFields( fields );
11621162
def->setName( QStringLiteral( "prop" ) );
1163-
QCOMPARE( QgsProcessingParameters::parameterAsString( def, params, context ), QStringLiteral( "field value" ) );
1163+
QCOMPARE( QgsProcessingParameters::parameterAsString( def.get(), params, context ), QStringLiteral( "field value" ) );
11641164

11651165
// as double
11661166
def->setName( QStringLiteral( "double" ) );
1167-
QCOMPARE( QgsProcessingParameters::parameterAsDouble( def, params, context ), 5.2 );
1167+
QCOMPARE( QgsProcessingParameters::parameterAsDouble( def.get(), params, context ), 5.2 );
11681168
def->setName( QStringLiteral( "int" ) );
1169-
QCOMPARE( QgsProcessingParameters::parameterAsDouble( def, params, context ), 15.0 );
1169+
QCOMPARE( QgsProcessingParameters::parameterAsDouble( def.get(), params, context ), 15.0 );
11701170
f.setAttribute( 0, QStringLiteral( "6.2" ) );
11711171
context.expressionContext().setFeature( f );
11721172
def->setName( QStringLiteral( "prop" ) );
1173-
QCOMPARE( QgsProcessingParameters::parameterAsDouble( def, params, context ), 6.2 );
1173+
QCOMPARE( QgsProcessingParameters::parameterAsDouble( def.get(), params, context ), 6.2 );
11741174

11751175
// as int
11761176
def->setName( QStringLiteral( "double" ) );
1177-
QCOMPARE( QgsProcessingParameters::parameterAsInt( def, params, context ), 5 );
1177+
QCOMPARE( QgsProcessingParameters::parameterAsInt( def.get(), params, context ), 5 );
11781178
def->setName( QStringLiteral( "int" ) );
1179-
QCOMPARE( QgsProcessingParameters::parameterAsInt( def, params, context ), 15 );
1179+
QCOMPARE( QgsProcessingParameters::parameterAsInt( def.get(), params, context ), 15 );
11801180
def->setName( QStringLiteral( "prop" ) );
1181-
QCOMPARE( QgsProcessingParameters::parameterAsInt( def, params, context ), 6 );
1181+
QCOMPARE( QgsProcessingParameters::parameterAsInt( def.get(), params, context ), 6 );
11821182

11831183
// as bool
11841184
def->setName( QStringLiteral( "double" ) );
1185-
QCOMPARE( QgsProcessingParameters::parameterAsBool( def, params, context ), true );
1185+
QCOMPARE( QgsProcessingParameters::parameterAsBool( def.get(), params, context ), true );
11861186
def->setName( QStringLiteral( "int" ) );
1187-
QCOMPARE( QgsProcessingParameters::parameterAsBool( def, params, context ), true );
1187+
QCOMPARE( QgsProcessingParameters::parameterAsBool( def.get(), params, context ), true );
11881188
def->setName( QStringLiteral( "bool" ) );
1189-
QCOMPARE( QgsProcessingParameters::parameterAsBool( def, params, context ), true );
1189+
QCOMPARE( QgsProcessingParameters::parameterAsBool( def.get(), params, context ), true );
11901190
def->setName( QStringLiteral( "prop" ) );
1191-
QCOMPARE( QgsProcessingParameters::parameterAsBool( def, params, context ), true );
1191+
QCOMPARE( QgsProcessingParameters::parameterAsBool( def.get(), params, context ), true );
11921192
f.setAttribute( 0, false );
11931193
context.expressionContext().setFeature( f );
11941194
def->setName( QStringLiteral( "prop" ) );
1195-
QCOMPARE( QgsProcessingParameters::parameterAsBool( def, params, context ), false );
1195+
QCOMPARE( QgsProcessingParameters::parameterAsBool( def.get(), params, context ), false );
11961196

11971197
// as layer
11981198
def->setName( QStringLiteral( "double" ) );
1199-
QVERIFY( !QgsProcessingParameters::parameterAsLayer( def, params, context ) );
1199+
QVERIFY( !QgsProcessingParameters::parameterAsLayer( def.get(), params, context ) );
12001200
def->setName( QStringLiteral( "int" ) );
1201-
QVERIFY( !QgsProcessingParameters::parameterAsLayer( def, params, context ) );
1201+
QVERIFY( !QgsProcessingParameters::parameterAsLayer( def.get(), params, context ) );
12021202
def->setName( QStringLiteral( "bool" ) );
1203-
QVERIFY( !QgsProcessingParameters::parameterAsLayer( def, params, context ) );
1203+
QVERIFY( !QgsProcessingParameters::parameterAsLayer( def.get(), params, context ) );
12041204
def->setName( QStringLiteral( "prop" ) );
1205-
QVERIFY( !QgsProcessingParameters::parameterAsLayer( def, params, context ) );
1205+
QVERIFY( !QgsProcessingParameters::parameterAsLayer( def.get(), params, context ) );
12061206

12071207
QVERIFY( context.temporaryLayerStore()->mapLayers().isEmpty() );
12081208
QString testDataDir = QStringLiteral( TEST_DATA_DIR ) + '/'; //defined in CmakeLists.txt
12091209
f.setAttribute( 0, testDataDir + "/raster/band1_float32_noct_epsg4326.tif" );
12101210
context.expressionContext().setFeature( f );
12111211
def->setName( QStringLiteral( "prop" ) );
1212-
QVERIFY( QgsProcessingParameters::parameterAsLayer( def, params, context ) );
1212+
QVERIFY( QgsProcessingParameters::parameterAsLayer( def.get(), params, context ) );
12131213
// make sure layer was loaded
12141214
QVERIFY( !context.temporaryLayerStore()->mapLayers().isEmpty() );
12151215

@@ -1221,7 +1221,7 @@ void TestQgsProcessing::parameters()
12211221
def->setName( QStringLiteral( "string" ) );
12221222
params.insert( QStringLiteral( "string" ), QStringLiteral( "memory:mem" ) );
12231223
std::unique_ptr< QgsFeatureSink > sink;
1224-
sink.reset( QgsProcessingParameters::parameterAsSink( def, params, fields, wkbType, crs, context, destId ) );
1224+
sink.reset( QgsProcessingParameters::parameterAsSink( def.get(), params, fields, wkbType, crs, context, destId ) );
12251225
QVERIFY( sink.get() );
12261226
QgsVectorLayer *layer = qobject_cast< QgsVectorLayer *>( QgsProcessingUtils::mapLayerFromString( destId, context ) );
12271227
QVERIFY( layer );
@@ -1235,7 +1235,7 @@ void TestQgsProcessing::parameters()
12351235
params.insert( QStringLiteral( "prop" ), QgsProperty::fromExpression( "'memory:mem2'" ) );
12361236
def->setName( QStringLiteral( "prop" ) );
12371237
crs = QgsCoordinateReferenceSystem( QStringLiteral( "epsg:3113" ) );
1238-
sink.reset( QgsProcessingParameters::parameterAsSink( def, params, fields, wkbType, crs, context, destId ) );
1238+
sink.reset( QgsProcessingParameters::parameterAsSink( def.get(), params, fields, wkbType, crs, context, destId ) );
12391239
QVERIFY( sink.get() );
12401240
layer = qobject_cast< QgsVectorLayer *>( QgsProcessingUtils::mapLayerFromString( destId, context ) );
12411241
QVERIFY( layer );
@@ -1253,7 +1253,7 @@ void TestQgsProcessing::parameters()
12531253
params.insert( QStringLiteral( "fs" ), QVariant::fromValue( fs ) );
12541254
def->setName( QStringLiteral( "fs" ) );
12551255
crs = QgsCoordinateReferenceSystem( QStringLiteral( "epsg:28356" ) );
1256-
sink.reset( QgsProcessingParameters::parameterAsSink( def, params, fields, wkbType, crs, context, destId ) );
1256+
sink.reset( QgsProcessingParameters::parameterAsSink( def.get(), params, fields, wkbType, crs, context, destId ) );
12571257
QVERIFY( sink.get() );
12581258
QgsVectorFileWriter *writer = dynamic_cast< QgsVectorFileWriter *>( sink.get() );
12591259
QVERIFY( writer );
@@ -1267,8 +1267,6 @@ void TestQgsProcessing::parameters()
12671267
QCOMPARE( context.layersToLoadOnCompletion().size(), 1 );
12681268
QCOMPARE( context.layersToLoadOnCompletion().keys().at( 0 ), destId );
12691269
QCOMPARE( context.layersToLoadOnCompletion().values().at( 0 ).name, QStringLiteral( "desc" ) );
1270-
1271-
delete def;
12721270
}
12731271

12741272
void TestQgsProcessing::algorithmParameters()
@@ -2720,10 +2718,10 @@ void TestQgsProcessing::processingFeatureSource()
27202718
context.setProject( &p );
27212719

27222720
// first using static string definition
2723-
QgsProcessingParameterDefinition *def = new QgsProcessingParameterString( QStringLiteral( "layer" ) );
2721+
std::unique_ptr< QgsProcessingParameterDefinition > def( new QgsProcessingParameterString( QStringLiteral( "layer" ) ) );
27242722
QVariantMap params;
27252723
params.insert( QStringLiteral( "layer" ), QgsProcessingFeatureSourceDefinition( layer->id(), false ) );
2726-
std::unique_ptr< QgsFeatureSource > source( QgsProcessingParameters::parameterAsSource( def, params, context ) );
2724+
std::unique_ptr< QgsFeatureSource > source( QgsProcessingParameters::parameterAsSource( def.get(), params, context ) );
27272725
// can't directly match it to layer, so instead just get the feature and test that it matches what we expect
27282726
QgsFeature f2;
27292727
QVERIFY( source.get() );
@@ -2732,7 +2730,7 @@ void TestQgsProcessing::processingFeatureSource()
27322730

27332731
// next using property based definition
27342732
params.insert( QStringLiteral( "layer" ), QgsProcessingFeatureSourceDefinition( QgsProperty::fromExpression( QStringLiteral( "trim('%1' + ' ')" ).arg( layer->id() ) ), false ) );
2735-
source.reset( QgsProcessingParameters::parameterAsSource( def, params, context ) );
2733+
source.reset( QgsProcessingParameters::parameterAsSource( def.get(), params, context ) );
27362734
// can't directly match it to layer, so instead just get the feature and test that it matches what we expect
27372735
QVERIFY( source.get() );
27382736
QVERIFY( source->getFeatures().nextFeature( f2 ) );

0 commit comments

Comments
 (0)