Skip to content

Commit 5704f70

Browse files
committedMar 25, 2019
Add getDxf test
1 parent 240f1fe commit 5704f70

File tree

5 files changed

+145
-68
lines changed

5 files changed

+145
-68
lines changed
 

‎src/server/qgsserverinterfaceimpl.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
* \brief Interfaces exposed by QGIS Server and made available to plugins.
3333
* \since QGIS 2.8
3434
*/
35-
class QgsServerInterfaceImpl : public QgsServerInterface
35+
class SERVER_EXPORT QgsServerInterfaceImpl : public QgsServerInterface
3636
{
3737
public:
3838

‎src/server/services/wms/qgswmsrenderer.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ class QgsAccessControl;
4242
class QgsDxfExport;
4343
class QgsLayerTreeModel;
4444
class QgsLayerTree;
45+
class QgsServerInterface;
4546

4647
class QImage;
4748
class QPaintDevice;

‎tests/src/server/wms/CMakeLists.txt

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,15 @@ INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}
99
${CMAKE_SOURCE_DIR}/src/core/dxf
1010
${CMAKE_SOURCE_DIR}/src/core/symbology
1111
${CMAKE_SOURCE_DIR}/src/core/metadata
12+
${CMAKE_SOURCE_DIR}/src/core/layertree
13+
${CMAKE_SOURCE_DIR}/src/core/raster
14+
${CMAKE_SOURCE_DIR}/src/core/annotations
15+
${CMAKE_SOURCE_DIR}/src/core/layout
1216
${CMAKE_BINARY_DIR}/src/core
1317
${CMAKE_SOURCE_DIR}/src/test
1418
${CMAKE_SOURCE_DIR}/src/server
1519
${CMAKE_BINARY_DIR}/src/server
20+
${CMAKE_SOURCE_DIR}/src/server/services
1621
${CMAKE_SOURCE_DIR}/src/server/services/wms
1722
)
1823

@@ -25,7 +30,11 @@ INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}
2530
#No relinking and full RPATH for the install tree
2631
#See: http://www.cmake.org/Wiki/CMake_RPATH_handling#No_relinking_and_full_RPATH_for_the_install_tree
2732
SET(MODULE_WMS_SRCS
28-
${CMAKE_SOURCE_DIR}/src/server/services/wms/qgswmsparameters.cpp)
33+
${CMAKE_SOURCE_DIR}/src/server/services/wms/qgswmsrenderer.cpp
34+
${CMAKE_SOURCE_DIR}/src/server/services/wms/qgslayerrestorer.cpp
35+
${CMAKE_SOURCE_DIR}/src/server/services/wms/qgsmaprendererjobproxy.cpp
36+
${CMAKE_SOURCE_DIR}/src/server/services/wms/qgswmsparameters.cpp
37+
)
2938

3039
MACRO (ADD_QGIS_TEST TESTSRC)
3140
SET (TESTNAME ${TESTSRC})
@@ -45,15 +54,15 @@ MACRO (ADD_QGIS_TEST TESTSRC)
4554
${GDAL_LIBRARY}
4655
qgis_core
4756
qgis_server
48-
)
57+
)
4958
ADD_TEST(${TESTNAME} ${CMAKE_BINARY_DIR}/output/bin/${TESTNAME} -maxwarnings 10000)
5059
ENDMACRO (ADD_QGIS_TEST)
5160

5261
#############################################################
5362
# Tests:
5463

5564
SET(TESTS
56-
testqgswmsparameters.cpp
65+
test_qgsserver_wms_dxf.cpp
5766
)
5867

