mirror of
https://github.com/qgis/QGIS.git
synced 2025-03-01 00:46:20 -05:00
Add provider test to ensure that extent is correctly calculated
for layers with 1 point and also no features The first scenario should return an 'empty' rectangle with x/y min/max matching just the single point's coordinate, the second scenario must return a null rectangle (not an empty 0,0 rectangle!)
This commit is contained in:
parent
af6b4cc791
commit
1cfd6ee829
@ -184,6 +184,14 @@ class ProviderTestCase(FeatureSourceTestCase):
|
||||
"""Individual providers may need to override this depending on their subset string formats"""
|
||||
return '"cnt" > 100 and "cnt" < 400'
|
||||
|
||||
def getSubsetString3(self):
|
||||
"""Individual providers may need to override this depending on their subset string formats"""
|
||||
return '"name"=\'Apple\''
|
||||
|
||||
def getSubsetStringNoMatching(self):
|
||||
"""Individual providers may need to override this depending on their subset string formats"""
|
||||
return '"name"=\'AppleBearOrangePear\''
|
||||
|
||||
def testOrderBy(self):
|
||||
try:
|
||||
self.disableCompiler()
|
||||
@ -281,9 +289,30 @@ class ProviderTestCase(FeatureSourceTestCase):
|
||||
def testExtent(self):
|
||||
reference = QgsGeometry.fromRect(
|
||||
QgsRectangle(-71.123, 66.33, -65.32, 78.3))
|
||||
provider_extent = QgsGeometry.fromRect(self.source.extent())
|
||||
provider_extent = self.source.extent()
|
||||
self.assertAlmostEqual(provider_extent.xMinimum(), -71.123, 3)
|
||||
self.assertAlmostEqual(provider_extent.xMaximum(), -65.32, 3)
|
||||
self.assertAlmostEqual(provider_extent.yMinimum(), 66.33, 3)
|
||||
self.assertAlmostEqual(provider_extent.yMaximum(), 78.3, 3)
|
||||
|
||||
self.assertTrue(QgsGeometry.compare(provider_extent.asPolygon()[0], reference.asPolygon()[0], 0.00001))
|
||||
# with only one point
|
||||
subset = self.getSubsetString3()
|
||||
self.source.setSubsetString(subset)
|
||||
self.assertEqual(self.source.featureCount(), 1)
|
||||
provider_extent = self.source.extent()
|
||||
self.source.setSubsetString(None)
|
||||
self.assertAlmostEqual(provider_extent.xMinimum(), -68.2, 3)
|
||||
self.assertAlmostEqual(provider_extent.xMaximum(), -68.2, 3)
|
||||
self.assertAlmostEqual(provider_extent.yMinimum(), 70.8, 3)
|
||||
self.assertAlmostEqual(provider_extent.yMaximum(), 70.8, 3)
|
||||
|
||||
# with no points
|
||||
subset = self.getSubsetStringNoMatching()
|
||||
self.source.setSubsetString(subset)
|
||||
self.assertEqual(self.source.featureCount(), 0)
|
||||
provider_extent = self.source.extent()
|
||||
self.source.setSubsetString(None)
|
||||
self.assertTrue(provider_extent.isNull())
|
||||
|
||||
def testUnique(self):
|
||||
self.assertEqual(set(self.source.uniqueValues(1)), set([-200, 100, 200, 300, 400]))
|
||||
|
Loading…
x
Reference in New Issue
Block a user