@@ -64,6 +64,7 @@ class TestQgsGML : public QObject
6464 void testLineStringGML3_LineStringSegment ();
6565 void testPolygonGML3 ();
6666 void testPolygonGML3_srsDimension_on_Polygon ();
67+ void testPolygonGML3_srsDimension_on_posList ();
6768 void testMultiLineStringGML3 ();
6869 void testMultiPolygonGML3 ();
6970 void testPointGML3_2 ();
@@ -660,6 +661,38 @@ void TestQgsGML::testPolygonGML3_srsDimension_on_Polygon()
660661 delete features[0 ].first ;
661662}
662663
664+ void TestQgsGML::testPolygonGML3_srsDimension_on_posList ()
665+ {
666+ QgsFields fields;
667+ QgsGmlStreamingParser gmlParser ( QStringLiteral ( " mytypename" ), QStringLiteral ( " mygeom" ), fields );
668+ QCOMPARE ( gmlParser.processData ( QByteArray ( " <myns:FeatureCollection "
669+ " xmlns:myns='http://myns' "
670+ " xmlns:gml='http://www.opengis.net/gml'>"
671+ " <gml:featureMember>"
672+ " <myns:mytypename fid='mytypename.1'>"
673+ " <myns:mygeom>"
674+ " <gml:Polygon srsName='EPSG:27700'>"
675+ " <gml:exterior>"
676+ " <gml:LinearRing>"
677+ " <gml:posList srsDimension='3'>0 0 -100 0 10 -100 10 10 -100 10 0 -100 0 0 -100</gml:posList>"
678+ " </gml:LinearRing>"
679+ " </gml:exterior>"
680+ " </gml:Polygon>"
681+ " </myns:mygeom>"
682+ " </myns:mytypename>"
683+ " </gml:featureMember>"
684+ " </myns:FeatureCollection>" ), true ), true );
685+ QCOMPARE ( gmlParser.wkbType (), QgsWkbTypes::Polygon );
686+ QVector<QgsGmlStreamingParser::QgsGmlFeaturePtrGmlIdPair> features = gmlParser.getAndStealReadyFeatures ();
687+ QCOMPARE ( features.size (), 1 );
688+ QVERIFY ( features[0 ].first ->hasGeometry () );
689+ QCOMPARE ( features[0 ].first ->geometry ().wkbType (), QgsWkbTypes::Polygon );
690+ QgsPolygonXY poly = features[0 ].first ->geometry ().asPolygon ();
691+ QCOMPARE ( poly.size (), 1 );
692+ QCOMPARE ( poly[0 ].size (), 5 );
693+ delete features[0 ].first ;
694+ }
695+
663696void TestQgsGML::testMultiLineStringGML3 ()
664697{
665698 QgsFields fields;
0 commit comments