@@ -76,6 +76,7 @@ class TestQgsGML : public QObject
76
76
void testThroughOGRGeometry ();
77
77
void testThroughOGRGeometry_urn_EPSG_4326 ();
78
78
void testAccents ();
79
+ void testSameTypeameAsGeomName ();
79
80
};
80
81
81
82
const QString data1 ( " <myns:FeatureCollection "
@@ -1149,6 +1150,51 @@ void TestQgsGML::testAccents()
1149
1150
QCOMPARE ( multi[0 ][0 ].size (), 5 );
1150
1151
delete features[0 ].first ;
1151
1152
}
1153
+ void TestQgsGML::testSameTypeameAsGeomName ()
1154
+ {
1155
+ QgsFields fields;
1156
+ QgsGmlStreamingParser gmlParser ( " foo" , " foo" , fields );
1157
+ QCOMPARE ( gmlParser.processData ( QByteArray ( " <myns:FeatureCollection "
1158
+ " xmlns:myns='http://myns' "
1159
+ " xmlns:gml='http://www.opengis.net/gml'>"
1160
+ " <gml:featureMember>"
1161
+ " <myns:foo fid='foo.1'>"
1162
+ " <myns:foo>"
1163
+ " <gml:MultiSurface srsName='EPSG:27700'>"
1164
+ " <gml:surfaceMember>"
1165
+ " <gml:Polygon srsName='EPSG:27700'>"
1166
+ " <gml:exterior>"
1167
+ " <gml:LinearRing>"
1168
+ " <gml:posList>0 0 0 10 10 10 10 0 0 0</gml:posList>"
1169
+ " </gml:LinearRing>"
1170
+ " </gml:exterior>"
1171
+ " </gml:Polygon>"
1172
+ " </gml:surfaceMember>"
1173
+ " <gml:surfaceMember>"
1174
+ " <gml:Polygon srsName='EPSG:27700'>"
1175
+ " <gml:exterior>"
1176
+ " <gml:LinearRing>"
1177
+ " <gml:posList>0 0 0 10 10 10 10 0 0 0</gml:posList>"
1178
+ " </gml:LinearRing>"
1179
+ " </gml:exterior>"
1180
+ " </gml:Polygon>"
1181
+ " </gml:surfaceMember>"
1182
+ " </gml:MultiSurface>"
1183
+ " </myns:foo>"
1184
+ " </myns:foo>"
1185
+ " </gml:featureMember>"
1186
+ " </myns:FeatureCollection>" ), true ), true );
1187
+ QCOMPARE ( gmlParser.wkbType (), QGis::WKBMultiPolygon );
1188
+ QVector<QgsGmlStreamingParser::QgsGmlFeaturePtrGmlIdPair> features = gmlParser.getAndStealReadyFeatures ();
1189
+ QCOMPARE ( features.size (), 1 );
1190
+ QVERIFY ( features[0 ].first ->constGeometry () != nullptr );
1191
+ QCOMPARE ( features[0 ].first ->constGeometry ()->wkbType (), QGis::WKBMultiPolygon );
1192
+ QgsMultiPolygon multi = features[0 ].first ->constGeometry ()->asMultiPolygon ();
1193
+ QCOMPARE ( multi.size (), 2 );
1194
+ QCOMPARE ( multi[0 ].size (), 1 );
1195
+ QCOMPARE ( multi[0 ][0 ].size (), 5 );
1196
+ delete features[0 ].first ;
1197
+ }
1152
1198
1153
1199
QTEST_MAIN ( TestQgsGML )
1154
1200
#include " testqgsgml.moc"
0 commit comments