Skip to content

Commit 1749e5d

Browse files
mhugentnyalldawson
authored andcommittedJun 17, 2018
Add unit test for geometry generator dxf export
1 parent bc41e0d commit 1749e5d

File tree

1 file changed

+56
-0
lines changed

1 file changed

+56
-0
lines changed
 

‎tests/src/core/testqgsdxfexport.cpp

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,16 @@
1717

1818
#include "qgsapplication.h"
1919
#include "qgsdxfexport.h"
20+
#include "qgsfillsymbollayer.h"
21+
#include "qgsgeometrygeneratorsymbollayer.h"
2022
#include "qgsproject.h"
2123
#include "qgsvectorlayer.h"
2224
#include "qgsfontutils.h"
2325
#include "qgsnullsymbolrenderer.h"
2426
#include "qgstextrenderer.h"
2527
#include "qgspallabeling.h"
2628
#include "qgslabelingengine.h"
29+
#include "qgssinglesymbolrenderer.h"
2730
#include "qgsvectorlayerlabeling.h"
2831
#include <QTemporaryFile>
2932

@@ -45,10 +48,12 @@ class TestQgsDxfExport : public QObject
4548
void testMTextNoSymbology(); //tests if label export works if layer has vector renderer type 'no symbols'
4649
void testMTextEscapeSpaces();
4750
void testText();
51+
void testGeometryGeneratorExport();
4852

4953
private:
5054
QgsVectorLayer *mPointLayer = nullptr;
5155
QgsVectorLayer *mPointLayerNoSymbols = nullptr;
56+
QgsVectorLayer *mPointLayerGeometryGenerator = nullptr;
5257
QgsVectorLayer *mLineLayer = nullptr;
5358
QgsVectorLayer *mPolygonLayer = nullptr;
5459

@@ -77,14 +82,36 @@ void TestQgsDxfExport::cleanupTestCase()
7782
void TestQgsDxfExport::init()
7883
{
7984
QString filename = QStringLiteral( TEST_DATA_DIR ) + "/points.shp";
85+
8086
mPointLayer = new QgsVectorLayer( filename, QStringLiteral( "points" ), QStringLiteral( "ogr" ) );
8187
QVERIFY( mPointLayer->isValid() );
8288
QgsProject::instance()->addMapLayer( mPointLayer );
89+
8390
mPointLayerNoSymbols = new QgsVectorLayer( filename, QStringLiteral( "points" ), QStringLiteral( "ogr" ) );
8491
QVERIFY( mPointLayerNoSymbols->isValid() );
8592
mPointLayerNoSymbols->setRenderer( new QgsNullSymbolRenderer() );
8693
mPointLayerNoSymbols->addExpressionField( QStringLiteral( "'A text with spaces'" ), QgsField( QStringLiteral( "Spacestest" ), QVariant::String ) );
8794
QgsProject::instance()->addMapLayer( mPointLayerNoSymbols );
95+
96+
//Point layer with geometry generator symbolizer
97+
mPointLayerGeometryGenerator = new QgsVectorLayer( filename, QStringLiteral( "points" ), QStringLiteral( "ogr" ) );
98+
QVERIFY( mPointLayerGeometryGenerator );
99+
100+
QgsStringMap ggProps;
101+
ggProps.insert( QStringLiteral( "SymbolType" ), QStringLiteral( "Fill" ) );
102+
ggProps.insert( QStringLiteral( "geometryModifier" ), QStringLiteral( "buffer( $geometry, 0.1 )" ) );
103+
QgsSymbolLayer *ggSymbolLayer = QgsGeometryGeneratorSymbolLayer::create( ggProps );
104+
QgsSymbolLayerList fillSymbolLayerList;
105+
fillSymbolLayerList << new QgsSimpleFillSymbolLayer();
106+
ggSymbolLayer->setSubSymbol( new QgsFillSymbol( fillSymbolLayerList ) );
107+
QgsSymbolLayerList slList;
108+
slList << ggSymbolLayer;
109+
QgsMarkerSymbol *markerSymbol = new QgsMarkerSymbol( slList );
110+
QgsSingleSymbolRenderer *sr = new QgsSingleSymbolRenderer( markerSymbol );
111+
mPointLayerGeometryGenerator->setRenderer( sr );
112+
113+
QgsProject::instance()->addMapLayer( mPointLayerGeometryGenerator );
114+
88115
filename = QStringLiteral( TEST_DATA_DIR ) + "/lines.shp";
89116
mLineLayer = new QgsVectorLayer( filename, QStringLiteral( "lines" ), QStringLiteral( "ogr" ) );
90117
QVERIFY( mLineLayer->isValid() );
@@ -98,6 +125,10 @@ void TestQgsDxfExport::init()
98125
void TestQgsDxfExport::cleanup()
99126
{
100127
QgsProject::instance()->removeMapLayer( mPointLayer->id() );
128+
QgsProject::instance()->removeMapLayer( mPointLayerNoSymbols->id() );
129+
QgsProject::instance()->removeMapLayer( mPointLayerGeometryGenerator->id() );
130+
QgsProject::instance()->removeMapLayer( mLineLayer->id() );
131+
QgsProject::instance()->removeMapLayer( mPolygonLayer->id() );
101132
mPointLayer = nullptr;
102133
}
103134

@@ -362,6 +393,31 @@ bool TestQgsDxfExport::testMtext( QgsVectorLayer *vlayer, const QString &tempFil
362393
" 0" ) );
363394
}
364395

396+
void TestQgsDxfExport::testGeometryGeneratorExport()
397+
{
398+
QgsDxfExport d;
399+
d.addLayers( QList< QgsDxfExport::DxfLayer >() << QgsDxfExport::DxfLayer( mPointLayerGeometryGenerator ) );
400+
401+
QgsMapSettings mapSettings;
402+
QSize size( 640, 480 );
403+
mapSettings.setOutputSize( size );
404+
mapSettings.setExtent( mPointLayerGeometryGenerator->extent() );
405+
mapSettings.setLayers( QList<QgsMapLayer *>() << mPointLayerGeometryGenerator );
406+
mapSettings.setOutputDpi( 96 );
407+
mapSettings.setDestinationCrs( mPointLayerGeometryGenerator->crs() );
408+
409+
d.setMapSettings( mapSettings );
410+
d.setSymbologyScale( 6000000 );
411+
d.setSymbologyExport( QgsDxfExport::FeatureSymbology );
412+
413+
QString file = getTempFileName( "geometry_generator_dxf" );
414+
QFile dxfFile( file );
415+
QCOMPARE( d.writeToFile( &dxfFile, QStringLiteral( "CP1252" ) ), 0 );
416+
dxfFile.close();
417+
418+
QVERIFY( fileContainsText( file, "HATCH" ) );
419+
}
420+
365421
bool TestQgsDxfExport::fileContainsText( const QString &path, const QString &text ) const
366422
{
367423
QStringList searchLines = text.split( '\n' );

0 commit comments

Comments
 (0)
Please sign in to comment.