Skip to content

Commit 052819f

Browse files
committed
Add unit test for WFS 2.0
1 parent 6a18821 commit 052819f

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed

tests/src/core/testqgsogcutils.cpp

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,9 @@ class TestQgsOgcUtils : public QObject
6161
void testExpressionFromOgcFilter();
6262
void testExpressionFromOgcFilter_data();
6363

64+
void testExpressionFromOgcFilterWFS20();
65+
void testExpressionFromOgcFilterWFS20_data();
66+
6467
void testExpressionToOgcFilter();
6568
void testExpressionToOgcFilter_data();
6669

@@ -264,6 +267,63 @@ void TestQgsOgcUtils::testGeometryToGML()
264267
doc.removeChild( elemLine );
265268
}
266269

270+
void TestQgsOgcUtils::testExpressionFromOgcFilterWFS20_data()
271+
{
272+
QTest::addColumn<QString>( "xmlText" );
273+
QTest::addColumn<QString>( "dumpText" );
274+
275+
QTest::newRow( "=" ) << QString(
276+
"<fes:Filter xmlns:fes=\"http://www.opengis.net/fes/2.0\">"
277+
"<fes:PropertyIsEqualTo>"
278+
"<fes:ValueReference>NAME</fes:ValueReference>"
279+
"<fes:Literal>New York</fes:Literal>"
280+
"</fes:PropertyIsEqualTo></fes:Filter>" )
281+
<< QStringLiteral( "NAME = 'New York'" );
282+
283+
QTest::newRow( "bbox coordinates" ) << QString(
284+
"<Filter>"
285+
"<BBOX><ValueReference>Name>NAME</ValueReference><gml:Box srsName='foo'>"
286+
"<gml:coordinates>135.2239,34.4879 135.8578,34.8471</gml:coordinates></gml:Box></BBOX>"
287+
"</Filter>" )
288+
<< QStringLiteral( "intersects_bbox($geometry, geom_from_gml('<Box srsName=\"foo\"><coordinates>135.2239,34.4879 135.8578,34.8471</coordinates></Box>'))" );
289+
290+
QTest::newRow( "bbox corner" )
291+
<< QString(
292+
"<fes:Filter>"
293+
"<fes:BBOX>"
294+
"<fes:ValueReference>my_geometry_name</fes:ValueReference>"
295+
"<gml:Envelope>"
296+
"<gml:lowerCorner>49 2</gml:lowerCorner>"
297+
"<gml:upperCorner>50 3</gml:upperCorner>"
298+
"</gml:Envelope>"
299+
"</fes:BBOX>"
300+
"</fes:Filter>" )
301+
<< QStringLiteral( "intersects_bbox($geometry, geom_from_gml('<Envelope><lowerCorner>49 2</lowerCorner><upperCorner>50 3</upperCorner></Envelope>'))" );
302+
}
303+
304+
void TestQgsOgcUtils::testExpressionFromOgcFilterWFS20()
305+
{
306+
QFETCH( QString, xmlText );
307+
QFETCH( QString, dumpText );
308+
309+
QDomDocument doc;
310+
QVERIFY( doc.setContent( xmlText, true ) );
311+
QDomElement rootElem = doc.documentElement();
312+
313+
QgsVectorLayer layer( "Point?crs=epsg:4326&field=LITERAL:string(20)", "temp", "memory" );
314+
315+
std::shared_ptr<QgsExpression> expr( QgsOgcUtils::expressionFromOgcFilter( rootElem, QgsOgcUtils::FILTER_FES_2_0, &layer ) );
316+
QVERIFY( expr.get() );
317+
318+
qDebug( "OGC XML : %s", xmlText.toAscii().data() );
319+
qDebug( "EXPR-DUMP: %s", expr->expression().toAscii().data() );
320+
321+
if ( expr->hasParserError() )
322+
qDebug( "ERROR: %s ", expr->parserErrorString().toAscii().data() );
323+
QVERIFY( !expr->hasParserError() );
324+
325+
QCOMPARE( dumpText, expr->expression() );
326+
}
267327

268328
void TestQgsOgcUtils::testExpressionFromOgcFilter_data()
269329
{

0 commit comments

Comments
 (0)