def testOgrDriverList(self): # test with drivers in recommended order drivers = QgsVectorFileWriter.ogrDriverList( QgsVectorFileWriter.SortRecommended) self.assertEqual(drivers[0].longName, 'GeoPackage') self.assertEqual(drivers[0].driverName, 'GPKG') self.assertEqual(drivers[1].longName, 'ESRI Shapefile') self.assertEqual(drivers[1].driverName, 'ESRI Shapefile') self.assertTrue('ODS' in [f.driverName for f in drivers]) # ensure that XLSX comes before SQLite, because we should sort on longName, not driverName! ms_xlsx_index = next(i for i, v in enumerate(drivers) if v.driverName == 'XLSX') sqlite_index = next(i for i, v in enumerate(drivers) if v.driverName == 'SQLite') self.assertLess(ms_xlsx_index, sqlite_index) self.assertIn('[XLSX]', drivers[ms_xlsx_index].longName) # alphabetical sorting drivers2 = QgsVectorFileWriter.ogrDriverList( QgsVectorFileWriter.VectorFormatOptions()) self.assertTrue(drivers2[0].longName < drivers2[1].longName) self.assertCountEqual([d.driverName for d in drivers], [d.driverName for d in drivers2]) self.assertNotEqual(drivers2[0].driverName, 'GPKG') # skip non-spatial formats = QgsVectorFileWriter.ogrDriverList( QgsVectorFileWriter.SkipNonSpatialFormats) self.assertFalse('ODS' in [f.driverName for f in formats])
def testSupportedFiltersAndFormat(self): # test with formats in recommended order formats = QgsVectorFileWriter.supportedFiltersAndFormats( QgsVectorFileWriter.SortRecommended) self.assertEqual(formats[0].filterString, 'GeoPackage (*.gpkg *.GPKG)') self.assertEqual(formats[0].driverName, 'GPKG') self.assertEqual(formats[0].globs, ['*.gpkg']) self.assertEqual(formats[1].filterString, 'ESRI Shapefile (*.shp *.SHP)') self.assertEqual(formats[1].driverName, 'ESRI Shapefile') self.assertEqual(formats[1].globs, ['*.shp']) self.assertTrue('ODS' in [f.driverName for f in formats]) interlis_format = [f for f in formats if f.driverName == 'Interlis 2'][0] self.assertEqual(interlis_format.globs, ['*.xtf', '*.xml', '*.ili']) # alphabetical sorting formats2 = QgsVectorFileWriter.supportedFiltersAndFormats( QgsVectorFileWriter.VectorFormatOptions()) self.assertTrue(formats2[0].driverName < formats2[1].driverName) self.assertCountEqual([f.driverName for f in formats], [f.driverName for f in formats2]) self.assertNotEqual(formats2[0].driverName, 'GeoPackage') # skip non-spatial formats = QgsVectorFileWriter.supportedFiltersAndFormats( QgsVectorFileWriter.SkipNonSpatialFormats) self.assertFalse('ODS' in [f.driverName for f in formats])
def testSupportedFormatExtensions(self): formats = QgsVectorFileWriter.supportedFormatExtensions() self.assertTrue('gpkg' in formats) self.assertFalse('exe' in formats) self.assertEqual(formats[0], 'gpkg') self.assertEqual(formats[1], 'shp') self.assertTrue('ods' in formats) self.assertTrue('xtf' in formats) self.assertTrue('ili' in formats) for i in range(2, len(formats) - 1): self.assertLess(formats[i].lower(), formats[i + 1].lower()) # alphabetical sorting formats2 = QgsVectorFileWriter.supportedFormatExtensions( QgsVectorFileWriter.VectorFormatOptions()) self.assertTrue(formats2[0] < formats2[1]) self.assertCountEqual(formats, formats2) self.assertNotEqual(formats2[0], 'gpkg') for i in range(0, len(formats2) - 1): self.assertLess(formats2[i].lower(), formats2[i + 1].lower()) formats = QgsVectorFileWriter.supportedFormatExtensions( QgsVectorFileWriter.SkipNonSpatialFormats) self.assertFalse('ods' in formats)
def testFileFilterString(self): formats = QgsVectorFileWriter.fileFilterString() self.assertTrue('gpkg' in formats) self.assertTrue('shp' in formats) self.assertTrue(formats.index('gpkg') < formats.index('shp')) self.assertTrue('ods' in formats) # alphabetical sorting formats2 = QgsVectorFileWriter.fileFilterString(QgsVectorFileWriter.VectorFormatOptions()) self.assertNotEqual(formats.index('gpkg'), formats2.index('gpkg')) # hide non spatial formats = QgsVectorFileWriter.fileFilterString(QgsVectorFileWriter.SkipNonSpatialFormats) self.assertFalse('ods' in formats)
def testSupportedFormatExtensions(self): formats = QgsVectorFileWriter.supportedFormatExtensions() self.assertTrue('gpkg' in formats) self.assertFalse('exe' in formats) self.assertEqual(formats[0], 'gpkg') self.assertEqual(formats[1], 'shp') self.assertTrue('ods' in formats) # alphabetical sorting formats2 = QgsVectorFileWriter.supportedFormatExtensions(QgsVectorFileWriter.VectorFormatOptions()) self.assertTrue(formats2[0] < formats2[1]) self.assertCountEqual(formats, formats2) self.assertNotEqual(formats2[0], 'gpkg') formats = QgsVectorFileWriter.supportedFormatExtensions(QgsVectorFileWriter.SkipNonSpatialFormats) self.assertFalse('ods' in formats)
def testOgrDriverList(self): # test with drivers in recommended order drivers = QgsVectorFileWriter.ogrDriverList(QgsVectorFileWriter.SortRecommended) self.assertEqual(drivers[0].longName, 'GeoPackage') self.assertEqual(drivers[0].driverName, 'GPKG') self.assertEqual(drivers[1].longName, 'ESRI Shapefile') self.assertEqual(drivers[1].driverName, 'ESRI Shapefile') self.assertTrue('ODS' in [f.driverName for f in drivers]) # alphabetical sorting drivers2 = QgsVectorFileWriter.ogrDriverList(QgsVectorFileWriter.VectorFormatOptions()) self.assertTrue(drivers2[0].longName < drivers2[1].longName) self.assertCountEqual([d.driverName for d in drivers], [d.driverName for d in drivers2]) self.assertNotEqual(drivers2[0].driverName, 'GPKG') # skip non-spatial formats = QgsVectorFileWriter.ogrDriverList(QgsVectorFileWriter.SkipNonSpatialFormats) self.assertFalse('ODS' in [f.driverName for f in formats])
def testFileFilterString(self): formats = QgsVectorFileWriter.fileFilterString() self.assertTrue('gpkg' in formats) self.assertTrue('shp' in formats) self.assertLess(formats.index('gpkg'), formats.index('shp')) self.assertTrue('ods' in formats) parts = formats.split(';;') for i in range(2, len(parts) - 1): self.assertLess(parts[i].lower(), parts[i + 1].lower()) # alphabetical sorting formats2 = QgsVectorFileWriter.fileFilterString(QgsVectorFileWriter.VectorFormatOptions()) self.assertNotEqual(formats.index('gpkg'), formats2.index('gpkg')) parts = formats2.split(';;') for i in range(len(parts) - 1): self.assertLess(parts[i].lower(), parts[i + 1].lower()) # hide non spatial formats = QgsVectorFileWriter.fileFilterString(QgsVectorFileWriter.SkipNonSpatialFormats) self.assertFalse('ods' in formats)