Skip to content

Commit 27f1637

Browse files
committedFeb 4, 2016
Add provider test for getting feature count with subset string set,
fix memory provider invalid count when subset set
1 parent 9c91dd2 commit 27f1637

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed
 

‎src/providers/memory/qgsmemoryprovider.cpp

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,18 @@ QGis::WkbType QgsMemoryProvider::geometryType() const
289289

290290
long QgsMemoryProvider::featureCount() const
291291
{
292-
return mFeatures.count();
292+
if ( mSubsetString.isEmpty() )
293+
return mFeatures.count();
294+
295+
// subset string set, no alternative but testing each feature
296+
QgsFeatureIterator fit = QgsFeatureIterator( new QgsMemoryFeatureIterator( new QgsMemoryFeatureSource( this ), true, QgsFeatureRequest().setSubsetOfAttributes( QgsAttributeList() ) ) );
297+
int count = 0;
298+
QgsFeature feature;
299+
while ( fit.nextFeature( feature ) )
300+
{
301+
count++;
302+
}
303+
return count;
293304
}
294305

295306
const QgsFields & QgsMemoryProvider::fields() const

‎tests/src/python/providertestbase.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -363,6 +363,13 @@ def testUnique(self):
363363
def testFeatureCount(self):
364364
assert self.provider.featureCount() == 5, 'Got {}'.format(self.provider.featureCount())
365365

366+
#Add a subset string and test feature count
367+
subset = self.getSubsetString()
368+
self.provider.setSubsetString(subset)
369+
count = self.provider.featureCount()
370+
self.provider.setSubsetString(None)
371+
assert count == 3, 'Got {}'.format(count)
372+
366373
def testClosedIterators(self):
367374
""" Test behaviour of closed iterators """
368375

0 commit comments

Comments
 (0)
Please sign in to comment.