Skip to content

Commit

Permalink
Add some tests with cross join
Browse files Browse the repository at this point in the history
  • Loading branch information
pblottiere committed Nov 15, 2017
1 parent d0d88e4 commit f25ea5b
Showing 1 changed file with 40 additions and 0 deletions.
40 changes: 40 additions & 0 deletions tests/src/python/test_provider_virtual.py
Expand Up @@ -85,6 +85,46 @@ def tearDown(self):
"""Run after each test."""
pass

def test_filterfid_crossjoin(self):
l0 = QgsVectorLayer(os.path.join(self.testDataDir, "france_parts.shp"), "france_parts", "ogr", False)
self.assertTrue(l0.isValid())
QgsProject.instance().addMapLayer(l0)

l1 = QgsVectorLayer(os.path.join(self.testDataDir, "points.shp"), "points", "ogr", False)
self.assertTrue(l1.isValid())
QgsProject.instance().addMapLayer(l1)

# cross join
query = toPercent("SELECT * FROM france_parts,points")
vl = QgsVectorLayer("?query=%s" % query, "tt", "virtual")

self.assertEqual(vl.featureCount(), l0.featureCount() * l1.featureCount())

# test with FilterFid requests
f = next(vl.getFeatures(QgsFeatureRequest().setFilterFid(0)))
idx = f.fields().indexOf('Class')
self.assertEqual(f.id(), 0)
self.assertEqual(f.attributes()[idx], 'Jet')

f = next(vl.getFeatures(QgsFeatureRequest().setFilterFid(5)))
self.assertEqual(f.id(), 5)
self.assertEqual(f.attributes()[idx], 'Biplane')

# test with FilterFid requests
fit = vl.getFeatures(QgsFeatureRequest().setFilterFids([0, 3, 5]))

f = next(fit)
self.assertEqual(f.id(), 0)
self.assertEqual(f.attributes()[idx], 'Jet')

f = next(fit)
self.assertEqual(f.id(), 3)
self.assertEqual(f.attributes()[idx], 'Jet')

f = next(fit)
self.assertEqual(f.id(), 5)
self.assertEqual(f.attributes()[idx], 'Biplane')

def test_CsvNoGeometry(self):
l1 = QgsVectorLayer(QUrl.fromLocalFile(os.path.join(self.testDataDir, "delimitedtext/test.csv")).toString() + "?type=csv&geomType=none&subsetIndex=no&watchFile=no", "test", "delimitedtext", QgsVectorLayer.LayerOptions(False))
self.assertEqual(l1.isValid(), True)
Expand Down

0 comments on commit f25ea5b

Please sign in to comment.