|
@@ -6829,6 +6829,14 @@ void TestQgsProcessing::convertCompatible() |
|
|
// layer should be returned unchanged - underlying source is compatible |
|
|
QCOMPARE( out, layer->source() ); |
|
|
|
|
|
// path with layer suffix |
|
|
QString vectorWithLayer = testDataDir + "points.shp|layername=points"; |
|
|
QgsVectorLayer *layer2 = new QgsVectorLayer( vectorWithLayer, "vl" ); |
|
|
p.addMapLayer( layer2 ); |
|
|
out = QgsProcessingUtils::convertToCompatibleFormat( layer2, false, QStringLiteral( "test" ), QStringList() << "shp", QString( "shp" ), context, &feedback ); |
|
|
// layer should be returned unchanged - underlying source is compatible |
|
|
QCOMPARE( out, vector ); |
|
|
|
|
|
// don't include shp as compatible type |
|
|
out = QgsProcessingUtils::convertToCompatibleFormat( layer, false, QStringLiteral( "test" ), QStringList() << "tab", QString( "tab" ), context, &feedback ); |
|
|
QVERIFY( out != layer->source() ); |
|
@@ -6906,20 +6914,21 @@ void TestQgsProcessing::convertCompatible() |
|
|
std::unique_ptr< QgsVectorLayer > gpkgLayer = qgis::make_unique< QgsVectorLayer >( gpkgPath, "vl" ); |
|
|
QVERIFY( gpkgLayer->isValid() ); |
|
|
out = QgsProcessingUtils::convertToCompatibleFormat( gpkgLayer.get(), false, QStringLiteral( "test" ), QStringList() << "gpkg" << "shp", QString( "shp" ), context, &feedback ); |
|
|
// layer should be returned unchanged - underlying source is compatible |
|
|
QCOMPARE( out, gpkgLayer->source() ); |
|
|
// layer must be translated -- we do not know if external tool can handle picking the correct layer automatically |
|
|
QCOMPARE( out, testDataDir + QStringLiteral( "points_gpkg.gpkg" ) ); |
|
|
gpkgPath = testDataDir + "points_gpkg.gpkg|layername=points_small"; |
|
|
gpkgLayer = qgis::make_unique< QgsVectorLayer >( gpkgPath, "vl" ); |
|
|
QVERIFY( gpkgLayer->isValid() ); |
|
|
out = QgsProcessingUtils::convertToCompatibleFormat( gpkgLayer.get(), false, QStringLiteral( "test" ), QStringList() << "gpkg" << "shp", QString( "shp" ), context, &feedback ); |
|
|
QCOMPARE( out, gpkgLayer->source() ); |
|
|
QVERIFY( out.endsWith( ".shp" ) ); |
|
|
QVERIFY( out.startsWith( QgsProcessingUtils::tempFolder() ) ); |
|
|
|
|
|
// also test evaluating parameter to compatible format |
|
|
std::unique_ptr< QgsProcessingParameterDefinition > def( new QgsProcessingParameterFeatureSource( QStringLiteral( "source" ) ) ); |
|
|
QVariantMap params; |
|
|
params.insert( QStringLiteral( "source" ), QgsProcessingFeatureSourceDefinition( layer->id(), false ) ); |
|
|
out = QgsProcessingParameters::parameterAsCompatibleSourceLayerPath( def.get(), params, context, QStringList() << "shp", QString( "shp" ), &feedback ); |
|
|
QCOMPARE( out, layer->source() ); |
|
|
QCOMPARE( out, testDataDir + "points.shp" ); |
|
|
|
|
|
// incompatible format, will be converted |
|
|
out = QgsProcessingParameters::parameterAsCompatibleSourceLayerPath( def.get(), params, context, QStringList() << "tab", QString( "tab" ), &feedback ); |
|
@@ -6930,7 +6939,7 @@ void TestQgsProcessing::convertCompatible() |
|
|
// layer as input |
|
|
params.insert( QStringLiteral( "source" ), QVariant::fromValue( layer ) ); |
|
|
out = QgsProcessingParameters::parameterAsCompatibleSourceLayerPath( def.get(), params, context, QStringList() << "shp", QString( "shp" ), &feedback ); |
|
|
QCOMPARE( out, layer->source() ); |
|
|
QCOMPARE( out, testDataDir + "points.shp" ); |
|
|
|
|
|
// incompatible format, will be converted |
|
|
out = QgsProcessingParameters::parameterAsCompatibleSourceLayerPath( def.get(), params, context, QStringList() << "tab", QString( "tab" ), &feedback ); |
|
@@ -6949,12 +6958,12 @@ void TestQgsProcessing::convertCompatible() |
|
|
def.reset( new QgsProcessingParameterFeatureSource( QStringLiteral( "source" ), QString(), QList<int>(), QVariant::fromValue( layer ) ) ); |
|
|
params.remove( QStringLiteral( "source" ) ); |
|
|
out = QgsProcessingParameters::parameterAsCompatibleSourceLayerPath( def.get(), params, context, QStringList() << "shp", QString( "shp" ), &feedback ); |
|
|
QCOMPARE( out, layer->source() ); |
|
|
QCOMPARE( out, testDataDir + "points.shp" ); |
|
|
|
|
|
// output layer as input - e.g. from a previous model child |
|
|
params.insert( QStringLiteral( "source" ), QgsProcessingOutputLayerDefinition( layer->id() ) ); |
|
|
out = QgsProcessingParameters::parameterAsCompatibleSourceLayerPath( def.get(), params, context, QStringList() << "shp", QString( "shp" ), &feedback ); |
|
|
QCOMPARE( out, layer->source() ); |
|
|
QCOMPARE( out, testDataDir + "points.shp" ); |
|
|
} |
|
|
|
|
|
void TestQgsProcessing::create() |
|
|