5968
FOREACH(TESTSRC ${TESTS})
Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
/***************************************************************************
2+
testqgswmsparameters.cpp
3+
--------------------------------------
4+
Date : 20 Mar 2019
5+
Copyright : (C) 2019 by Paul Blottiere
6+
Email : paul dot blottiere @ oslandia.com
7+
***************************************************************************
8+
* *
9+
* This program is free software; you can redistribute it and/or modify *
10+
* it under the terms of the GNU General Public License as published by *
11+
* the Free Software Foundation; either version 2 of the License, or *
12+
* (at your option) any later version. *
13+
* *
14+
***************************************************************************/
15+
16+
#include "qgstest.h"
17+
#include "qgsproject.h"
18+
#include "qgsvectorlayer.h"
19+
#include "qgsserverinterfaceimpl.h"
20+
#include "qgswmsparameters.h"
21+
#include "qgswmsrenderer.h"
22+
23+
/**
24+
* \ingroup UnitTests
25+
* This is a unit test for the WMS parameters parsing
26+
*/
27+
class TestQgsServerWmsDxf : public QObject
28+
{
29+
Q_OBJECT
30+
31+
private slots:
32+
void initTestCase();
33+
void cleanupTestCase();
34+
35+
void use_title_as_layername_true();
36+
void use_title_as_layername_false();
37+
};
38+
39+
void TestQgsServerWmsDxf::initTestCase()
40+
{
41+
QgsApplication::init();
42+
QgsApplication::initQgis();
43+
}
44+
45+
void TestQgsServerWmsDxf::cleanupTestCase()
46+
{
47+
QgsApplication::exitQgis();
48+
}
49+
50+
void TestQgsServerWmsDxf::use_title_as_layername_true()
51+
{
52+
const QString key = "FORMAT_OPTIONS";
53+
const QString value = "MODE:SYMBOLLAYERSYMBOLOGY;SCALE:250;USE_TITLE_AS_LAYERNAME:FALSE;LAYERATTRIBUTES:name;CODEC:my_codec_name";
54+
55+
QUrlQuery query;
56+
query.addQueryItem( key, value );
57+
query.addQueryItem( "LAYERS", "testlayer èé" );
58+
59+
QgsWms::QgsWmsParameters parameters( query );
60+
61+
QCOMPARE( int( parameters.dxfScale() ), 250 );
62+
QCOMPARE( parameters.dxfCodec(), QString( "my_codec_name" ) );
63+
QCOMPARE( parameters.dxfUseLayerTitleAsName(), false );
64+
QCOMPARE( parameters.dxfMode(), QgsDxfExport::SymbolLayerSymbology );
65+
QCOMPARE( int( parameters.dxfLayerAttributes().size() ), 1 );
66+
QCOMPARE( parameters.dxfLayerAttributes()[0], QString( "name" ) );
67+
68+
const QString filename = QString( "%1/qgis_server/test_project.qgs" ).arg( TEST_DATA_DIR );
69+
QgsProject project;
70+
project.read( filename );
71+
72+
QgsMapLayer *layer = project.layerStore()->mapLayersByName( "testlayer èé" )[0];
73+
QgsVectorLayer *vl = qobject_cast<QgsVectorLayer *>( layer );
74+
75+
QgsCapabilitiesCache cache;
76+
QgsServiceRegistry registry;
77+
QgsServerSettings settings;
78+
QgsServerInterfaceImpl interface( &cache, &registry, &settings );
79+
QgsWms::QgsRenderer renderer( &interface, &project, parameters );
80+
81+
QgsDxfExport exporter = renderer.getDxf();
82+
const QString name = exporter.layerName( vl );
83+
QCOMPARE( exporter.layerName( vl ), QString( "testlayer \u00E8\u00E9" ) );
84+
85+
const QgsFeature ft = vl->getFeature( 1 );
86+
QCOMPARE( exporter.layerName( vl->id(), ft ), QString( "two" ) );
87+
}
88+
89+
void TestQgsServerWmsDxf::use_title_as_layername_false()
90+
{
91+
const QString key = "FORMAT_OPTIONS";
92+
const QString value = "MODE:SYMBOLLAYERSYMBOLOGY;SCALE:250;USE_TITLE_AS_LAYERNAME:TRUE;LAYERATTRIBUTES:pif,paf,pouf;CODEC:my_codec_name";
93+
94+
QUrlQuery query;
95+
query.addQueryItem( key, value );
96+
query.addQueryItem( "LAYERS", "testlayer èé" );
97+
98+
QgsWms::QgsWmsParameters parameters( query );
99+
100+
QCOMPARE( int( parameters.dxfScale() ), 250 );
101+
QCOMPARE( parameters.dxfCodec(), QString( "my_codec_name" ) );
102+
QCOMPARE( parameters.dxfUseLayerTitleAsName(), true );
103+
QCOMPARE( parameters.dxfMode(), QgsDxfExport::SymbolLayerSymbology );
104+
QCOMPARE( int( parameters.dxfLayerAttributes().size() ), 3 );
105+
QCOMPARE( parameters.dxfLayerAttributes()[0], QString( "pif" ) );
106+
QCOMPARE( parameters.dxfLayerAttributes()[1], QString( "paf" ) );
107+
QCOMPARE( parameters.dxfLayerAttributes()[2], QString( "pouf" ) );
108+
109+
const QString filename = QString( "%1/qgis_server/test_project.qgs" ).arg( TEST_DATA_DIR );
110+
QgsProject project;
111+
project.read( filename );
112+
113+
QgsMapLayer *layer = project.layerStore()->mapLayersByName( "testlayer èé" )[0];
114+
QgsVectorLayer *vl = qobject_cast<QgsVectorLayer *>( layer );
115+
116+
QgsCapabilitiesCache cache;
117+
QgsServiceRegistry registry;
118+
QgsServerSettings settings;
119+
QgsServerInterfaceImpl interface( &cache, &registry, &settings );
120+
QgsWms::QgsRenderer renderer( &interface, &project, parameters );
121+
122+
QgsDxfExport exporter = renderer.getDxf();
123+
const QString name = exporter.layerName( vl );
124+
QCOMPARE( exporter.layerName( vl ), QString( "A test vector layer" ) );
125+
126+
const QgsFeature ft = vl->getFeature( 1 );
127+
QCOMPARE( exporter.layerName( vl->id(), ft ), QString( "A test vector layer" ) );
128+
}
129+
130+
QGSTEST_MAIN( TestQgsServerWmsDxf )
131+
#include "test_qgsserver_wms_dxf.moc"

‎tests/src/server/wms/testqgswmsparameters.cpp

Lines changed: 0 additions & 64 deletions
This file was deleted.

0 commit comments

Comments
 (0)
Please sign in to comment.